svn path=/trunk/boinc/; revision=19545

This commit is contained in:
David Anderson 2009-11-12 00:22:33 +00:00
parent 273df71bd9
commit d10aae0647
1 changed files with 28 additions and 24 deletions

View File

@ -22,6 +22,10 @@
// Small jobs are noisy. // Small jobs are noisy.
#define COBBLESTONE_SCALE 100/86400e9 #define COBBLESTONE_SCALE 100/86400e9
// FLOPS to cobblestones // FLOPS to cobblestones
#define PRINT_AV_PERIOD 100
#define SCALE_AV_PERIOD 20
#define MIN_HOST_SCALE_SAMPLES 5
// don't use host scaling unless have this many samples for host
#define RSC_TYPE_CPU -1 #define RSC_TYPE_CPU -1
#define RSC_TYPE_CUDA -2 #define RSC_TYPE_CUDA -2
@ -46,21 +50,15 @@ inline const char* rsc_type_name(int t) {
} }
} }
struct HOST_APP {
int host_id;
int app_id;
AVERAGE vnpfc;
};
struct HOST_APP_VERSION { struct HOST_APP_VERSION {
int host_id; int host_id;
int app_version_id; int app_version_id; // -1 means anon platform
AVERAGE vnpfc;
AVERAGE et; AVERAGE et;
}; };
vector<APP_VERSION> app_versions; vector<APP_VERSION> app_versions;
vector<APP> apps; vector<APP> apps;
vector<HOST_APP> host_apps;
vector<HOST_APP_VERSION> host_app_versions; vector<HOST_APP_VERSION> host_app_versions;
vector<PLATFORM> platforms; vector<PLATFORM> platforms;
int windows_platformid; int windows_platformid;
@ -142,20 +140,20 @@ APP& lookup_app(int id) {
printf("missing app%d\n", id); printf("missing app%d\n", id);
} }
HOST_APP& lookup_host_app(int hostid, int appid) { HOST_APP_VERSION& lookup_host_app_version(int hostid, int avid) {
unsigned int i; unsigned int i;
for (i=0; i<host_apps.size(); i++) { for (i=0; i<host_app_versions.size(); i++) {
HOST_APP& ha = host_apps[i]; HOST_APP_VERSION& hav = host_app_versions[i];
if (ha.host_id != hostid) continue; if (hav.host_id != hostid) continue;
if (ha.app_id != appid) continue; if (hav.app_version_id != avid) continue;
return ha; return hav;
} }
HOST_APP h; HOST_APP_VERSION h;
h.host_id = hostid; h.host_id = hostid;
h.app_id = appid; h.app_version_id = avid;
h.vnpfc.clear(); h.vnpfc.clear();
host_apps.push_back(h); host_app_versions.push_back(h);
return host_apps.back(); return host_app_versions.back();
} }
void print_average(AVERAGE& a) { void print_average(AVERAGE& a) {
@ -362,10 +360,14 @@ int main(int argc, char** argv) {
// host normalization // host normalization
HOST_APP& host_app = lookup_host_app(r.hostid, app.id); HOST_APP_VERSION& hav = lookup_host_app_version(
r.hostid, avp?avp->id:-1
);
double host_scale = 1; double host_scale = 1;
if (host_app.vnpfc.n > 5) {
host_scale = app.vnpfc.get_mean()/host_app.vnpfc.get_mean(); // only apply it if have at MIN_HOST_SCALE_SAMPLES
if (hav.vnpfc.n >= MIN_HOST_SCALE_SAMPLES) {
host_scale = app.vnpfc.get_mean()/hav.vnpfc.get_mean();
// if (host_scale > 1) host_scale = 1; // if (host_scale > 1) host_scale = 1;
printf(" host scale: %f\n", host_scale); printf(" host scale: %f\n", host_scale);
} }
@ -375,7 +377,7 @@ int main(int argc, char** argv) {
double new_claimed_credit = claimed_flops * COBBLESTONE_SCALE; double new_claimed_credit = claimed_flops * COBBLESTONE_SCALE;
app.vnpfc.update(vnpfc); app.vnpfc.update(vnpfc);
host_app.vnpfc.update(vnpfc); hav.vnpfc.update(vnpfc);
printf(" new credit %.2f old credit %.2f\n", printf(" new credit %.2f old credit %.2f\n",
new_claimed_credit, r.claimed_credit new_claimed_credit, r.claimed_credit
@ -389,10 +391,10 @@ int main(int argc, char** argv) {
n++; n++;
if (n%20 ==0) { if (n%SCALE_AV_PERIOD ==0) {
update_av_scales(); update_av_scales();
} }
if (n%100 ==0) { if (n%PRINT_AV_PERIOD ==0) {
print_avs(); print_avs();
} }
} }
@ -405,4 +407,6 @@ int main(int argc, char** argv) {
printf("Average old credit: %f\n", total_old_credit/nstats); printf("Average old credit: %f\n", total_old_credit/nstats);
printf("Average new credit: %f\n", total_new_credit/nstats); printf("Average new credit: %f\n", total_new_credit/nstats);
//printf("Variance claimed to grant old credit: %f\n", sqrt(variance_old/nstats));
//printf("Variance claimed to grant old credit: %f\n", sqrt(variance_old/nstats));
} }