mirror of https://github.com/BOINC/boinc.git
client: Continue adding OpenCL support
svn path=/trunk/boinc/; revision=23260
This commit is contained in:
parent
b24bfbba3d
commit
99bbddf467
|
@ -206,23 +206,33 @@ void COPROCS::get_opencl(vector<string>&warnings) {
|
||||||
if (ciErrNum != CL_SUCCESS) return;
|
if (ciErrNum != CL_SUCCESS) return;
|
||||||
|
|
||||||
if (!strcmp(prop.vendor, "NVIDIA")) {
|
if (!strcmp(prop.vendor, "NVIDIA")) {
|
||||||
if (!nvidia.opencl_prop.name[0]) { // If not already merged
|
if (nvidia.matches(prop)) {
|
||||||
if (nvidia.matches(prop)) {
|
nvidia.opencl_prop = prop;
|
||||||
nvidia.opencl_prop = prop;
|
nvidia.opencl_device_ids[nvidia.opencl_device_num++] = prop.device_id;
|
||||||
return;
|
} else {
|
||||||
|
if (!nvidia.cuda_version) { // If CUDA did not find any previously
|
||||||
|
nvidia.opencl_prop = prop; // fill in what info we have
|
||||||
|
nvidia.opencl_device_ids[nvidia.opencl_device_num++] = prop.device_id;
|
||||||
|
strcpy(nvidia.prop.name, prop.name);
|
||||||
|
nvidia.prop.totalGlobalMem = prop.global_RAM;
|
||||||
|
nvidia.prop.clockRate = prop.max_clock_freq * 1000;
|
||||||
}
|
}
|
||||||
//TODO: Create a new entry if not already in CUDA list?
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(strcmp(prop.vendor, "ATI") || strcmp(prop.vendor, "AMD"))) {
|
if (!(strcmp(prop.vendor, "ATI") || strcmp(prop.vendor, "AMD"))) {
|
||||||
if (!ati.opencl_prop.name[0]) { // If not already merged
|
if (ati.matches(prop)) {
|
||||||
if (ati.matches(prop)) {
|
ati.opencl_prop = prop;
|
||||||
ati.opencl_prop = prop;
|
ati.opencl_device_ids[ati.opencl_device_num++] = prop.device_id;
|
||||||
return;
|
} else {
|
||||||
|
if (! (ati.atirt_detected || ati.amdrt_detected)) { // If ATI did not find any previously
|
||||||
|
ati.opencl_prop = prop; // fill in what info we have
|
||||||
|
ati.opencl_device_ids[ati.opencl_device_num++] = prop.device_id;
|
||||||
|
strcpy(ati.name, prop.name);
|
||||||
|
ati.attribs.localRAM = prop.local_RAM;
|
||||||
|
ati.attribs.engineClock = prop.max_clock_freq;
|
||||||
}
|
}
|
||||||
//TODO: Create a new entry if not already in ATI list due from CAL?
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,8 +153,9 @@ struct COPROC {
|
||||||
// These are not sequential if we omit instances (see above)
|
// These are not sequential if we omit instances (see above)
|
||||||
//
|
//
|
||||||
int device_nums[MAX_COPROC_INSTANCES];
|
int device_nums[MAX_COPROC_INSTANCES];
|
||||||
int open_device_ids[MAX_COPROC_INSTANCES];
|
|
||||||
int device_num; // temp used in scan process
|
int device_num; // temp used in scan process
|
||||||
|
cl_device_id opencl_device_ids[MAX_COPROC_INSTANCES];
|
||||||
|
int opencl_device_num;
|
||||||
bool running_graphics_app[MAX_COPROC_INSTANCES];
|
bool running_graphics_app[MAX_COPROC_INSTANCES];
|
||||||
// is this GPU running a graphics app (NVIDIA only)
|
// is this GPU running a graphics app (NVIDIA only)
|
||||||
double available_ram[MAX_COPROC_INSTANCES];
|
double available_ram[MAX_COPROC_INSTANCES];
|
||||||
|
@ -178,9 +179,11 @@ struct COPROC {
|
||||||
used = 0;
|
used = 0;
|
||||||
req_secs = 0;
|
req_secs = 0;
|
||||||
req_instances = 0;
|
req_instances = 0;
|
||||||
|
opencl_device_num = 0;
|
||||||
estimated_delay = 0;
|
estimated_delay = 0;
|
||||||
for (int i=0; i<MAX_COPROC_INSTANCES; i++) {
|
for (int i=0; i<MAX_COPROC_INSTANCES; i++) {
|
||||||
device_nums[i] = 0;
|
device_nums[i] = 0;
|
||||||
|
opencl_device_ids[i] = 0;
|
||||||
running_graphics_app[i] = true;
|
running_graphics_app[i] = true;
|
||||||
available_ram[i] = 0;
|
available_ram[i] = 0;
|
||||||
available_ram_fake[i] = 0;
|
available_ram_fake[i] = 0;
|
||||||
|
|
Loading…
Reference in New Issue