Skip to content

Commit

Permalink
add an SVM unmap test
Browse files Browse the repository at this point in the history
  • Loading branch information
bashbaug committed Aug 2, 2023
1 parent a434b4e commit 3a82dd0
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 0 deletions.
10 changes: 10 additions & 0 deletions samples/99_svmunmap/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Copyright (c) 2023 Ben Ashbaugh
#
# SPDX-License-Identifier: MIT

add_opencl_sample(
TEST
NUMBER 99
TARGET svmunmap
VERSION 200
SOURCES main.cpp)
67 changes: 67 additions & 0 deletions samples/99_svmunmap/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/*
// Copyright (c) 2023 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 = cl::CommandQueue{context, devices[deviceIndex]};

void* ptr = clSVMAlloc(context(), CL_MEM_READ_WRITE, 1024, 0);
printf("clSVMAlloc returned %p\n", ptr);

cl_event event = nullptr;
cl_int errorCode = clEnqueueSVMUnmap(
commandQueue(),
ptr,
0,
nullptr,
&event);
printf("clEnqueueSVMUnmap returned %d, event is %p.\n", errorCode, event);
clReleaseEvent(event);

clSVMFree(context(), ptr);
return 0;
}
2 changes: 2 additions & 0 deletions samples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ add_subdirectory( 06_ndrangekernelfromfile )

add_subdirectory( 10_queueexperiments )

add_subdirectory( 99_svmunmap )

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 3a82dd0

Please sign in to comment.