Skip to content
Snippets Groups Projects
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
No related branches found
No related tags found
No related merge requests found
...@@ -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++)
{ {
cl_bool available;
err = clGetDeviceInfo(device_ids[i], CL_DEVICE_AVAILABLE, sizeof(cl_bool), &available, NULL);
if(err) {
log_error("Cannot check device availability of device # %d. Continuing with next available device...\n", i);
continue;
}
if(available) {
device_id = device_ids[i];
break;
}
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) {
{
log_info("Device %s not available for compute\n", name); log_info("Device %s not available for compute\n", name);
} }
else else {
{
log_info("Device # %d not available for compute\n", i); 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");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment