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 4923520
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 0 deletions.
6 changes: 6 additions & 0 deletions samples/99_svmunmap/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
add_opencl_sample(
TEST
NUMBER 99
TARGET svmunmap
VERSION 200
SOURCES main.cpp)
87 changes: 87 additions & 0 deletions samples/99_svmunmap/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/*
// Copyright (c) 2019-2021 Ben Ashbaugh
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
*/

#include <popl/popl.hpp>

#include <CL/opencl.hpp>

const size_t gwx = 1024*1024;

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 4923520

Please sign in to comment.