Skip to content

Commit

Permalink
add a tester that releases a USE_HOST_PTR buffer without mapping
Browse files Browse the repository at this point in the history
Does the contents of the host pointer get updated, or not?
  • Loading branch information
bashbaug committed Jul 30, 2024
1 parent 8605458 commit f008cc8
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 0 deletions.
10 changes: 10 additions & 0 deletions samples/99_ruhptester/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)
71 changes: 71 additions & 0 deletions samples/99_ruhptester/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
// Copyright (c) 2019-2024 Ben Ashbaugh
//
// SPDX-License-Identifier: MIT
*/

#include <popl/popl.hpp>

#include <CL/opencl.hpp>

int main(
int argc,
char** argv )
{
int platformIndex = 0;
int deviceIndex = 0;

{
popl::OptionParser op("Supported Options");
op.add<popl::Value<int>>("p", "platform", "Platform Index", platformIndex, &platformIndex);
op.add<popl::Value<int>>("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<cl::Platform> platforms;
cl::Platform::get(&platforms);

printf("Running on platform: %s\n",
platforms[platformIndex].getInfo<CL_PLATFORM_NAME>().c_str() );

std::vector<cl::Device> devices;
platforms[platformIndex].getDevices(CL_DEVICE_TYPE_ALL, &devices);

printf("Running on device: %s\n",
devices[deviceIndex].getInfo<CL_DEVICE_NAME>().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;
}
2 changes: 2 additions & 0 deletions samples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.")
Expand Down

0 comments on commit f008cc8

Please sign in to comment.