- scheduler: in cuda_check(), ati_check() and opencl_check()

(in sched_customize.cpp)
    the flops_scale argument is intended to express the
    GPU efficiency (actual/peak).
    Pass appropriate values.


svn path=/trunk/boinc/; revision=24405
This commit is contained in:
David Anderson 2011-10-16 06:04:13 +00:00
parent 0a89805a70
commit 836e8aacf7
5 changed files with 49 additions and 15 deletions

View File

@ -7302,3 +7302,19 @@ David 14 Oct 2011
- client: bug fix for the above
client/
work_fetch.cpp
David 14 Oct 2011
- scheduler: in cuda_check(), ati_check() and opencl_check()
(in sched_customize.cpp)
the flops_scale argument is intended to express the
GPU efficiency (actual/peak).
Pass appropriate values.
sched/
sched_customize.cpp
sched_version.cpp
html/
ops/
index.php
inc/
db_ops.inc

View File

@ -474,6 +474,11 @@ function result_error_mask_str($x){
case -228: return "ERR_CHILD_FAILED";
case -229: return "ERR_SYMLINK";
case -230: return "ERR_DB_CONN_LOST";
case -231: return "ERR_CRYPTO";
case -232: return "ERR_ABORTED_ON_EXIT";
case -233: return "ERR_UNSTARTED_LATE";
case -234: return "ERR_MISSING_COPROC";
case -235: return "ERR_PROC_PARSE";
default: return "Unknown error number";
}
}

View File

@ -166,7 +166,7 @@ echo "
</table>
";
// Application Result Summaries:
// Result Summaries:
$show_deprecated = get_str("show_deprecated", true);
$show_only = array("all"); // Add all appids you want to display, or "all"

View File

@ -176,14 +176,13 @@ static bool ati_check(COPROC_ATI& c, HOST_USAGE& hu,
coproc_perf(
g_request->host.p_fpops,
hu.natis*c.peak_flops,
flops_scale * hu.natis*c.peak_flops,
cpu_frac,
hu.projected_flops,
hu.avg_ncpus
);
hu.peak_flops = hu.natis*c.peak_flops + hu.avg_ncpus*g_request->host.p_fpops;
hu.max_ncpus = hu.avg_ncpus;
hu.projected_flops *= flops_scale;
return true;
}
@ -201,8 +200,9 @@ static inline bool app_plan_ati(
1000000,
true,
ATI_MIN_RAM,
1, .01,
1
1,
.01,
.20
)) {
return false;
}
@ -214,7 +214,7 @@ static inline bool app_plan_ati(
true,
ATI_MIN_RAM,
1, .01,
1.01
.21
)) {
return false;
}
@ -226,7 +226,7 @@ static inline bool app_plan_ati(
false,
ATI_MIN_RAM,
1, .01,
1.02
.22
)) {
return false;
}
@ -238,7 +238,7 @@ static inline bool app_plan_ati(
false,
ATI_MIN_RAM,
1, .01,
1.03
.23
)) {
return false;
}
@ -305,14 +305,13 @@ static bool cuda_check(COPROC_NVIDIA& c, HOST_USAGE& hu,
coproc_perf(
g_request->host.p_fpops,
hu.ncudas*c.peak_flops,
flops_scale * hu.ncudas*c.peak_flops,
cpu_frac,
hu.projected_flops,
hu.avg_ncpus
);
hu.peak_flops = hu.ncudas*c.peak_flops + hu.avg_ncpus*g_request->host.p_fpops;
hu.max_ncpus = hu.avg_ncpus;
hu.projected_flops *= flops_scale;
return true;
}
@ -341,7 +340,9 @@ static inline bool app_plan_cuda(
200, 0,
CUDA3_MIN_CUDA_VERSION, CUDA3_MIN_DRIVER_VERSION,
384*MEGA,
1, .01, 1.02
1,
.01,
.22
)) {
return false;
}
@ -351,7 +352,9 @@ static inline bool app_plan_cuda(
200, // change to zero if app is compiled to byte code
CUDA23_MIN_CUDA_VERSION, CUDA23_MIN_DRIVER_VERSION,
384*MEGA,
1, .01, 1.01
1,
.01,
.21
)) {
return false;
}
@ -361,7 +364,9 @@ static inline bool app_plan_cuda(
200, // change to zero if app is compiled to byte code
0, CUDA_MIN_DRIVER_VERSION,
254*MEGA,
1, .01, 1
1,
.01,
.20
)) {
return false;
}

View File

@ -275,11 +275,15 @@ void estimate_flops_anon_platform() {
}
// if projected_flops is missing, make a wild guess
// Note: 6.12+ clients supply a project FLOPS,
// even if the user didn't
//
if (cav.host_usage.projected_flops == 0) {
cav.host_usage.projected_flops = g_reply->host.p_fpops;
}
// If data is available, estimate FLOPS based on average elapsed time
//
DB_HOST_APP_VERSION* havp = gavid_to_havp(
generalized_app_version_id(
cav.host_usage.resource_type(), cav.app->id
@ -289,8 +293,6 @@ void estimate_flops_anon_platform() {
&& (havp->et.n > MIN_HOST_SAMPLES)
&& (havp->et.get_avg() > 0)
) {
// estimate FLOPS based on average elapsed time
//
double new_flops = 1./havp->et.get_avg();
// cap this at ET_RATIO_LIMIT*projected,
@ -653,6 +655,12 @@ BEST_APP_VERSION* get_app_version(
}
if (strlen(av.plan_class)) {
if (!app_plan(*g_request, av.plan_class, host_usage)) {
if (config.debug_version_select) {
log_messages.printf(MSG_NORMAL,
"[version] [AV#%d] app_plan() returned false\n",
av.id
);
}
continue;
}
if (!g_request->client_cap_plan_class) {