- client: for ATI enumeration, use only aticalrt.dll

(amdcalrt.dll is old version w/ funky DLL names)
- client: make GPU enumeration warnings more consistent
    (e.g., "NVIDIA" instead of "CUDA").
- scheduler: get rid of ati13 plan class.
    Require 1.4+ driver for plan class ati.

svn path=/trunk/boinc/; revision=19158
This commit is contained in:
David Anderson 2009-09-24 18:33:40 +00:00
parent 39815033a3
commit cfcfeffd21
3 changed files with 33 additions and 48 deletions

View File

@ -8045,3 +8045,16 @@ David 24 Sept 2009
log_flags.h
lib/
coproc.cpp,h
David 24 Sept 2009
- client: for ATI enumeration, use only aticalrt.dll
(amdcalrt.dll is old version w/ funky DLL names)
- client: make GPU enumeration warnings more consistent
(e.g., "NVIDIA" instead of "CUDA").
- scheduler: get rid of ati13 plan class.
Require 1.4+ driver for plan class ati.
sched/
sched_customize.cpp
lib/
coproc.cpp

View File

@ -278,7 +278,7 @@ void COPROC_CUDA::get(
cudalib = dlopen("libcuda.so", RTLD_NOW);
#endif
if (!cudalib) {
warnings.push_back("Can't load library libcuda");
warnings.push_back("No NVIDIA library found");
return;
}
__cuDeviceGetCount = (int(*)(int*)) dlsym(cudalib, "cuDeviceGetCount");
@ -292,35 +292,32 @@ void COPROC_CUDA::get(
__cuDeviceComputeCapability = (int(*)(int*, int*, int)) dlsym( cudalib, "cuDeviceComputeCapability" );
#endif
#ifdef __APPLE__
if (!__cuDriverGetVersion) {
warnings.push_back("CUDA driver is out of date. Please install CUDA driver 2.3 or later.");
warnings.push_back("cuDriverGetVersion() missing from NVIDIA library");
return;
}
#endif
if (!__cuInit) {
warnings.push_back("cuInit() missing from CUDA library");
warnings.push_back("cuInit() missing from NVIDIA library");
return;
}
if (!__cuDeviceGetCount) {
warnings.push_back("cuDeviceGetCount() missing from CUDA library");
warnings.push_back("cuDeviceGetCount() missing from NVIDIA library");
return;
}
if (!__cuDeviceGet) {
warnings.push_back("cuDeviceGet() missing from CUDA library");
warnings.push_back("cuDeviceGet() missing from NVIDIA library");
return;
}
if (!__cuDeviceGetAttribute) {
warnings.push_back("cuDeviceGetAttribute() missing from CUDA library");
warnings.push_back("cuDeviceGetAttribute() missing from NVIDIA library");
return;
}
if (!__cuDeviceTotalMem) {
warnings.push_back("cuDeviceTotalMem() missing from CUDA library");
warnings.push_back("cuDeviceTotalMem() missing from NVIDIA library");
return;
}
if (!__cuDeviceComputeCapability) {
warnings.push_back("cuDeviceComputeCapability() missing from CUDA library");
warnings.push_back("cuDeviceComputeCapability() missing from NVIDIA library");
return;
}
@ -684,20 +681,12 @@ void COPROC_ATI::get(COPROCS& coprocs,
#ifdef _WIN32
#if defined _M_X64
// TRY CAL 1.4 first driver > 9.2
HINSTANCE callib = LoadLibrary("aticalrt64.dll");
if (!callib) {
callib = LoadLibrary("amdcalrt64.dll");
}
#else
HINSTANCE callib = LoadLibrary("aticalrt.dll");
if (!callib) {
callib = LoadLibrary("amdcalrt.dll");
}
#endif
if (!callib) {
warnings.push_back("No ATI Libraries found.");
warnings.push_back("No ATI library found.");
return;
}
__calInit = (ATI_GDI)GetProcAddress(callib, "calInit" );
@ -711,7 +700,7 @@ void COPROC_ATI::get(COPROCS& coprocs,
callib = dlopen("libaticalrt.so", RTLD_NOW);
if (!callib) {
warnings.push_back("Can't load library libaticalrt.so");
warnings.push_back("No ATI library found");
return;
}
__calInit = (int(*)()) dlsym(callib, "calInit");

View File

@ -108,8 +108,9 @@ bool app_plan(SCHEDULER_REQUEST& sreq, char* plan_class, HOST_USAGE& hu) {
);
}
return true;
} else if (strstr(plan_class, "ati")) {
} else if (!strcmp(plan_class, "ati")) {
// the following is for an app that uses an ATI GPU
// with 1.4+ drivers
//
COPROC_ATI* cp = (COPROC_ATI*)sreq.coprocs.lookup("ATI");
if (!cp) {
@ -124,33 +125,15 @@ bool app_plan(SCHEDULER_REQUEST& sreq, char* plan_class, HOST_USAGE& hu) {
int major, minor, release;
sscanf(cp->version, "%d.%d.%d", &major, &minor, &release);
int vers = major*1000000 + minor*1000 + release;
if (!strcmp(plan_class, "ati")) {
// here if we require CAL version 1.2 or earlier
//
if (vers >= 1003000) {
if (config.debug_version_select) {
log_messages.printf(MSG_NORMAL,
"[version] host has CAL version %s, need 1.2-\n",
cp->version
);
}
add_no_work_message("ATI Catalyst 9.1 or less needed to use GPU");
return false;
}
}
if (!strcmp(plan_class, "ati13")) {
// here if we require CAL version 1.3 or later
//
if (vers < 1003000) {
if (config.debug_version_select) {
log_messages.printf(MSG_NORMAL,
"[version] host has CAL version %s, need 1.3+\n",
cp->version
);
}
add_no_work_message("ATI Catalyst 9.2 or better needed to use GPU");
return false;
if (vers < 1004000) {
if (config.debug_version_select) {
log_messages.printf(MSG_NORMAL,
"[version] host has CAL version %s, need 1.4+\n",
cp->version
);
}
add_no_work_message("ATI Catalyst 9.2 or better needed to use GPU");
return false;
}
hu.flops = cp->flops_estimate();