diff --git a/samples/99_ruhptester/CMakeLists.txt b/samples/99_ruhptester/CMakeLists.txt new file mode 100644 index 0000000..b6a3a95 --- /dev/null +++ b/samples/99_ruhptester/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (c) 2024 Ben Ashbaugh +# +# SPDX-License-Identifier: MIT + +add_opencl_sample( + TEST + NUMBER 99 + TARGET ruhptester + VERSION 120 + SOURCES main.cpp) diff --git a/samples/99_ruhptester/main.cpp b/samples/99_ruhptester/main.cpp new file mode 100644 index 0000000..0d701d7 --- /dev/null +++ b/samples/99_ruhptester/main.cpp @@ -0,0 +1,71 @@ +/* +// Copyright (c) 2019-2024 Ben Ashbaugh +// +// SPDX-License-Identifier: MIT +*/ + +#include + +#include + +int main( + int argc, + char** argv ) +{ + int platformIndex = 0; + int deviceIndex = 0; + + { + popl::OptionParser op("Supported Options"); + op.add>("p", "platform", "Platform Index", platformIndex, &platformIndex); + op.add>("d", "device", "Device Index", deviceIndex, &deviceIndex); + + bool printUsage = false; + try { + op.parse(argc, argv); + } catch (std::exception& e) { + fprintf(stderr, "Error: %s\n\n", e.what()); + printUsage = true; + } + + if (printUsage || !op.unknown_options().empty() || !op.non_option_args().empty()) { + fprintf(stderr, + "Usage: copybuffer [options]\n" + "%s", op.help().c_str()); + return -1; + } + } + + std::vector platforms; + cl::Platform::get(&platforms); + + 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_uint i = 0; + cl_mem buf = clCreateBuffer( + context(), CL_MEM_USE_HOST_PTR, sizeof(i), &i, + nullptr); + + cl_uint pattern = 1; + clEnqueueFillBuffer( + commandQueue(), buf, &pattern, sizeof(pattern), + 0, sizeof(pattern), 0, nullptr, nullptr); + clFinish(commandQueue()); + + clReleaseMemObject(buf); + buf = nullptr; + + printf("i is now: %u\n", i); + + return 0; +} diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index f0439d7..7c72f76 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -76,6 +76,8 @@ add_subdirectory( 06_ndrangekernelfromfile ) add_subdirectory( 10_queueexperiments ) +add_subdirectory( 99_ruhptester ) + set(BUILD_EXTENSION_SAMPLES TRUE) if(NOT TARGET OpenCLExt) message(STATUS "Skipping Extension Samples - OpenCL Extension Loader is not found.")