- Manager: fix case where the client has only an Intel GPU,

and the manager was acting as if it had no GPUs.
This commit is contained in:
David Anderson 2013-01-19 11:16:44 -08:00 committed by Oliver Bock
parent 43d8f9f16b
commit 994f4d6b4c
12 changed files with 67 additions and 66 deletions

View File

@ -413,7 +413,7 @@ int CLIENT_STATE::init() {
coprocs.add(coprocs.intel_gpu);
}
}
host_info._coprocs = coprocs;
host_info.coprocs = coprocs;
if (coprocs.none() ) {
msg_printf(NULL, MSG_INFO, "No usable GPUs found");

View File

@ -470,7 +470,7 @@ bool CAdvancedFrame::CreateMenu() {
_("Stop work regardless of preferences")
);
if (pDoc->state.have_nvidia || pDoc->state.have_ati || pDoc->state.have_intel) {
if (pDoc->state.have_gpu()) {
#ifndef __WXGTK__
menuActivity->AppendSeparator();
@ -1822,7 +1822,7 @@ void CAdvancedFrame::OnFrameRender(wxTimerEvent& WXUNUSED(event)) {
CC_STATUS status;
if ((pDoc->IsConnected()) && (0 == pDoc->GetCoreClientStatus(status))) {
UpdateActivityModeControls(status);
if (pDoc->state.have_nvidia || pDoc->state.have_ati || pDoc->state.have_intel) {
if (pDoc->state.have_gpu()) {
UpdateGPUModeControls(status);
}
UpdateNetworkModeControls(status);

View File

@ -1004,9 +1004,10 @@ void CMainDocument::HandleCompletedRPC() {
exchangeBuf->global_prefs = arg1->global_prefs;
exchangeBuf->version_info = arg1->version_info;
exchangeBuf->executing_as_daemon = arg1->executing_as_daemon;
exchangeBuf->host_info = arg1->host_info;
exchangeBuf->time_stats = arg1->time_stats;
exchangeBuf->have_nvidia = arg1->have_nvidia;
exchangeBuf->have_ati = arg1->have_ati;
exchangeBuf->have_intel = arg1->have_intel;
}
break;
case RPC_GET_RESULTS:

View File

@ -523,7 +523,7 @@ wxMenu *CTaskBarIcon::BuildContextMenu() {
pMenu->AppendSeparator();
m_SnoozeMenuItem = pMenu->AppendCheckItem(ID_TB_SUSPEND, _("Snooze"), wxEmptyString);
if (pDoc->state.have_nvidia || pDoc->state.have_ati || pDoc->state.have_intel) {
if (pDoc->state.have_gpu()) {
m_SnoozeGPUMenuItem = pMenu->AppendCheckItem(ID_TB_SUSPEND_GPU, _("Snooze GPU"), wxEmptyString);
}
@ -633,7 +633,7 @@ void CTaskBarIcon::AdjustMenuItems(wxMenu* pMenu) {
}
}
if (pDoc->state.have_nvidia || pDoc->state.have_ati || pDoc->state.have_intel) {
if (pDoc->state.have_gpu()) {
switch (status.gpu_mode) {
case RUN_MODE_NEVER:
switch (status.gpu_mode_perm) {
@ -660,11 +660,9 @@ void CTaskBarIcon::AdjustMenuItems(wxMenu* pMenu) {
}
break;
}
if (pDoc->state.have_nvidia || pDoc->state.have_ati || pDoc->state.have_intel) {
if (status.task_mode == RUN_MODE_NEVER) {
m_SnoozeGPUMenuItem->Check(false);
m_SnoozeGPUMenuItem->Enable(false);
}
if (status.task_mode == RUN_MODE_NEVER) {
m_SnoozeGPUMenuItem->Check(false);
m_SnoozeGPUMenuItem->Enable(false);
}
}
}
@ -724,7 +722,7 @@ void CTaskBarIcon::UpdateTaskbarStatus() {
}
strMessage += wxT(".\n");
if (!comp_suspended && (pDoc->state.have_nvidia || pDoc->state.have_ati || pDoc->state.have_intel)) {
if (!comp_suspended && pDoc->state.have_gpu()) {
switch(status.gpu_suspend_reason) {
case 0:
strMessage += _("GPU computing is enabled");

View File

@ -268,19 +268,19 @@ void CDlgItemProperties::renderInfos(PROJECT* project_in) {
addSection(_("Scheduling"));
addProperty(_("Scheduling priority"), wxString::Format(wxT("%0.2f"), project->sched_priority));
show_rsc(_("CPU"), project->rsc_desc_cpu);
if (pDoc->state.have_nvidia) {
if (pDoc->state.host_info.coprocs.have_nvidia()) {
show_rsc(
wxString(proc_type_name(PROC_TYPE_NVIDIA_GPU), wxConvUTF8),
project->rsc_desc_nvidia
);
}
if (pDoc->state.have_ati) {
if (pDoc->state.host_info.coprocs.have_ati()) {
show_rsc(
wxString(proc_type_name(PROC_TYPE_AMD_GPU), wxConvUTF8),
project->rsc_desc_ati
);
}
if (pDoc->state.have_intel) {
if (pDoc->state.host_info.coprocs.have_intel_gpu()) {
show_rsc(
wxString(proc_type_name(PROC_TYPE_INTEL_GPU), wxConvUTF8),
project->rsc_desc_intel_gpu

View File

@ -679,12 +679,12 @@ void CProjectInfoPage::OnPageChanged( wxWizardExEvent& event ) {
if (strProjectPlatform.Find(_T("[cuda")) != wxNOT_FOUND) {
pProjectInfo->m_bProjectSupportsCUDA = true;
if (!pDoc->state.have_nvidia) continue;
if (!pDoc->state.host_info.coprocs.have_nvidia()) continue;
}
if (strProjectPlatform.Find(_T("[ati")) != wxNOT_FOUND) {
pProjectInfo->m_bProjectSupportsCAL = true;
if (!pDoc->state.have_ati) continue;
if (!pDoc->state.host_info.coprocs.have_ati()) continue;
}
if (strClientPlatform == strRootProjectPlatform) {

View File

@ -187,11 +187,11 @@ echo "
language("Belgium (Dutch/French/English)", array(
site("http://www.boinc.be", "www.boinc.be"),
site("http://icewolves.plid.be", "IceWolves"),
));
language("Bulgarian", array(
site("http://www.boinc-bulgaria.net", "BOINC Bulgaria")
//site("http://icewolves.plid.be", "IceWolves"),
));
//language("Bulgarian", array(
//site("http://www.boinc-bulgaria.net", "BOINC Bulgaria")
//));
language("Catalan", array(
site("http://www.boinc.cat", "BOINC.cat"),
));
@ -205,7 +205,7 @@ language("Czech", array(
));
language("Danish", array(
site("http://boincdenmark.dk", "BOINC@Denmark"),
site("http://www.boinc.dk", "www.boinc.dk"),
//site("http://www.boinc.dk", "www.boinc.dk"),
site("http://www.setihome.dk", "www.setihome.dk")
));
language("Dutch", array(
@ -225,8 +225,8 @@ language("English", array(
site("http://www.unitedmacs.com/", "United Macs"),
//site("http://sirans-boincnews.com/", "Siran's BOINC Projects News Site"),
site("http://www.ukboincteam.org.uk/", "UK BOINC Team"),
site("http://symbion.madnezz.com/", "Symbion"),
site("http://scotlandsseti.blogspot.com/", "Megacruncher's Blog"),
//site("http://symbion.madnezz.com/", "Symbion"),
//site("http://scotlandsseti.blogspot.com/", "Megacruncher's Blog"),
site("http://www.bc-team.org/", "BOINC Confederation"),
//site("http://theclangers.net/", "The Clangers"),
site("http://www.free-dc.org/", "Free-DC"),
@ -241,10 +241,10 @@ language("English", array(
site("http://www.tswb.org", "Team Starfire World BOINC"),
//site("http://www.geocities.com/boinc_volunteers/", "BOINC Volunteers")
));
language("Estonian", array(
site("http://boinc.tmac.pri.ee", "boinc.tmac.pri.ee"),
//language("Estonian", array(
//site("http://boinc.tmac.pri.ee", "boinc.tmac.pri.ee"),
//site("http://setimehed.net/", "setimehed.net"),
));
//));
language("Finnish", array(
site( "http://www.universe-examiners.org/",
"Universe Examiners"),
@ -253,37 +253,37 @@ language("Finnish", array(
//),
));
language("French", array(
site("http://boinc.starwars-holonet.com/", "Star Wars [FR]"),
//site("http://boinc.starwars-holonet.com/", "Star Wars [FR]"),
//site("http://wwww.boinc-2tf.org", "2TF Asso"),
site("http://boincfrance.org", "BOINCFRANCE.ORG"),
//site("http://boincfrance.org", "BOINCFRANCE.ORG"),
site("http://www.boinc-af.org", "L'Alliance Francophone"),
));
language("German", array(
site("http://www.crunchers-freiburg.de/", "crunchers@freiburg"),
//site("http://www.boinc-gemeinschaft.de/", "BOINC Gemeinschaft"),
site("http://www.gridcommunity.de/index.php", "International Grid Community"),
site("http://www.swissteam.net/", "SwissTeam.net"),
//site("http://www.gridcommunity.de/index.php", "International Grid Community"),
//site("http://www.swissteam.net/", "SwissTeam.net"),
site("http://www.unitedmacs.com/", "United Macs"),
site("http://www.rechenkraft.net/", "Rechenkraft"),
site("http://www.seti-leipzig.de/", "SETI-Leipzig"),
site("http://www.dc-gemeinschaft.com/", "DC - Gemeinschaft"),
site("http://boinccast.podhost.de/", "BOINCcast (Podcast)"),
site("http://www.boinc-team.de/", "BOINC@Heidelberg"),
site("http://www.crunching-family.wins.info/", "Crunching Family"),
//site("http://www.crunching-family.wins.info/", "Crunching Family"),
site("http://www.boinc.at/", "www.boinc.at"),
site("http://www.boinc-halle-saale.de", "BOINC@Halle/Saale"),
site("http://www.bc-team.org/", "BOINC Confederation"),
site("http://www.boincfun.tk/", "BOINCfun"),
//site("http://www.boincfun.tk/", "BOINCfun"),
site("http://www.seti-germany.de", "SETI.Germany"),
site("http://www.sar-hessen.org", "Team Science and Research Hessen"),
site("http://www.boinc.de/", "www.boinc.de"),
//site( "http://www.boinc-lubeca.de/", "BOINC - LUBECA (Lübeck, Germany)"),
site( "http://www.boinc-forum.de/", "www.boinc-forum.de"),
//site( "http://www.boinc-forum.de/", "www.boinc-forum.de"),
//site( "http://www.emuleatboinc.de/board", "Official eMule @ BOINC Team Page")
));
language("Hungarian", array(
site("http://seti.hwsw.hu/", "HWSW SETI@home Team")
));
//language("Hungarian", array(
//site("http://seti.hwsw.hu/", "HWSW SETI@home Team")
//));
language("Italian", array(
site("http://www.calcolodistribuito.it/", "Calcolo Distribuito"),
site("http://www.boincitaly.org/", "BOINC.Italy"),
@ -297,25 +297,25 @@ language("Japanese", array(
));
language("Korean", array(
site("http://cafe.naver.com/setikah", "SETIKAH@KOREA"),
site("http://boincatkorea.xo.st/", "BOINC@KOREA"),
//site("http://boincatkorea.xo.st/", "BOINC@KOREA"),
));
language("Polish", array(
//site("http://www.boinc-polska.org/", "BOINC-Polska.org"),
//site("http://www.boinc.org.pl/", "Team boinc.pl"),
site("http://www.boinc.prv.pl", "BOINC@Kolobrzeg"),
//site("http://www.boinc.prv.pl", "BOINC@Kolobrzeg"),
site("http://www.boincatpoland.org", "BOINC@Poland"),
site("http://boinc.pl", "BOINC Polish National Team"),
site("http://www.tomaszpawel.republika.pl/", "TomaszPawelTeam"),
//site("http://www.gpuforce.oxyone.pl/", "GPU Force"),
));
language("Portuguese", array(
site( "http://portugalathome.pt.vu/", "Portugal@home"),
//site( "http://portugalathome.pt.vu/", "Portugal@home"),
site("http://www.setibr.org/", "SETIBR"),
));
language("Romanian", array(
site( "http://www.boinc.ro/", "SETI@home Romania")
));
//language("Romanian", array(
// site( "http://www.boinc.ro/", "SETI@home Romania")
//));
language("Russian", array(
site("http://vkontakte.ru/club11963359", "BOINC group on vkontakte.ru"),
site("http://www.boinc.ru", "BOINC.ru"),
@ -329,19 +329,19 @@ language("Spanish", array(
site("http://www.seti.cl/", "BOINC SETI Chile"),
site("http://www.easyboinc.org/", "Computación Distribuida"),
site("http://foro.noticias3d.com/vbulletin/showthread.php?t=192297", "Noticias3D"),
site("http://elmajo.blogspot.com", "Computación Distribuida"),
site("http://efren-canarias.blogcindario.com/", "El Pais De La Computacion"),
site("http://www.canalboinc.org/modules/news/", "Canal BOINC"),
//site("http://elmajo.blogspot.com", "Computación Distribuida"),
//site("http://efren-canarias.blogcindario.com/", "El Pais De La Computacion"),
//site("http://www.canalboinc.org/modules/news/", "Canal BOINC"),
site("http://www.boinc-ecuador.com/", "BOINC - Ecuador"),
site("http://www.hispaseti.org/", "HispaSeti"),
site("http://www.seti-argentina.com.ar", "BOINC Argentina"),
site("http://boinc.blogspot.com", "Boinc y Astronomia")
//site("http://www.seti-argentina.com.ar", "BOINC Argentina"),
//site("http://boinc.blogspot.com", "Boinc y Astronomia")
//site("http://boincspain.shyper.com/", "BOINC España</a>")
));
language("Turkish", array(
site("http://www.turksetiteam.org/", "www.turksetiteam.org"),
site("http://www.boinctr.com/", "www.boinctr.com")
));
//language("Turkish", array(
//site("http://www.turksetiteam.org/", "www.turksetiteam.org"),
//site("http://www.boinctr.com/", "www.boinctr.com")
//));
language("Ukrainian", array(
site("http://distributed.org.ua/", "Ukraine - Distributed Computing"),
));

View File

@ -282,14 +282,14 @@ $astro_phys_chem = array(
tra("SETI (Search for Extraterrestrial Intelligence) is a scientific area whose goal is to detect intelligent life outside Earth. One approach, known as radio SETI, uses radio telescopes to listen for narrow-bandwidth radio signals from space. Such signals are not known to occur naturally, so a detection would provide evidence of extraterrestrial technology."),
"seti_logo.png"
),
array(
"Quantum Monte Carlo at Home",
"http://qah.uni-muenster.de/",
tra("University of Muenster (Germany)"),
tra("Chemistry"),
tra("Study the structure and reactivity of molecules using Quantum Chemistry."),
"logo_oben.jpg"
),
// array(
// "Quantum Monte Carlo at Home",
// "http://qah.uni-muenster.de/",
// tra("University of Muenster (Germany)"),
// tra("Chemistry"),
// tra("Study the structure and reactivity of molecules using Quantum Chemistry."),
// "logo_oben.jpg"
// ),
array(
"Spinhenge@home",
"http://spin.fh-bielefeld.de/",

View File

@ -389,7 +389,6 @@ struct CC_STATE {
TIME_STATS time_stats;
bool have_nvidia; // deprecated; include for compat (set by <have_cuda/>)
bool have_ati; // deprecated; include for compat
bool have_intel;
CC_STATE();
~CC_STATE();
@ -405,6 +404,11 @@ struct CC_STATE {
void print();
void clear();
int parse(XML_PARSER&);
inline bool have_gpu() {
return !host_info.coprocs.none()
|| have_nvidia || have_ati // for old clients
;
}
};
struct PROJECTS {

View File

@ -982,7 +982,6 @@ int CC_STATE::parse(XML_PARSER& xp) {
}
if (xp.parse_bool("have_cuda", have_nvidia)) continue;
if (xp.parse_bool("have_ati", have_ati)) continue;
if (xp.parse_bool("have_intel", have_intel)) continue;
}
return 0;
}
@ -1014,7 +1013,6 @@ void CC_STATE::clear() {
host_info.clear_host_info();
have_nvidia = false;
have_ati = false;
have_intel = false;
}
PROJECT* CC_STATE::lookup_project(const char* url) {

View File

@ -116,7 +116,7 @@ int HOST_INFO::parse(XML_PARSER& xp, bool benchmarks_only) {
if (xp.parse_str("os_version", os_version, sizeof(os_version))) continue;
if (xp.parse_str("virtualbox_version", virtualbox_version, sizeof(virtualbox_version))) continue;
if (xp.match_tag("coprocs")) {
_coprocs.parse(xp);
this->coprocs.parse(xp);
}
}
return ERR_XML_PARSE;
@ -198,7 +198,7 @@ int HOST_INFO::write(
);
}
if (include_coprocs) {
_coprocs.write_xml(out, false);
this->coprocs.write_xml(out, false);
}
out.printf(
"</host_info>\n"

View File

@ -65,7 +65,7 @@ public:
//
char virtualbox_version[256];
COPROCS _coprocs;
COPROCS coprocs;
HOST_INFO();
int parse(XML_PARSER&, bool benchmarks_only = false);