diff --git a/checkin_notes b/checkin_notes
index 7613c17861..9d903fbcad 100644
--- a/checkin_notes
+++ b/checkin_notes
@@ -2967,3 +2967,15 @@ Charlie 19 Apr 2010
mac_installer/
PostInstall.cpp
+
+David 20 Apr 2010
+ - client: show "waiting for GPU memory" in task status
+
+ client/
+ client_types.cpp
+ cpu_sched.cpp
+ clientgui/
+ ViewWork.cpp
+ lib/
+ gui_rpc_client.h
+ gui_rpc_client_ops.cpp
diff --git a/client/client_types.cpp b/client/client_types.cpp
index 303b81d671..b759c4c71b 100644
--- a/client/client_types.cpp
+++ b/client/client_types.cpp
@@ -1757,6 +1757,7 @@ int RESULT::write_gui(MIOFILE& out) {
if (project->suspended_via_gui) out.printf(" \n");
if (edf_scheduled) out.printf(" \n");
if (coproc_missing) out.printf(" \n");
+ if (schedule_backoff > gstate.now) out.printf(" \n");
ACTIVE_TASK* atp = gstate.active_tasks.lookup_result(this);
if (atp) {
atp->write_gui(out);
diff --git a/client/cpu_sched.cpp b/client/cpu_sched.cpp
index 05a96c6ecf..2ca331e67b 100644
--- a/client/cpu_sched.cpp
+++ b/client/cpu_sched.cpp
@@ -1114,9 +1114,14 @@ static inline bool get_integer_assignment(
if (nfree < usage) {
if (log_flags.coproc_debug) {
msg_printf(rp->project, MSG_INFO,
- "[coproc_debug] Insufficient %s for %s; %d < %d",
+ "[coproc_debug] Insufficient %s for %s; need %d, available %d",
cp->type, rp->name, nfree, (int)usage
);
+ if (defer_sched) {
+ msg_printf(rp->project, MSG_INFO,
+ "[coproc_debug] some instances lack available memory"
+ );
+ }
}
return false;
}
diff --git a/clientgui/ViewWork.cpp b/clientgui/ViewWork.cpp
index 5a3ce0a5b8..d68d82efca 100644
--- a/clientgui/ViewWork.cpp
+++ b/clientgui/ViewWork.cpp
@@ -1185,6 +1185,9 @@ void CViewWork::GetDocStatus(wxInt32 item, wxString& strBuffer) const {
} else {
strBuffer += _("Ready to start");
}
+ if (result->gpu_mem_wait) {
+ strBuffer += _(" (waiting for GPU memory)");
+ }
break;
case RESULT_COMPUTE_ERROR:
strBuffer += _("Computation error");
diff --git a/lib/gui_rpc_client.h b/lib/gui_rpc_client.h
index 791fcd1f06..f563b64c54 100644
--- a/lib/gui_rpc_client.h
+++ b/lib/gui_rpc_client.h
@@ -244,6 +244,7 @@ public:
bool suspended_via_gui;
bool project_suspended_via_gui;
bool coproc_missing;
+ bool gpu_mem_wait;
// the following defined if active
bool active_task;
diff --git a/lib/gui_rpc_client_ops.cpp b/lib/gui_rpc_client_ops.cpp
index be3f3b7e1e..47f45e003d 100644
--- a/lib/gui_rpc_client_ops.cpp
+++ b/lib/gui_rpc_client_ops.cpp
@@ -458,6 +458,7 @@ int RESULT::parse(MIOFILE& in) {
if (parse_bool(buf, "suspended_via_gui", suspended_via_gui)) continue;
if (parse_bool(buf, "project_suspended_via_gui", project_suspended_via_gui)) continue;
if (parse_bool(buf, "coproc_missing", coproc_missing)) continue;
+ if (parse_bool(buf, "gpu_mem_wait", gpu_mem_wait)) continue;
if (match_tag(buf, "")) {
active_task = true;
continue;
@@ -520,6 +521,7 @@ void RESULT::clear() {
suspended_via_gui = false;
project_suspended_via_gui = false;
coproc_missing = false;
+ gpu_mem_wait = false;
active_task = false;
active_task_state = 0;