diff --git a/include/util.hpp b/include/util.hpp index 847ffb50..b27950fb 100644 --- a/include/util.hpp +++ b/include/util.hpp @@ -98,6 +98,11 @@ static bool checkPlatformIndex( fprintf(stderr, "Error: No OpenCL platforms found.\n"); return false; } + if (platformIndex < 0) { + fprintf(stderr, "Error: Invalid platform index %d specified\n", + platformIndex); + return false; + } if (platformIndex >= (int)platforms.size()) { fprintf(stderr, "Error: Invalid platform index %d specified (max %d)\n", platformIndex, @@ -106,3 +111,67 @@ static bool checkPlatformIndex( } return true; } + +static bool checkDeviceIndex( + const std::vector& devices, + int deviceIndex) +{ + if (devices.size() == 0) { + fprintf(stderr, "Error: No OpenCL devices found.\n"); + return false; + } + if (deviceIndex < 0) { + fprintf(stderr, "Error: Invalid device index %d specified\n", + deviceIndex); + return false; + } + if (deviceIndex >= (int)devices.size()) { + fprintf(stderr, "Error: Invalid device index %d specified (max %d)\n", + deviceIndex, + (int)(devices.size() - 1) ); + return false; + } + return true; +} + +static bool setupDevice( + cl::Device& device, + int platformIndex, + int deviceIndex, + bool verbose = false) +{ + std::vector platforms; + cl::Platform::get(&platforms); + + if (!checkPlatformIndex(platforms, platformIndex)) { + return false; + } + + const cl::Platform& platform = platforms[platformIndex]; + printf("Running on platform: %s\n", + platform.getInfo().c_str() ); + + std::vector devices; + platform.getDevices(CL_DEVICE_TYPE_ALL, &devices); + + if (!checkDeviceIndex(devices, deviceIndex)) { + return false; + } + + device = devices[deviceIndex]; + if (verbose) { + printf("Running on device: %s (%uCUs, %uMHz)\n", + device.getInfo().c_str(), + device.getInfo(), + device.getInfo() ); + printf("Device version: %s\n", + device.getInfo().c_str() ); + printf("Driver version: %s\n", + device.getInfo().c_str() ); + } else { + printf("Running on device: %s\n", + device.getInfo().c_str() ); + } + + return true; +} diff --git a/samples/00_enumopencl/main.cpp b/samples/00_enumopencl/main.cpp index 40e4a18b..2e05231c 100644 --- a/samples/00_enumopencl/main.cpp +++ b/samples/00_enumopencl/main.cpp @@ -243,9 +243,7 @@ static cl_int PrintDeviceInfoSummary( return errorCode; } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { { popl::OptionParser op("Supported Options"); diff --git a/samples/00_enumopenclpp/main.cpp b/samples/00_enumopenclpp/main.cpp index f165afbf..b7ec2d43 100644 --- a/samples/00_enumopenclpp/main.cpp +++ b/samples/00_enumopenclpp/main.cpp @@ -52,9 +52,7 @@ static cl_int PrintDeviceInfoSummary( return CL_SUCCESS; } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { { popl::OptionParser op("Supported Options"); diff --git a/samples/00_enumqueuefamilies/main.cpp b/samples/00_enumqueuefamilies/main.cpp index 7e6f15a9..a479e862 100644 --- a/samples/00_enumqueuefamilies/main.cpp +++ b/samples/00_enumqueuefamilies/main.cpp @@ -106,9 +106,7 @@ static void PrintDeviceInfoSummary( } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { { popl::OptionParser op("Supported Options"); diff --git a/samples/00_extendeddevicequeries/main.cpp b/samples/00_extendeddevicequeries/main.cpp index a727133a..2d401d35 100644 --- a/samples/00_extendeddevicequeries/main.cpp +++ b/samples/00_extendeddevicequeries/main.cpp @@ -160,9 +160,7 @@ static void PrintDeviceInfoSummary( } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { { popl::OptionParser op("Supported Options"); diff --git a/samples/00_loaderinfo/main.cpp b/samples/00_loaderinfo/main.cpp index ceefc756..76710346 100644 --- a/samples/00_loaderinfo/main.cpp +++ b/samples/00_loaderinfo/main.cpp @@ -31,9 +31,7 @@ static void PrintLoaderInfo(const char* label, cl_icdl_info info) printf("Query for for %s (size = %zu) returned: %s\n", label, sz, str.data()); } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { { popl::OptionParser op("Supported Options"); diff --git a/samples/00_newqueries/main.cpp b/samples/00_newqueries/main.cpp index a69594ce..f3d18b8c 100644 --- a/samples/00_newqueries/main.cpp +++ b/samples/00_newqueries/main.cpp @@ -595,9 +595,7 @@ static void PrintDeviceInfoSummary( } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { { popl::OptionParser op("Supported Options"); diff --git a/samples/00_newqueriespp/main.cpp b/samples/00_newqueriespp/main.cpp index b01d6126..099dca7c 100644 --- a/samples/00_newqueriespp/main.cpp +++ b/samples/00_newqueriespp/main.cpp @@ -234,9 +234,7 @@ static void PrintDeviceInfoSummary( } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { { popl::OptionParser op("Supported Options"); diff --git a/samples/00_spirvqueries/main.cpp b/samples/00_spirvqueries/main.cpp index 28e936f9..d4a3c3d6 100644 --- a/samples/00_spirvqueries/main.cpp +++ b/samples/00_spirvqueries/main.cpp @@ -26,9 +26,7 @@ #include "util.hpp" -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { { popl::OptionParser op("Supported Options"); diff --git a/samples/01_copybuffer/main.cpp b/samples/01_copybuffer/main.cpp index a5b962fc..6e7ef54d 100644 --- a/samples/01_copybuffer/main.cpp +++ b/samples/01_copybuffer/main.cpp @@ -12,15 +12,15 @@ const size_t gwx = 1024*1024; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); @@ -40,26 +40,15 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; - cl::Buffer deviceMemSrc = cl::Buffer{ + cl::Buffer deviceMemSrc = cl::Buffer{ context, CL_MEM_ALLOC_HOST_PTR, gwx * sizeof( cl_uint ) }; diff --git a/samples/02_copybufferkernel/main.cpp b/samples/02_copybufferkernel/main.cpp index aadcbe5a..34928cd1 100644 --- a/samples/02_copybufferkernel/main.cpp +++ b/samples/02_copybufferkernel/main.cpp @@ -20,15 +20,15 @@ kernel void CopyBuffer( global uint* dst, global uint* src ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); @@ -48,24 +48,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/03_mandelbrot/main.cpp b/samples/03_mandelbrot/main.cpp index 6e65f869..7cb8b3db 100644 --- a/samples/03_mandelbrot/main.cpp +++ b/samples/03_mandelbrot/main.cpp @@ -55,17 +55,18 @@ kernel void Mandelbrot( } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); + bool printUsage = false; try { op.parse(argc, argv); @@ -82,24 +83,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/04_julia/main.cpp b/samples/04_julia/main.cpp index ed5d281b..4acd1efe 100644 --- a/samples/04_julia/main.cpp +++ b/samples/04_julia/main.cpp @@ -64,10 +64,9 @@ kernel void Julia( global uchar4* dst, float cr, float ci ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -79,6 +78,7 @@ int main( { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("i", "iterations", "Iterations", iterations, &iterations); @@ -103,24 +103,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/04_sobel/main.cpp b/samples/04_sobel/main.cpp index ba2cf026..89818f73 100644 --- a/samples/04_sobel/main.cpp +++ b/samples/04_sobel/main.cpp @@ -111,10 +111,9 @@ kernel void Sobel( global uchar4* src, global uchar4* dst ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -126,6 +125,7 @@ int main( { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("i", "iterations", "Iterations", iterations, &iterations); @@ -150,24 +150,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/05_kernelfromfile/main.cpp b/samples/05_kernelfromfile/main.cpp index 167c1073..7dce389a 100644 --- a/samples/05_kernelfromfile/main.cpp +++ b/samples/05_kernelfromfile/main.cpp @@ -13,10 +13,9 @@ #include "util.hpp" -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -27,12 +26,14 @@ int main( { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("", "file", "Kernel File Name", fileName, &fileName); op.add>("", "name", "Kernel Name", kernelName, &kernelName); op.add>("", "options", "Program Build Options", buildOptions, &buildOptions); op.add>("", "gwx", "Global Work Size", gwx, &gwx); + bool printUsage = false; try { op.parse(argc, argv); @@ -49,24 +50,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; printf("Reading program source from file: %s\n", fileName.c_str() ); std::string kernelString = readStringFromFile(fileName.c_str()); diff --git a/samples/05_spirvkernelfromfile/main.cpp b/samples/05_spirvkernelfromfile/main.cpp index 21317596..b0e10cf0 100644 --- a/samples/05_spirvkernelfromfile/main.cpp +++ b/samples/05_spirvkernelfromfile/main.cpp @@ -95,10 +95,9 @@ static cl::Program createProgramWithIL( return cl::Program{ program }; } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -109,12 +108,14 @@ int main( { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("", "file", "Kernel File Name", fileName, &fileName); op.add>("", "name", "Kernel Name", kernelName, &kernelName); op.add>("", "options", "Program Build Options", buildOptions, &buildOptions); op.add>("", "gwx", "Global Work Size", gwx, &gwx); + bool printUsage = false; try { op.parse(argc, argv); @@ -131,23 +132,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); printf("CL_DEVICE_ADDRESS_BITS is %d for this device.\n", - devices[deviceIndex].getInfo() ); + device.getInfo() ); // Check for SPIR-V support. If the device supports OpenCL 2.1 or newer // we can use the core clCreateProgramWithIL API. Otherwise, if the device @@ -155,20 +146,20 @@ int main( // extension API. If neither is supported then we cannot run this sample. #ifdef CL_VERSION_2_1 // Note: This could look for "SPIR-V" in CL_DEVICE_IL_VERSION. - if (getDeviceOpenCLVersion(devices[deviceIndex]) >= CL_MAKE_VERSION(2, 1, 0) && - !devices[deviceIndex].getInfo().empty()) { + if (getDeviceOpenCLVersion(device) >= CL_MAKE_VERSION(2, 1, 0) && + !device.getInfo().empty()) { printf("Device supports OpenCL 2.1 or newer, using clCreateProgramWithIL.\n"); } else #endif - if (checkDeviceForExtension(devices[deviceIndex], "cl_khr_il_program")) { + if (checkDeviceForExtension(device, "cl_khr_il_program")) { printf("Device supports cl_khr_il_program, using clCreateProgramWithILKHR.\n"); } else { printf("Device does not support SPIR-V, exiting.\n"); return -1; } - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; printf("Reading SPIR-V from file: %s\n", fileName.c_str()); std::vector spirv = readSPIRVFromFile(fileName); diff --git a/samples/06_ndrangekernelfromfile/main.cpp b/samples/06_ndrangekernelfromfile/main.cpp index 559e5f94..e8cf2d53 100644 --- a/samples/06_ndrangekernelfromfile/main.cpp +++ b/samples/06_ndrangekernelfromfile/main.cpp @@ -13,10 +13,9 @@ #include "util.hpp" -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -35,6 +34,7 @@ int main( bool advanced = false; popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("", "file", "Kernel File Name", fileName, &fileName); @@ -48,6 +48,7 @@ int main( op.add("c", "compilelink", "Use clCompileProgram and clLinkProgram", &compile); op.add, popl::Attribute::advanced>("", "compileoptions", "Program Compile Options", compileOptions, &compileOptions); op.add, popl::Attribute::advanced>("", "linkoptions", "Program Link Options", linkOptions, &linkOptions); + bool printUsage = false; try { op.parse(argc, argv); @@ -64,24 +65,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; printf("Reading program source from file: %s\n", fileName.c_str() ); std::string kernelString = readStringFromFile(fileName.c_str()); diff --git a/samples/10_queueexperiments/main.cpp b/samples/10_queueexperiments/main.cpp index 6c7369b7..91e46fc7 100644 --- a/samples/10_queueexperiments/main.cpp +++ b/samples/10_queueexperiments/main.cpp @@ -373,21 +373,23 @@ static void go_kernel_ctx_ioqxN( cl::Device& device, const int numKernels ) printf("Finished in %f seconds\n", best); } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; + int numKernels = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("k", "kernels", "Kernel to Execute (<=0 to sweep)", numKernels, &numKernels); op.add>("i", "iterations", "Kernel Iterations", numIterations, &numIterations); op.add>("e", "elements", "Number of ND-Range Elements", numElements, &numElements); + bool printUsage = false; try { op.parse(argc, argv); @@ -410,24 +412,12 @@ int main( numKernels = maxKernels; } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - cl::Device& device = devices[deviceIndex]; - printf("Running on device: %s\n", - device.getInfo().c_str() ); - - cl::Context context{ device }; + cl::Context context{device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/11_semaphores/main.cpp b/samples/11_semaphores/main.cpp index b487b71b..e393e217 100644 --- a/samples/11_semaphores/main.cpp +++ b/samples/11_semaphores/main.cpp @@ -36,10 +36,9 @@ static void PrintSemaphoreTypes(const std::vector& types) } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -49,9 +48,11 @@ int main( bool advanced = false; popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("", "gwx", "Global Work Size", gwx, &gwx); + bool printUsage = false; try { op.parse(argc, argv); @@ -68,46 +69,37 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - // device queries: - bool has_cl_khr_command_buffer = - checkDeviceForExtension(devices[deviceIndex], CL_KHR_SEMAPHORE_EXTENSION_NAME); - if (has_cl_khr_command_buffer) { + bool has_cl_khr_semaphore = + checkDeviceForExtension(device, CL_KHR_SEMAPHORE_EXTENSION_NAME); + if (has_cl_khr_semaphore) { printf("Device supports " CL_KHR_SEMAPHORE_EXTENSION_NAME ".\n"); } else { printf("Device does not support " CL_KHR_SEMAPHORE_EXTENSION_NAME ", exiting.\n"); return -1; } + const cl::Platform& platform = device.getInfo(); + std::vector platformSemaphoreTypes = - platforms[platformIndex].getInfo(); + platform.getInfo(); printf("\tPlatform Semaphore Types:\n"); PrintSemaphoreTypes(platformSemaphoreTypes); std::vector deviceSemaphoreTypes = - devices[deviceIndex].getInfo(); + device.getInfo(); printf("\tDevice Semaphore Types:\n"); PrintSemaphoreTypes(deviceSemaphoreTypes); - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue q0{context, devices[deviceIndex]}; - cl::CommandQueue q1{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue q0{context, device}; + cl::CommandQueue q1{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/12_commandbuffers/main.cpp b/samples/12_commandbuffers/main.cpp index 879a69f9..63b4dc5d 100644 --- a/samples/12_commandbuffers/main.cpp +++ b/samples/12_commandbuffers/main.cpp @@ -66,15 +66,15 @@ static void PrintCommandBufferQueueProperties( } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); @@ -94,26 +94,15 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - // device queries: bool has_cl_khr_command_buffer = - checkDeviceForExtension(devices[deviceIndex], CL_KHR_COMMAND_BUFFER_EXTENSION_NAME); + checkDeviceForExtension(device, CL_KHR_COMMAND_BUFFER_EXTENSION_NAME); if (has_cl_khr_command_buffer) { printf("Device supports " CL_KHR_COMMAND_BUFFER_EXTENSION_NAME ".\n"); } else { @@ -123,7 +112,7 @@ int main( cl_device_command_buffer_capabilities_khr caps = 0; clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR, sizeof(caps), &caps, @@ -133,7 +122,7 @@ int main( cl_command_queue_properties requiredProps = 0; clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES_KHR, sizeof(requiredProps), &requiredProps, @@ -143,7 +132,7 @@ int main( cl_command_queue_properties supportedProps = 0; clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR, sizeof(supportedProps), &supportedProps, @@ -151,8 +140,8 @@ int main( printf("\tCommand Buffer Supported Queue Properties:\n"); PrintCommandBufferQueueProperties(supportedProps); - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/12_commandbufferspp/main.cpp b/samples/12_commandbufferspp/main.cpp index 460939f8..6f4d05a7 100644 --- a/samples/12_commandbufferspp/main.cpp +++ b/samples/12_commandbufferspp/main.cpp @@ -61,15 +61,15 @@ static void PrintCommandBufferQueueProperties( } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); @@ -89,26 +89,15 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - // device queries: bool has_cl_khr_command_buffer = - checkDeviceForExtension(devices[deviceIndex], CL_KHR_COMMAND_BUFFER_EXTENSION_NAME); + checkDeviceForExtension(device, CL_KHR_COMMAND_BUFFER_EXTENSION_NAME); if (has_cl_khr_command_buffer) { printf("Device supports " CL_KHR_COMMAND_BUFFER_EXTENSION_NAME ".\n"); } else { @@ -118,18 +107,18 @@ int main( printf("\tCommand Buffer Capabilities:\n"); PrintCommandBufferCapabilities( - devices[deviceIndex].getInfo()); + device.getInfo()); printf("\tCommand Buffer Required Queue Properties:\n"); PrintCommandBufferQueueProperties( - devices[deviceIndex].getInfo()); + device.getInfo()); printf("\tCommand Buffer Supported Queue Properties:\n"); PrintCommandBufferQueueProperties( - devices[deviceIndex].getInfo()); + device.getInfo()); - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/13_mutablecommandbuffers/main.cpp b/samples/13_mutablecommandbuffers/main.cpp index 45c3dc0d..d485e5a2 100644 --- a/samples/13_mutablecommandbuffers/main.cpp +++ b/samples/13_mutablecommandbuffers/main.cpp @@ -83,15 +83,15 @@ static void PrintMutableDispatchCapabilities( } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); @@ -111,26 +111,15 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - // device queries: bool has_cl_khr_command_buffer = - checkDeviceForExtension(devices[deviceIndex], CL_KHR_COMMAND_BUFFER_EXTENSION_NAME); + checkDeviceForExtension(device, CL_KHR_COMMAND_BUFFER_EXTENSION_NAME); if (has_cl_khr_command_buffer) { printf("Device supports " CL_KHR_COMMAND_BUFFER_EXTENSION_NAME ".\n"); } else { @@ -138,7 +127,7 @@ int main( return -1; } bool has_cl_khr_command_buffer_mutable_dispatch = - checkDeviceForExtension(devices[deviceIndex], CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_NAME); + checkDeviceForExtension(device, CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_NAME); if (has_cl_khr_command_buffer_mutable_dispatch) { printf("Device supports " CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_NAME ".\n"); } else { @@ -148,7 +137,7 @@ int main( cl_device_command_buffer_capabilities_khr caps = 0; clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR, sizeof(caps), &caps, @@ -158,7 +147,7 @@ int main( cl_command_queue_properties requiredProps = 0; clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES_KHR, sizeof(requiredProps), &requiredProps, @@ -168,7 +157,7 @@ int main( cl_command_queue_properties supportedProps = 0; clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR, sizeof(supportedProps), &supportedProps, @@ -178,7 +167,7 @@ int main( cl_mutable_dispatch_fields_khr mutableCaps = 0; clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_MUTABLE_DISPATCH_CAPABILITIES_KHR, sizeof(mutableCaps), &mutableCaps, @@ -190,8 +179,8 @@ int main( return -1; } - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/14_ooqcommandbuffers/main.cpp b/samples/14_ooqcommandbuffers/main.cpp index 679bce0d..937768f0 100644 --- a/samples/14_ooqcommandbuffers/main.cpp +++ b/samples/14_ooqcommandbuffers/main.cpp @@ -28,10 +28,9 @@ kernel void AddBuffers( global uint* dst, global uint* srcA, global uint* srcB ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -42,6 +41,7 @@ int main( { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add("", "ioq", "Use an In-Order Queue", &useIOQ); @@ -64,26 +64,15 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - // device queries: bool has_cl_khr_command_buffer = - checkDeviceForExtension(devices[deviceIndex], CL_KHR_COMMAND_BUFFER_EXTENSION_NAME); + checkDeviceForExtension(device, CL_KHR_COMMAND_BUFFER_EXTENSION_NAME); if (has_cl_khr_command_buffer) { printf("Device supports " CL_KHR_COMMAND_BUFFER_EXTENSION_NAME ".\n"); } else { @@ -92,7 +81,7 @@ int main( } cl_command_queue_properties cmdqprops = - devices[deviceIndex].getInfo(); + device.getInfo(); if (cmdqprops & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) { printf("Device supports out-of-order queues.\n"); } else { @@ -101,7 +90,7 @@ int main( } cl_command_queue_properties cmdbufqueueprops = - devices[deviceIndex].getInfo(); + device.getInfo(); if (cmdbufqueueprops & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) { printf("Device supports out-of-order command buffers.\n"); } else { @@ -114,8 +103,8 @@ int main( printf("Executing the command buffer %zu times.\n", iterations); printf("Buffer Size is %zu 32-bit integers.\n", gwx); - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex], + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device, useIOQ ? (cl_command_queue_properties)0 : CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE}; cl::Program program{ context, kernelString }; diff --git a/samples/15_mutablecommandbufferasserts/main.cpp b/samples/15_mutablecommandbufferasserts/main.cpp index 2fb4ded2..24e62138 100644 --- a/samples/15_mutablecommandbufferasserts/main.cpp +++ b/samples/15_mutablecommandbufferasserts/main.cpp @@ -32,17 +32,18 @@ kernel void CopyBuffer( global uint* dst, global uint* src ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; + bool noCmdBufAssert = false; bool noCmdAssert = false; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add("", "noCmdBufAssert", "Skip Command Buffer Assert", &noCmdBufAssert); @@ -64,26 +65,15 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - // device queries: bool has_cl_khr_command_buffer = - checkDeviceForExtension(devices[deviceIndex], CL_KHR_COMMAND_BUFFER_EXTENSION_NAME); + checkDeviceForExtension(device, CL_KHR_COMMAND_BUFFER_EXTENSION_NAME); if (has_cl_khr_command_buffer) { printf("Device supports " CL_KHR_COMMAND_BUFFER_EXTENSION_NAME ".\n"); } else { @@ -91,7 +81,7 @@ int main( return -1; } bool has_cl_khr_command_buffer_mutable_dispatch = - checkDeviceForExtension(devices[deviceIndex], CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_NAME); + checkDeviceForExtension(device, CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_NAME); if (has_cl_khr_command_buffer_mutable_dispatch) { printf("Device supports " CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_NAME ".\n"); } else { @@ -101,7 +91,7 @@ int main( cl_mutable_dispatch_fields_khr mutableCaps = 0; clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_MUTABLE_DISPATCH_CAPABILITIES_KHR, sizeof(mutableCaps), &mutableCaps, @@ -114,8 +104,8 @@ int main( printf("Adding Command Buffer Assert? %s\n", noCmdBufAssert ? "No" : "Yes"); printf("Adding Command Assert? %s\n", noCmdAssert ? "No" : "Yes"); - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/16_floatatomics/main.cpp b/samples/16_floatatomics/main.cpp index ebd24c3d..d3f0dff8 100644 --- a/samples/16_floatatomics/main.cpp +++ b/samples/16_floatatomics/main.cpp @@ -81,10 +81,9 @@ static void PrintFloatAtomicCapabilities( } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -97,6 +96,7 @@ int main( { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("i", "iterations", "Iterations", iterations, &iterations); @@ -121,22 +121,11 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - // On some implementations, the feature test macros for float atomics are // only defined when compiling for OpenCL C 3.0 or newer. std::string buildOptions = "-cl-std=CL3.0"; @@ -146,29 +135,29 @@ int main( } else if (emulate) { printf("Forcing emulation.\n"); buildOptions += " -DEMULATE"; - } else if (!checkDeviceForExtension(devices[deviceIndex], CL_EXT_FLOAT_ATOMICS_EXTENSION_NAME)) { + } else if (!checkDeviceForExtension(device, CL_EXT_FLOAT_ATOMICS_EXTENSION_NAME)) { printf("Device does not support " CL_EXT_FLOAT_ATOMICS_EXTENSION_NAME ".\n"); } else { printf("Device supports " CL_EXT_FLOAT_ATOMICS_EXTENSION_NAME ".\n"); cl_device_fp_atomic_capabilities_ext spcaps = - devices[deviceIndex].getInfo(); + device.getInfo(); printf("CL_DEVICE_SINGLE_FP_ATOMIC_CAPABILITIES_EXT:\n"); PrintFloatAtomicCapabilities(spcaps); cl_device_fp_atomic_capabilities_ext dpcaps = - devices[deviceIndex].getInfo(); + device.getInfo(); printf("CL_DEVICE_DOUBLE_FP_ATOMIC_CAPABILITIES_EXT:\n"); PrintFloatAtomicCapabilities(dpcaps); cl_device_fp_atomic_capabilities_ext hpcaps = - devices[deviceIndex].getInfo(); + device.getInfo(); printf("CL_DEVICE_HALF_FP_ATOMIC_CAPABILITIES_EXT:\n"); PrintFloatAtomicCapabilities(hpcaps); } - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(buildOptions); diff --git a/samples/20_matrixexperiments-bf16/main.cpp b/samples/20_matrixexperiments-bf16/main.cpp index cb48f0bc..69d38f46 100644 --- a/samples/20_matrixexperiments-bf16/main.cpp +++ b/samples/20_matrixexperiments-bf16/main.cpp @@ -723,6 +723,7 @@ static void bfloat16_dpas_blockread_vnni_tiled( int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -734,6 +735,7 @@ int main(int argc, char** argv) { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("", "file", "Kernel File Name", fileName, &fileName); @@ -750,6 +752,7 @@ int main(int argc, char** argv) op.add("", "roundrobin", "Use Round Robin Scheduling", &roundRobin); op.add>("", "threshold", "Local Error Threshold", threshold, &threshold); op.add, popl::Attribute::advanced>("", "mask", "Test Mask", mask, &mask); + bool printUsage = false; try { op.parse(argc, argv); @@ -766,32 +769,11 @@ int main(int argc, char** argv) } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - if (deviceIndex >= devices.size()) { - printf("Requested device index is %d, but only %zu devices were found.\n", - deviceIndex, devices.size()); - return -1; - } - - cl::Device& device = devices[deviceIndex]; - printf("Running on device: %s (%uCUs, %uMHz)\n", - device.getInfo().c_str(), - device.getInfo(), - device.getInfo()); - printf("Running on drivers: %s\n", - device.getInfo().c_str()); - auto minSubGroupSize = findMinSubGroupSize(device); bool has_sg8 = supportsSubgroupSize(device, 8); diff --git a/samples/20_matrixexperiments-i8/main.cpp b/samples/20_matrixexperiments-i8/main.cpp index 98e0d8bd..18081e94 100644 --- a/samples/20_matrixexperiments-i8/main.cpp +++ b/samples/20_matrixexperiments-i8/main.cpp @@ -466,6 +466,7 @@ static void i8_dpas_blockread_vnni( int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -477,6 +478,7 @@ int main(int argc, char** argv) { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("", "file", "Kernel File Name", fileName, &fileName); @@ -492,6 +494,7 @@ int main(int argc, char** argv) op.add("", "skipinit", "Do Not Initialize Buffers", &skipinit); op.add("", "roundrobin", "Use Round Robin Scheduling", &roundRobin); op.add, popl::Attribute::advanced>("", "mask", "Test Mask", mask, &mask); + bool printUsage = false; try { op.parse(argc, argv); @@ -508,32 +511,11 @@ int main(int argc, char** argv) } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - if (deviceIndex >= devices.size()) { - printf("Requested device index is %d, but only %zu devices were found.\n", - deviceIndex, devices.size()); - return -1; - } - - cl::Device& device = devices[deviceIndex]; - printf("Running on device: %s (%uCUs, %uMHz)\n", - device.getInfo().c_str(), - device.getInfo(), - device.getInfo()); - printf("Running on drivers: %s\n", - device.getInfo().c_str()); - auto minSubGroupSize = findMinSubGroupSize(device); bool has_sg8 = supportsSubgroupSize(device, 8); diff --git a/samples/20_matrixexperiments-tf32/main.cpp b/samples/20_matrixexperiments-tf32/main.cpp index 0b89c5b3..21f3ba7d 100644 --- a/samples/20_matrixexperiments-tf32/main.cpp +++ b/samples/20_matrixexperiments-tf32/main.cpp @@ -490,6 +490,7 @@ static void tf32_dpas_blockread_rowmajor_tiled( int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -501,6 +502,7 @@ int main(int argc, char** argv) { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("", "file", "Kernel File Name", fileName, &fileName); @@ -517,6 +519,7 @@ int main(int argc, char** argv) op.add("", "roundrobin", "Use Round Robin Scheduling", &roundRobin); op.add>("", "threshold", "Local Error Threshold", threshold, &threshold); op.add, popl::Attribute::advanced>("", "mask", "Test Mask", mask, &mask); + bool printUsage = false; try { op.parse(argc, argv); @@ -533,32 +536,11 @@ int main(int argc, char** argv) } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - if (deviceIndex >= devices.size()) { - printf("Requested device index is %d, but only %zu devices were found.\n", - deviceIndex, devices.size()); - return -1; - } - - cl::Device& device = devices[deviceIndex]; - printf("Running on device: %s (%uCUs, %uMHz)\n", - device.getInfo().c_str(), - device.getInfo(), - device.getInfo()); - printf("Running on drivers: %s\n", - device.getInfo().c_str()); - auto minSubGroupSize = findMinSubGroupSize(device); bool emulate_tN16 = true; diff --git a/samples/images/00_enumimageformats/main.cpp b/samples/images/00_enumimageformats/main.cpp index 81d1f0ea..cf9fc7fb 100644 --- a/samples/images/00_enumimageformats/main.cpp +++ b/samples/images/00_enumimageformats/main.cpp @@ -130,15 +130,15 @@ const char* channel_type_to_string(cl_channel_type channel_type) } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); @@ -158,22 +158,11 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Querying platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Querying device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - const std::vector imageAccesses{ { CL_MEM_READ_ONLY, @@ -199,7 +188,7 @@ int main( } }; - cl::Context context{devices[deviceIndex]}; + cl::Context context{device}; for( auto& imageAccess : imageAccesses ) { diff --git a/samples/opengl/00_juliagl/main.cpp b/samples/opengl/00_juliagl/main.cpp index 2e8614dc..66a06596 100644 --- a/samples/opengl/00_juliagl/main.cpp +++ b/samples/opengl/00_juliagl/main.cpp @@ -104,8 +104,10 @@ kernel void Julia( write_only image2d_t dst, float cr, float ci ) // OpenGL context. // If any of these steps fail or if sharing is disabled then an OpenCL context // is created that does not support sharing. -cl::Context createContext(const cl::Platform& platform, const cl::Device& device) +cl::Context createContext(const cl::Device& device) { + const cl::Platform& platform = device.getInfo(); + const cl_context_properties props[] = { CL_CONTEXT_PLATFORM, (cl_context_properties)platform(), #if defined(WIN32) @@ -436,10 +438,9 @@ static void keyboard(GLFWwindow* pWindow, int key, int scancode, int action, int } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -449,6 +450,7 @@ int main( bool paused = false; popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add("", "hostcopy", "Do not use cl_khr_gl_sharing", &hostCopy); @@ -490,24 +492,13 @@ int main( pWindow = glfwCreateWindow((int)gwx, (int)gwy, "Julia Set with OpenGL", NULL, NULL); glfwMakeContextCurrent(pWindow); - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context = createContext(platforms[platformIndex], devices[deviceIndex]); - commandQueue = cl::CommandQueue{context, devices[deviceIndex]}; + cl::Context context = createContext(device); + commandQueue = cl::CommandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/opengl/01_nbodygl/main.cpp b/samples/opengl/01_nbodygl/main.cpp index 1241bfe2..0e75fa23 100644 --- a/samples/opengl/01_nbodygl/main.cpp +++ b/samples/opengl/01_nbodygl/main.cpp @@ -229,10 +229,9 @@ static void keyboard(GLFWwindow* pWindow, int key, int scancode, int action, int } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -240,6 +239,7 @@ int main( bool paused = false; popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("n", "numbodies", "Number of Bodies", numBodies, &numBodies); @@ -277,24 +277,13 @@ int main( pWindow = glfwCreateWindow((int)width, (int)height, "N-Body Simulation with OpenGL", NULL, NULL); glfwMakeContextCurrent(pWindow); - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - context = cl::Context(devices[deviceIndex]); - commandQueue = cl::CommandQueue{context, devices[deviceIndex]}; + context = cl::Context{device}; + commandQueue = cl::CommandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/opengl/02_sobelgl/main.cpp b/samples/opengl/02_sobelgl/main.cpp index f05fa39b..455031a6 100644 --- a/samples/opengl/02_sobelgl/main.cpp +++ b/samples/opengl/02_sobelgl/main.cpp @@ -139,8 +139,10 @@ kernel void Sobel( read_only image2d_t src, write_only image2d_t dst, sampler_t // OpenGL context. // If any of these steps fail or if sharing is disabled then an OpenCL context // is created that does not support sharing. -cl::Context createContext(const cl::Platform& platform, const cl::Device& device) +cl::Context createContext(const cl::Device& device) { + const cl::Platform& platform = device.getInfo(); + const cl_context_properties props[] = { CL_CONTEXT_PLATFORM, (cl_context_properties)platform(), #if defined(WIN32) @@ -483,10 +485,9 @@ static void keyboard(GLFWwindow* pWindow, int key, int scancode, int action, int } } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -496,6 +497,7 @@ int main( bool paused = false; popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add("", "hostcopy", "Do not use cl_khr_gl_sharing", &hostCopy); @@ -537,24 +539,13 @@ int main( pWindow = glfwCreateWindow((int)gwx, (int)gwy, "Sobel Filter with OpenGL", NULL, NULL); glfwMakeContextCurrent(pWindow); - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context = createContext(platforms[platformIndex], devices[deviceIndex]); - commandQueue = cl::CommandQueue{context, devices[deviceIndex]}; + cl::Context context = createContext(device); + commandQueue = cl::CommandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/svm/00_svmqueries/main.cpp b/samples/svm/00_svmqueries/main.cpp index 7e3da0b3..c567a1a6 100644 --- a/samples/svm/00_svmqueries/main.cpp +++ b/samples/svm/00_svmqueries/main.cpp @@ -20,9 +20,7 @@ void PrintSVMCaps( ( svmcaps & CL_DEVICE_SVM_ATOMICS ) ? "\n\t\tCL_DEVICE_SVM_ATOMICS" : "" ); } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { { popl::OptionParser op("Supported Options"); diff --git a/samples/svm/100_cgsvmhelloworld/main.cpp b/samples/svm/100_cgsvmhelloworld/main.cpp index 5a341684..3a147ece 100644 --- a/samples/svm/100_cgsvmhelloworld/main.cpp +++ b/samples/svm/100_cgsvmhelloworld/main.cpp @@ -20,17 +20,18 @@ kernel void CopyBuffer( global uint* dst, global uint* src ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); + bool printUsage = false; try { op.parse(argc, argv); @@ -41,29 +42,18 @@ int main( if (printUsage || !op.unknown_options().empty() || !op.non_option_args().empty()) { fprintf(stderr, - "Usage: dmemhelloworld [options]\n" + "Usage: cgsvmhelloworld [options]\n" "%s", op.help().c_str()); return -1; } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl_device_svm_capabilities svmcaps = devices[deviceIndex].getInfo(); + cl_device_svm_capabilities svmcaps = device.getInfo(); if( svmcaps & CL_DEVICE_SVM_COARSE_GRAIN_BUFFER ) { printf("Device supports CL_DEVICE_SVM_COARSE_GRAIN_BUFFER.\n"); } else { @@ -71,8 +61,8 @@ int main( return -1; } - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/svm/101_cgsvmlinkedlist/main.cpp b/samples/svm/101_cgsvmlinkedlist/main.cpp index ce2961be..c3a3a209 100644 --- a/samples/svm/101_cgsvmlinkedlist/main.cpp +++ b/samples/svm/101_cgsvmlinkedlist/main.cpp @@ -166,15 +166,15 @@ void cleanup( cl::Context& context ) d_head = nullptr; } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("n", "nodes", "Number of Linked List Nodes", numNodes, &numNodes); @@ -189,29 +189,18 @@ int main( if (printUsage || !op.unknown_options().empty() || !op.non_option_args().empty()) { fprintf(stderr, - "Usage: dmemlinkedlist [options]\n" + "Usage: cgsvmlinkedlist [options]\n" "%s", op.help().c_str()); return -1; } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl_device_svm_capabilities svmcaps = devices[deviceIndex].getInfo(); + cl_device_svm_capabilities svmcaps = device.getInfo(); if( svmcaps & CL_DEVICE_SVM_COARSE_GRAIN_BUFFER ) { printf("Device supports CL_DEVICE_SVM_COARSE_GRAIN_BUFFER.\n"); } else { @@ -219,8 +208,8 @@ int main( return -1; } - cl::Context context{devices[deviceIndex]}; - commandQueue = cl::CommandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + commandQueue = cl::CommandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); @@ -235,7 +224,7 @@ int main( #endif kernel = cl::Kernel{ program, "WalkLinkedList" }; - init( context, devices[deviceIndex] ); + init( context, device ); go(); checkResults(); diff --git a/samples/svm/200_fgsvmhelloworld/main.cpp b/samples/svm/200_fgsvmhelloworld/main.cpp index 07b2849e..314b3c9d 100644 --- a/samples/svm/200_fgsvmhelloworld/main.cpp +++ b/samples/svm/200_fgsvmhelloworld/main.cpp @@ -20,17 +20,18 @@ kernel void CopyBuffer( global uint* dst, global uint* src ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); + bool printUsage = false; try { op.parse(argc, argv); @@ -41,29 +42,18 @@ int main( if (printUsage || !op.unknown_options().empty() || !op.non_option_args().empty()) { fprintf(stderr, - "Usage: dmemhelloworld [options]\n" + "Usage: fgsvmhelloworld [options]\n" "%s", op.help().c_str()); return -1; } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl_device_svm_capabilities svmcaps = devices[deviceIndex].getInfo(); + cl_device_svm_capabilities svmcaps = device.getInfo(); if( svmcaps & CL_DEVICE_SVM_FINE_GRAIN_BUFFER ) { printf("Device supports CL_DEVICE_SVM_FINE_GRAIN_BUFFER.\n"); } else { @@ -71,8 +61,8 @@ int main( return -1; } - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/svm/201_fgsvmlinkedlist/main.cpp b/samples/svm/201_fgsvmlinkedlist/main.cpp index 657bc2d9..f4f51430 100644 --- a/samples/svm/201_fgsvmlinkedlist/main.cpp +++ b/samples/svm/201_fgsvmlinkedlist/main.cpp @@ -160,15 +160,15 @@ void cleanup( cl::Context& context ) h_head = nullptr; } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("n", "nodes", "Number of Linked List Nodes", numNodes, &numNodes); @@ -183,29 +183,18 @@ int main( if (printUsage || !op.unknown_options().empty() || !op.non_option_args().empty()) { fprintf(stderr, - "Usage: dmemlinkedlist [options]\n" + "Usage: fgsvmlinkedlist [options]\n" "%s", op.help().c_str()); return -1; } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl_device_svm_capabilities svmcaps = devices[deviceIndex].getInfo(); + cl_device_svm_capabilities svmcaps = device.getInfo(); if( svmcaps & CL_DEVICE_SVM_FINE_GRAIN_BUFFER ) { printf("Device supports CL_DEVICE_SVM_FINE_GRAIN_BUFFER.\n"); } else { @@ -213,8 +202,8 @@ int main( return -1; } - cl::Context context{devices[deviceIndex]}; - commandQueue = cl::CommandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + commandQueue = cl::CommandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); @@ -229,7 +218,7 @@ int main( #endif kernel = cl::Kernel{ program, "WalkLinkedList" }; - init( context, devices[deviceIndex] ); + init( context, device ); go(); checkResults(); diff --git a/samples/usm/00_usmqueries/main.cpp b/samples/usm/00_usmqueries/main.cpp index 9c06170a..510c6245 100644 --- a/samples/usm/00_usmqueries/main.cpp +++ b/samples/usm/00_usmqueries/main.cpp @@ -20,9 +20,7 @@ void PrintUSMCaps( ( usmcaps & CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL ) ? "\n\t\tCL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL" : "" ); } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { { popl::OptionParser op("Supported Options"); diff --git a/samples/usm/01_usmmeminfo/main.cpp b/samples/usm/01_usmmeminfo/main.cpp index 11d994e0..c197dcd4 100644 --- a/samples/usm/01_usmmeminfo/main.cpp +++ b/samples/usm/01_usmmeminfo/main.cpp @@ -82,17 +82,18 @@ usm_type_to_string( cl_unified_shared_memory_type_intel type ) return "***Unknown USM Type***"; } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { int platformIndex = 0; int deviceIndex = 0; + bool verbose = false; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); + bool printUsage = false; try { op.parse(argc, argv); @@ -109,29 +110,18 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; + cl::Context context{device}; cl_device_unified_shared_memory_capabilities_intel usmcaps = 0; cl_int errCode; errCode = clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_HOST_MEM_CAPABILITIES_INTEL, sizeof(usmcaps), &usmcaps, @@ -197,7 +187,7 @@ int main( } errCode = clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_DEVICE_MEM_CAPABILITIES_INTEL, sizeof(usmcaps), &usmcaps, @@ -206,11 +196,11 @@ int main( { printf("\nTesting Device Allocations:\n"); printf("Associated Device is: %p (%s)\n", - devices[deviceIndex](), - devices[deviceIndex].getInfo().c_str()); + device(), + device.getInfo().c_str()); char* ptr0 = (char*)clDeviceMemAllocINTEL( context(), - devices[deviceIndex](), + device(), nullptr, 16, 0, @@ -218,7 +208,7 @@ int main( printf("Allocated Device pointer 0: ptr = %p\n", ptr0); char* ptr1 = (char*)clDeviceMemAllocINTEL( context(), - devices[deviceIndex](), + device(), nullptr, 16, 0, @@ -268,7 +258,7 @@ int main( } errCode = clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL, sizeof(usmcaps), &usmcaps, @@ -277,11 +267,11 @@ int main( { printf("\nTesting Shared Allocations:\n"); printf("Associated Device is: %p (%s)\n", - devices[deviceIndex](), - devices[deviceIndex].getInfo().c_str()); + device(), + device.getInfo().c_str()); char* ptr0 = (char*)clSharedMemAllocINTEL( context(), - devices[deviceIndex](), + device(), nullptr, 16, 0, @@ -289,7 +279,7 @@ int main( printf("Allocated Shared pointer 0: ptr = %p\n", ptr0); char* ptr1 = (char*)clSharedMemAllocINTEL( context(), - devices[deviceIndex](), + device(), nullptr, 16, 0, diff --git a/samples/usm/100_dmemhelloworld/main.cpp b/samples/usm/100_dmemhelloworld/main.cpp index 266bb96a..94ec3400 100644 --- a/samples/usm/100_dmemhelloworld/main.cpp +++ b/samples/usm/100_dmemhelloworld/main.cpp @@ -20,17 +20,18 @@ kernel void CopyBuffer( global uint* dst, global uint* src ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { int platformIndex = 0; int deviceIndex = 0; + bool verbose = false; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); + bool printUsage = false; try { op.parse(argc, argv); @@ -47,24 +48,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); @@ -74,14 +64,14 @@ int main( cl_uint* d_src = (cl_uint*)clDeviceMemAllocINTEL( context(), - devices[deviceIndex](), + device(), nullptr, gwx * sizeof(cl_uint), 0, nullptr ); cl_uint* d_dst = (cl_uint*)clDeviceMemAllocINTEL( context(), - devices[deviceIndex](), + device(), nullptr, gwx * sizeof(cl_uint), 0, diff --git a/samples/usm/101_dmemlinkedlist/main.cpp b/samples/usm/101_dmemlinkedlist/main.cpp index 462f9957..e3c1875f 100644 --- a/samples/usm/101_dmemlinkedlist/main.cpp +++ b/samples/usm/101_dmemlinkedlist/main.cpp @@ -182,15 +182,15 @@ void cleanup( cl::Context& context ) d_head = nullptr; } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { int platformIndex = 0; int deviceIndex = 0; + bool verbose = false; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("n", "nodes", "Number of Linked List Nodes", numNodes, &numNodes); @@ -211,24 +211,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - commandQueue = cl::CommandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + commandQueue = cl::CommandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); @@ -249,7 +238,7 @@ int main( sizeof(enableIndirectAccess), &enableIndirectAccess ); - init( context, devices[deviceIndex] ); + init( context, device ); go(); checkResults(); diff --git a/samples/usm/200_hmemhelloworld/main.cpp b/samples/usm/200_hmemhelloworld/main.cpp index 4081d4d9..ab35d0d3 100644 --- a/samples/usm/200_hmemhelloworld/main.cpp +++ b/samples/usm/200_hmemhelloworld/main.cpp @@ -20,17 +20,18 @@ kernel void CopyBuffer( global uint* dst, global uint* src ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { int platformIndex = 0; int deviceIndex = 0; + bool verbose = false; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); + bool printUsage = false; try { op.parse(argc, argv); @@ -47,24 +48,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/usm/201_hmemlinkedlist/main.cpp b/samples/usm/201_hmemlinkedlist/main.cpp index 99a4a063..fda89a91 100644 --- a/samples/usm/201_hmemlinkedlist/main.cpp +++ b/samples/usm/201_hmemlinkedlist/main.cpp @@ -162,15 +162,15 @@ void cleanup( cl::Context& context ) h_head = nullptr; } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("n", "nodes", "Number of Linked List Nodes", numNodes, &numNodes); @@ -191,24 +191,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - commandQueue = cl::CommandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + commandQueue = cl::CommandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); @@ -229,7 +218,7 @@ int main( sizeof(enableIndirectAccess), &enableIndirectAccess ); - init( context, devices[deviceIndex] ); + init( context, device ); go(); checkResults(); diff --git a/samples/usm/300_smemhelloworld/main.cpp b/samples/usm/300_smemhelloworld/main.cpp index 86fffae1..e66900af 100644 --- a/samples/usm/300_smemhelloworld/main.cpp +++ b/samples/usm/300_smemhelloworld/main.cpp @@ -20,17 +20,18 @@ kernel void CopyBuffer( global uint* dst, global uint* src ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); + bool printUsage = false; try { op.parse(argc, argv); @@ -47,24 +48,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); @@ -72,14 +62,14 @@ int main( cl_uint* s_src = (cl_uint*)clSharedMemAllocINTEL( context(), - devices[deviceIndex](), + device(), nullptr, gwx * sizeof(cl_uint), 0, nullptr ); cl_uint* s_dst = (cl_uint*)clSharedMemAllocINTEL( context(), - devices[deviceIndex](), + device(), nullptr, gwx * sizeof(cl_uint), 0, diff --git a/samples/usm/301_smemlinkedlist/main.cpp b/samples/usm/301_smemlinkedlist/main.cpp index a469e341..6954af3b 100644 --- a/samples/usm/301_smemlinkedlist/main.cpp +++ b/samples/usm/301_smemlinkedlist/main.cpp @@ -164,15 +164,15 @@ void cleanup( cl::Context& context ) s_head = nullptr; } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add>("n", "nodes", "Number of Linked List Nodes", numNodes, &numNodes); @@ -193,24 +193,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - commandQueue = cl::CommandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + commandQueue = cl::CommandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); @@ -231,7 +220,7 @@ int main( sizeof(enableIndirectAccess), &enableIndirectAccess ); - init( context, devices[deviceIndex] ); + init( context, device ); go(); checkResults(); diff --git a/samples/usm/310_usmmigratemem/main.cpp b/samples/usm/310_usmmigratemem/main.cpp index e1008c70..ed3ea55d 100644 --- a/samples/usm/310_usmmigratemem/main.cpp +++ b/samples/usm/310_usmmigratemem/main.cpp @@ -20,17 +20,18 @@ kernel void CopyBuffer( global uint* dst, global uint* src ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); + bool printUsage = false; try { op.parse(argc, argv); @@ -47,24 +48,13 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); @@ -72,14 +62,14 @@ int main( cl_uint* s_src = (cl_uint*)clSharedMemAllocINTEL( context(), - devices[deviceIndex](), + device(), nullptr, gwx * sizeof(cl_uint), 0, nullptr ); cl_uint* s_dst = (cl_uint*)clSharedMemAllocINTEL( context(), - devices[deviceIndex](), + device(), nullptr, gwx * sizeof(cl_uint), 0, diff --git a/samples/usm/400_sysmemhelloworld/main.cpp b/samples/usm/400_sysmemhelloworld/main.cpp index 806722af..9cf6e9a7 100644 --- a/samples/usm/400_sysmemhelloworld/main.cpp +++ b/samples/usm/400_sysmemhelloworld/main.cpp @@ -20,17 +20,18 @@ kernel void CopyBuffer( global uint* dst, global uint* src ) } )CLC"; -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; { popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); + bool printUsage = false; try { op.parse(argc, argv); @@ -47,27 +48,16 @@ int main( } } - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { return -1; } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); - // Check that this device supports system USM. // For this sample we only require ACCESS capabilities. cl_device_unified_shared_memory_capabilities_intel usmcaps = 0; clGetDeviceInfo( - devices[deviceIndex](), + device(), CL_DEVICE_SHARED_SYSTEM_MEM_CAPABILITIES_INTEL, sizeof(usmcaps), &usmcaps, @@ -77,8 +67,8 @@ int main( return -1; } - cl::Context context{devices[deviceIndex]}; - cl::CommandQueue commandQueue{context, devices[deviceIndex]}; + cl::Context context{device}; + cl::CommandQueue commandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/vulkan/00_juliavk/main.cpp b/samples/vulkan/00_juliavk/main.cpp index 27a76426..76bbbf8f 100644 --- a/samples/vulkan/00_juliavk/main.cpp +++ b/samples/vulkan/00_juliavk/main.cpp @@ -222,6 +222,7 @@ class JuliaVKApplication { PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR = NULL; #endif + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -252,6 +253,7 @@ class JuliaVKApplication { bool paused = false; popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add("", "hostcopy", "Do not use cl_khr_external_memory", &hostCopy); @@ -300,30 +302,21 @@ class JuliaVKApplication { } void initOpenCL() { - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { - throw std::runtime_error("couldn't get OpenCL platform"); + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { + throw std::runtime_error("couldn't setup OpenCL device"); } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); + checkOpenCLExternalMemorySupport(device); + checkOpenCLExternalSemaphoreSupport(device); - checkOpenCLExternalMemorySupport(devices[deviceIndex]); - checkOpenCLExternalSemaphoreSupport(devices[deviceIndex]); + const cl::Platform& platform = device.getInfo(); if (useExternalMemory) { clEnqueueAcquireExternalMemObjectsKHR = (clEnqueueAcquireExternalMemObjectsKHR_fn) - clGetExtensionFunctionAddressForPlatform( platforms[platformIndex](), "clEnqueueAcquireExternalMemObjectsKHR"); + clGetExtensionFunctionAddressForPlatform( platform(), "clEnqueueAcquireExternalMemObjectsKHR"); clEnqueueReleaseExternalMemObjectsKHR = (clEnqueueReleaseExternalMemObjectsKHR_fn) - clGetExtensionFunctionAddressForPlatform( platforms[platformIndex](), "clEnqueueReleaseExternalMemObjectsKHR"); + clGetExtensionFunctionAddressForPlatform( platform(), "clEnqueueReleaseExternalMemObjectsKHR"); if (clEnqueueAcquireExternalMemObjectsKHR == NULL || clEnqueueReleaseExternalMemObjectsKHR == NULL) { throw std::runtime_error("couldn't get function pointers for cl_khr_external_memory"); @@ -332,11 +325,11 @@ class JuliaVKApplication { if (useExternalSemaphore) { clCreateSemaphoreWithPropertiesKHR = (clCreateSemaphoreWithPropertiesKHR_fn) - clGetExtensionFunctionAddressForPlatform(platforms[platformIndex](), "clCreateSemaphoreWithPropertiesKHR"); + clGetExtensionFunctionAddressForPlatform(platform(), "clCreateSemaphoreWithPropertiesKHR"); clEnqueueSignalSemaphoresKHR = (clEnqueueSignalSemaphoresKHR_fn) - clGetExtensionFunctionAddressForPlatform(platforms[platformIndex](), "clEnqueueSignalSemaphoresKHR"); + clGetExtensionFunctionAddressForPlatform(platform(), "clEnqueueSignalSemaphoresKHR"); clReleaseSemaphoreKHR = (clReleaseSemaphoreKHR_fn) - clGetExtensionFunctionAddressForPlatform(platforms[platformIndex](), "clReleaseSemaphoreKHR"); + clGetExtensionFunctionAddressForPlatform(platform(), "clReleaseSemaphoreKHR"); if (clCreateSemaphoreWithPropertiesKHR == NULL || clEnqueueSignalSemaphoresKHR == NULL || clReleaseSemaphoreKHR == NULL) { @@ -344,8 +337,8 @@ class JuliaVKApplication { } } - context = cl::Context{devices[deviceIndex]}; - commandQueue = cl::CommandQueue{context, devices[deviceIndex]}; + context = cl::Context{device}; + commandQueue = cl::CommandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/samples/vulkan/01_nbodyvk/main.cpp b/samples/vulkan/01_nbodyvk/main.cpp index a18586d4..f2a41621 100644 --- a/samples/vulkan/01_nbodyvk/main.cpp +++ b/samples/vulkan/01_nbodyvk/main.cpp @@ -210,6 +210,7 @@ class NBodyVKApplication { PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR = NULL; #endif + bool verbose = false; int platformIndex = 0; int deviceIndex = 0; @@ -217,6 +218,7 @@ class NBodyVKApplication { bool useExternalSemaphore = true; cl_external_memory_handle_type_khr externalMemType = 0; + cl::Context context; cl::CommandQueue commandQueue; cl::Kernel kernel; @@ -240,6 +242,7 @@ class NBodyVKApplication { bool paused = false; popl::OptionParser op("Supported Options"); + op.add("v", "verbose", "Verbose Output", &verbose); op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); op.add("", "hostcopy", "Do not use cl_khr_external_memory", &hostCopy); @@ -287,30 +290,21 @@ class NBodyVKApplication { } void initOpenCL() { - std::vector platforms; - cl::Platform::get(&platforms); - - if (!checkPlatformIndex(platforms, platformIndex)) { - throw std::runtime_error("couldn't get OpenCL platform"); + cl::Device device; + if (!setupDevice(device, platformIndex, deviceIndex, verbose)) { + throw std::runtime_error("couldn't setup OpenCL device"); } - printf("Running on platform: %s\n", - platforms[platformIndex].getInfo().c_str() ); - - std::vector devices; - platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices); - - printf("Running on device: %s\n", - devices[deviceIndex].getInfo().c_str() ); + checkOpenCLExternalMemorySupport(device); + checkOpenCLExternalSemaphoreSupport(device); - checkOpenCLExternalMemorySupport(devices[deviceIndex]); - checkOpenCLExternalSemaphoreSupport(devices[deviceIndex]); + const cl::Platform& platform = device.getInfo(); if (useExternalMemory) { clEnqueueAcquireExternalMemObjectsKHR = (clEnqueueAcquireExternalMemObjectsKHR_fn) - clGetExtensionFunctionAddressForPlatform( platforms[platformIndex](), "clEnqueueAcquireExternalMemObjectsKHR"); + clGetExtensionFunctionAddressForPlatform( platform(), "clEnqueueAcquireExternalMemObjectsKHR"); clEnqueueReleaseExternalMemObjectsKHR = (clEnqueueReleaseExternalMemObjectsKHR_fn) - clGetExtensionFunctionAddressForPlatform( platforms[platformIndex](), "clEnqueueReleaseExternalMemObjectsKHR"); + clGetExtensionFunctionAddressForPlatform( platform(), "clEnqueueReleaseExternalMemObjectsKHR"); if (clEnqueueAcquireExternalMemObjectsKHR == NULL || clEnqueueReleaseExternalMemObjectsKHR == NULL) { throw std::runtime_error("couldn't get function pointers for cl_khr_external_memory"); @@ -319,11 +313,11 @@ class NBodyVKApplication { if (useExternalSemaphore) { clCreateSemaphoreWithPropertiesKHR = (clCreateSemaphoreWithPropertiesKHR_fn) - clGetExtensionFunctionAddressForPlatform(platforms[platformIndex](), "clCreateSemaphoreWithPropertiesKHR"); + clGetExtensionFunctionAddressForPlatform(platform(), "clCreateSemaphoreWithPropertiesKHR"); clEnqueueSignalSemaphoresKHR = (clEnqueueSignalSemaphoresKHR_fn) - clGetExtensionFunctionAddressForPlatform(platforms[platformIndex](), "clEnqueueSignalSemaphoresKHR"); + clGetExtensionFunctionAddressForPlatform(platform(), "clEnqueueSignalSemaphoresKHR"); clReleaseSemaphoreKHR = (clReleaseSemaphoreKHR_fn) - clGetExtensionFunctionAddressForPlatform(platforms[platformIndex](), "clReleaseSemaphoreKHR"); + clGetExtensionFunctionAddressForPlatform(platform(), "clReleaseSemaphoreKHR"); if (clCreateSemaphoreWithPropertiesKHR == NULL || clEnqueueSignalSemaphoresKHR == NULL || clReleaseSemaphoreKHR == NULL) { @@ -331,8 +325,8 @@ class NBodyVKApplication { } } - context = cl::Context{devices[deviceIndex]}; - commandQueue = cl::CommandQueue{context, devices[deviceIndex]}; + context = cl::Context{device}; + commandQueue = cl::CommandQueue{context, device}; cl::Program program{ context, kernelString }; program.build(); diff --git a/tutorials/interceptlayer/main-part1solution.cpp b/tutorials/interceptlayer/main-part1solution.cpp index c61836ea..dc8196cf 100644 --- a/tutorials/interceptlayer/main-part1solution.cpp +++ b/tutorials/interceptlayer/main-part1solution.cpp @@ -159,9 +159,7 @@ static void checkResults() commandQueue.finish(); } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { int platformIndex = 0; int deviceIndex = 0; diff --git a/tutorials/interceptlayer/main-part2solution.cpp b/tutorials/interceptlayer/main-part2solution.cpp index 2c506220..194e6be4 100644 --- a/tutorials/interceptlayer/main-part2solution.cpp +++ b/tutorials/interceptlayer/main-part2solution.cpp @@ -159,9 +159,7 @@ static void checkResults() commandQueue.finish(); } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { int platformIndex = 0; int deviceIndex = 0; diff --git a/tutorials/interceptlayer/main-part3solution.cpp b/tutorials/interceptlayer/main-part3solution.cpp index 4163a0b2..eb8bd6b0 100644 --- a/tutorials/interceptlayer/main-part3solution.cpp +++ b/tutorials/interceptlayer/main-part3solution.cpp @@ -158,9 +158,7 @@ static void checkResults() commandQueue.finish(); } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { int platformIndex = 0; int deviceIndex = 0; diff --git a/tutorials/interceptlayer/main-part4solution.cpp b/tutorials/interceptlayer/main-part4solution.cpp index b44afc60..03433f4c 100644 --- a/tutorials/interceptlayer/main-part4solution.cpp +++ b/tutorials/interceptlayer/main-part4solution.cpp @@ -154,9 +154,7 @@ static void checkResults() commandQueue.finish(); } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { int platformIndex = 0; int deviceIndex = 0; diff --git a/tutorials/interceptlayer/main-part5solution.cpp b/tutorials/interceptlayer/main-part5solution.cpp index ece8ec0d..b84fc7c6 100644 --- a/tutorials/interceptlayer/main-part5solution.cpp +++ b/tutorials/interceptlayer/main-part5solution.cpp @@ -154,9 +154,7 @@ static void checkResults() commandQueue.finish(); } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { int platformIndex = 0; int deviceIndex = 0; diff --git a/tutorials/interceptlayer/main-start.cpp b/tutorials/interceptlayer/main-start.cpp index d439509a..b501064e 100644 --- a/tutorials/interceptlayer/main-start.cpp +++ b/tutorials/interceptlayer/main-start.cpp @@ -159,9 +159,7 @@ static void checkResults() commandQueue.finish(); } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { int platformIndex = 0; int deviceIndex = 0; diff --git a/tutorials/interceptlayer/main.cpp b/tutorials/interceptlayer/main.cpp index d439509a..b501064e 100644 --- a/tutorials/interceptlayer/main.cpp +++ b/tutorials/interceptlayer/main.cpp @@ -159,9 +159,7 @@ static void checkResults() commandQueue.finish(); } -int main( - int argc, - char** argv ) +int main(int argc, char** argv) { int platformIndex = 0; int deviceIndex = 0;