From 3cb983f1c560e16217a4f94edb91f2b6f4be3f9f Mon Sep 17 00:00:00 2001 From: David Anderson Date: Fri, 24 Apr 2009 10:56:35 +0000 Subject: [PATCH] - client: tweak to 4/21 checkin. After finding the "most capable" GPU, ignore FLOPS in deciding what GPUs are equivalent to it. This opens up the possibility that the client will get jobs that it won't be able to finish in time. But it still avoids getting jobs that will crash. svn path=/trunk/boinc/; revision=17875 --- checkin_notes | 11 +++++++++++ lib/coproc.cpp | 7 ++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/checkin_notes b/checkin_notes index 4f9827822d..3ef9fae45f 100644 --- a/checkin_notes +++ b/checkin_notes @@ -4164,3 +4164,14 @@ David 24 Apr 2009 work_fetch.cpp html/ops/ team_import.php + +David 24 Apr 2009 + - client: tweak to 4/21 checkin. + After finding the "most capable" GPU, + ignore FLOPS in deciding what GPUs are equivalent to it. + This opens up the possibility that the client will get jobs + that it won't be able to finish in time. + But it still avoids getting jobs that will crash. + + lib/ + coproc.cpp diff --git a/lib/coproc.cpp b/lib/coproc.cpp index c509dd6a1c..afe10d6634 100644 --- a/lib/coproc.cpp +++ b/lib/coproc.cpp @@ -144,7 +144,7 @@ COPROC* COPROCS::lookup(const char* type) { // return 1/-1/0 if device 1 is more/less/same capable than device 2 // -int cuda_compare(COPROC_CUDA& c1, COPROC_CUDA& c2) { +int cuda_compare(COPROC_CUDA& c1, COPROC_CUDA& c2, bool ignore_flops) { if (c1.prop.major > c2.prop.major) return 1; if (c1.prop.major < c2.prop.major) return -1; if (c1.prop.minor > c2.prop.minor) return 1; @@ -153,6 +153,7 @@ int cuda_compare(COPROC_CUDA& c1, COPROC_CUDA& c2) { if (c1.drvVersion < c2.drvVersion) return -1; if (c1.prop.totalGlobalMem > c2.prop.totalGlobalMem) return 1; if (c1.prop.totalGlobalMem < c2.prop.totalGlobalMem) return -1; + if (ignore_flops) return 0; double s1 = c1.flops_estimate(); double s2 = c1.flops_estimate(); if (s1 > s2) return 1; @@ -269,7 +270,7 @@ void COPROC_CUDA::get(COPROCS& coprocs, vector& strings) { for (i=0; i 0) { + } else if (cuda_compare(gpus[i], best, false) > 0) { best = gpus[i]; } } @@ -281,7 +282,7 @@ void COPROC_CUDA::get(COPROCS& coprocs, vector& strings) { for (i=0; i