From 84701e36248d10afcf185ed69ad2708dd240f2b7 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Thu, 4 Feb 2010 17:34:55 +0000 Subject: [PATCH] - scheduler: add example code for SETI@home's situation where app has both GPU and CPU versions, but for certain jobs (VLAR WUs in this case) the GPU version performs poorly and shouldn't be used. The fix is a kludge - it will result in these jobs not being sent to the host at all, rather than being sent with the CPU app. The current architecture makes it difficult to do otherwise. One possible fix would be to create a separate app for VLAR jobs, with only CPU app versions. svn path=/trunk/boinc/; revision=20419 --- checkin_notes | 16 ++++++++++++++++ sched/sched_customize.cpp | 11 +++++++++++ 2 files changed, 27 insertions(+) diff --git a/checkin_notes b/checkin_notes index 58cfc74685..117887cc54 100644 --- a/checkin_notes +++ b/checkin_notes @@ -892,3 +892,19 @@ David 4 Feb 2010 user.inc user/ home.php + +David 4 Feb 2010 + - scheduler: add example code for SETI@home's situation + where app has both GPU and CPU versions, + but for certain jobs (VLAR WUs in this case) + the GPU version performs poorly and shouldn't be used. + + The fix is a kludge - it will result in these jobs + not being sent to the host at all, + rather than being sent with the CPU app. + The current architecture makes it difficult to do otherwise. + One possible fix would be to create a separate app + for VLAR jobs, with only CPU app versions. + + sched/ + sched_customize.cpp diff --git a/sched/sched_customize.cpp b/sched/sched_customize.cpp index 4df1fb2cc0..968669aa03 100644 --- a/sched/sched_customize.cpp +++ b/sched/sched_customize.cpp @@ -54,6 +54,17 @@ #include "sched_customize.h" bool wu_is_infeasible_custom(WORKUNIT& wu, APP& app, BEST_APP_VERSION& bav) { +#if 0 + // example: if WU name contains "_v1", don't use CUDA app + // Note: this is slightly suboptimal. + // If the host is able to accept both GPU and CPU jobs, + // we'll skip this job rather than send it for the CPU. + // Fixing this would require a big architectural change. + // + if (strstr(wu.name, "_v1") && bav.host_usage.ncudas) { + return true; + } +#endif #if 0 // example: for CUDA app, wu.batch is the minimum number of processors. // Don't send if #procs is less than this.