To set a SVM pointer as the argument value for a specific argument of a kernel, call the function
cl_int clSetKernelArgSVMPointer( cl_kernel kernel, cl_uint arg_index, const void* arg_value);
kernel is a valid kernel object.
arg_index is the argument index. Arguments to the kernel are referred by indices that go from 0 for the leftmost argument to n - 1, where n is the total number of arguments declared by a kernel.
arg_value is the SVM pointer that should be used as the argument value for argument specified by arg_index. The SVM pointer specified is the value used by all API calls that enqueue kernel (clEnqueueNDRangeKernel and clEnqueueTask) until the argument value is changed by a call to clSetKernelArgSVMPointer for kernel. The SVM pointer can only be used for arguments that are declared to be a pointer to
constantmemory. The SVM pointer value must be aligned according to the arguments type. For example, if the argument is declared to be
global float4 *p, the SVM pointer value passed for
pmust be at a minimum aligned to a
float4. The SVM pointer value specified as the argument value can be the pointer returned by clSVMAlloc or can be a pointer offset into the SVM region.
CL_SUCCESS if the function was executed
Otherwise, it returns one of the following errors:
CL_INVALID_KERNELif kernel is not a valid kernel object.
CL_INVALID_ARG_INDEXif arg_index is not a valid argument index.
CL_INVALID_ARG_VALUEif arg_value specified is not a valid value.
CL_OUT_OF_RESOURCESif there is a failure to allocate resources required by the OpenCL implementation on the device.
CL_OUT_OF_HOST_MEMORYif there is a failure to allocate resources required by the OpenCL implementation on the host.
For more information, see the OpenCL Specification
This page is extracted from the OpenCL Specification. Fixes and changes should be made to the Specification, not directly.
Copyright (c) 2014-2020 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.