diff --git a/checkin_notes b/checkin_notes index 80db6e067a..5b3ef768f1 100644 --- a/checkin_notes +++ b/checkin_notes @@ -7832,3 +7832,11 @@ David 04 Nov 2010 html/ various + +David 04 Nov 2010 + - GUI RPC: parse GPU info, FLOPS from APP_VERSION records + (client already sends this info) + + lib/ + gui_rpc_client_ops.cpp + gui_rpc_client.h diff --git a/doc/projects.inc b/doc/projects.inc index c420129e4a..f40f807970 100644 --- a/doc/projects.inc +++ b/doc/projects.inc @@ -117,6 +117,13 @@ $biomed = array( $earth = array( "Earth Sciences", array( + array( + "Quake Catcher Network", + "http://qcn.stanford.edu/", + "Stanford University", + "Seismology", + "The Quake-Catcher Network is a collaborative initiative for developing the world's largest, low-cost strong-motion seismic network by utilizing sensors in and attached to internet-connected computers." + ), array( "Virtual Prairie", "http://vcsc.cs.uh.edu/virtual-prairie/", diff --git a/lib/gui_rpc_client.h b/lib/gui_rpc_client.h index bec6fad72f..c5bfaf5646 100644 --- a/lib/gui_rpc_client.h +++ b/lib/gui_rpc_client.h @@ -194,7 +194,13 @@ class APP_VERSION { public: char app_name[256]; int version_num; + char platform[64]; char plan_class[64]; + double avg_ncpus; + double ncudas; + double natis; + double gpu_ram; + double flops; APP* app; PROJECT* project; @@ -202,6 +208,7 @@ public: ~APP_VERSION(); int parse(MIOFILE&); + int parse_coproc(MIOFILE&); void print(); void clear(); }; diff --git a/lib/gui_rpc_client_ops.cpp b/lib/gui_rpc_client_ops.cpp index 764d4dd72d..6d57485038 100644 --- a/lib/gui_rpc_client_ops.cpp +++ b/lib/gui_rpc_client_ops.cpp @@ -369,23 +369,46 @@ APP_VERSION::~APP_VERSION() { clear(); } +int APP_VERSION::parse_coproc(MIOFILE& in) { + char buf[256], type_buf[256]; + double count = 0; + + while (in.fgets(buf, 256)) { + if (match_tag(buf, "")) { + if (!strcmp(type_buf, "CUDA")) { + ncudas = count; + } else if (!strcmp(type_buf, "ATI")) { + natis = count; + } + return 0; + } + if (parse_str(buf, "", type_buf, sizeof(type_buf))) continue; + if (parse_double(buf, "", count)) continue; + } + return ERR_XML_PARSE; +} + int APP_VERSION::parse(MIOFILE& in) { char buf[256]; while (in.fgets(buf, 256)) { if (match_tag(buf, "")) return 0; if (parse_str(buf, "", app_name, sizeof(app_name))) continue; - if (parse_str(buf, "", plan_class, sizeof(plan_class))) continue; if (parse_int(buf, "", version_num)) continue; + if (parse_str(buf, "", plan_class, sizeof(plan_class))) continue; + if (parse_str(buf, "", platform, sizeof(platform))) continue; + if (parse_double(buf, "", avg_ncpus)) continue; + if (parse_double(buf, "", gpu_ram)) continue; + if (parse_double(buf, "", flops)) continue; + if (match_tag(buf, "")) { + parse_coproc(in); + continue; + } } return ERR_XML_PARSE; } void APP_VERSION::clear() { - strcpy(app_name, ""); - strcpy(plan_class, ""); - version_num = 0; - app = NULL; - project = NULL; + memset(this, 0, sizeof(*this)); } WORKUNIT::WORKUNIT() {