Commit 6abc5466 authored by Oliver Bock's avatar Oliver Bock
Browse files

Added crude feature to pass device ID as second command line argument (replaying 3987009c)

parent 47d231be
...@@ -740,51 +740,73 @@ int main (int argc, char * const argv[]) { ...@@ -740,51 +740,73 @@ int main (int argc, char * const argv[]) {
} }
device_id = NULL; device_id = NULL;
unsigned int i = 0;
unsigned int i; if (argc == 3) {
for(i = 0; i < num_devices; i++)
{
cl_bool available; cl_bool available;
err = clGetDeviceInfo(device_ids[i], CL_DEVICE_AVAILABLE, sizeof(cl_bool), &available, NULL); err = clGetDeviceInfo(device_ids[atoi(argv[2])], CL_DEVICE_AVAILABLE, sizeof(cl_bool), &available, NULL);
if(err) if(err) {
{ printf("ERROR: Cannot check device availability of device # %d\n", atoi(argv[2]));
log_error("Cannot check device availability of device # %d\n", i); return -1;
} }
if(available) if(available) {
{ device_id = device_ids[atoi(argv[2])];
device_id = device_ids[i]; }
else {
char name[200]; char name[200];
err = clGetDeviceInfo(device_ids[i], CL_DEVICE_NAME, sizeof(name), name, NULL); err = clGetDeviceInfo(device_ids[i], CL_DEVICE_NAME, sizeof(name), name, NULL);
if(err == CL_SUCCESS) { if(err == CL_SUCCESS) {
printf("INFO: Using device %s...\n", name); printf("ERROR: Device %s not available for compute\n", name);
} }
else { else {
printf("INFO: Using device # %d...\n", i); printf("ERROR: Device # %d not available for compute\n", atoi(argv[2]));
} }
break; return -1;
} }
else }
else {
for(i = 0; i < num_devices; i++)
{ {
char name[200]; cl_bool available;
err = clGetDeviceInfo(device_ids[i], CL_DEVICE_NAME, sizeof(name), name, NULL); err = clGetDeviceInfo(device_ids[i], CL_DEVICE_AVAILABLE, sizeof(cl_bool), &available, NULL);
if(err == CL_SUCCESS) if(err) {
{ log_error("Cannot check device availability of device # %d. Continuing with next available device...\n", i);
log_info("Device %s not available for compute\n", name); continue;
} }
else
{ if(available) {
log_info("Device # %d not available for compute\n", i); device_id = device_ids[i];
break;
}
else {
char name[200];
err = clGetDeviceInfo(device_ids[i], CL_DEVICE_NAME, sizeof(name), name, NULL);
if(err == CL_SUCCESS) {
log_info("Device %s not available for compute\n", name);
}
else {
log_info("Device # %d not available for compute\n", i);
}
} }
} }
} }
if(!device_id) if(!device_id) {
{
log_error("None of the devices available for compute ... aborting test\n"); log_error("None of the devices available for compute ... aborting test\n");
test_finish(); test_finish();
return -1; return -1;
} }
else {
char name[200];
err = clGetDeviceInfo(device_id, CL_DEVICE_NAME, sizeof(name), name, NULL);
if(err == CL_SUCCESS) {
printf("INFO: Using device %s...\n", name);
}
else {
printf("INFO: Using device # %d...\n", i);
}
}
context = clCreateContext(0, 1, &device_id, NULL, NULL, &err); context = clCreateContext(0, 1, &device_id, NULL, NULL, &err);
if(!context || err) if(!context || err)
...@@ -826,7 +848,7 @@ int main (int argc, char * const argv[]) { ...@@ -826,7 +848,7 @@ int main (int argc, char * const argv[]) {
return -1; return -1;
} }
if(argc == 2) { // arguments are supplied in a file with arguments for a single run are all on the same line if(argc >= 2) { // arguments are supplied in a file with arguments for a single run are all on the same line
paramFile = fopen(argv[1], "r"); paramFile = fopen(argv[1], "r");
if(!paramFile) { if(!paramFile) {
log_error("Cannot open the parameter file\n"); log_error("Cannot open the parameter file\n");
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment