diff --git a/checkin_notes b/checkin_notes index d6787bd096..a5fdaa6cf9 100644 --- a/checkin_notes +++ b/checkin_notes @@ -6031,3 +6031,13 @@ Charlie 23 June 2009 clientscr/ res/ ProgThruProc_ss_logo.png + +David 26 June 2009 + - client: when suspending a GPU job, + always remove it from memory, even if it hasn't checkpointed. + Otherwise we'll typically run another GPU job right away, + and it will bomb out or revert to CPU mode because it + can't allocate video RAM + + client/ + app.cpp diff --git a/client/app.cpp b/client/app.cpp index 557282a590..d014fc8d4a 100644 --- a/client/app.cpp +++ b/client/app.cpp @@ -98,25 +98,21 @@ int ACTIVE_TASK::preempt(int preempt_type) { remove = false; break; case REMOVE_MAYBE_USER: - if (checkpoint_elapsed_time == 0) { - remove = false; - break; - } - if (result->uses_coprocs() && checkpoint_wall_time) { - remove = true; - break; - } - remove = !gstate.global_prefs.leave_apps_in_memory; - break; case REMOVE_MAYBE_SCHED: - if (checkpoint_elapsed_time == 0) { - remove = false; - break; - } + // GPU jobs: always remove from mem, since it's tying up GPU RAM + // if (result->uses_coprocs()) { remove = true; break; } + // if it's never checkpointed, leave in mem + // + if (checkpoint_elapsed_time == 0) { + remove = false; + break; + } + // otherwise obey user prefs + // remove = !gstate.global_prefs.leave_apps_in_memory; break; case REMOVE_ALWAYS: