Evaluate kernel on GPU
feval(KERN, x1, ..., xn)
[y1, ..., ym] = feval(KERN, x1, ..., xn)
feval(KERN, x1, ..., xn) evaluates the CUDA kernel
KERN with the given arguments x1, ..., xn.
The number of input arguments, n, must equal the value of the
NumRHSArguments property of KERN, and
their types must match the description in the ArgumentTypes
property of KERN. The input data can be regular MATLAB data, GPU
arrays, or a mixture of the two.
[y1, ..., ym] = feval(KERN, x1, ..., xn) returns multiple
output arguments from the evaluation of the kernel. Each output argument corresponds
to the value of the non-const pointer inputs to the CUDA kernel after it has
executed. The output from feval running a kernel on the GPU is
always gpuArray type, even if all the inputs are data from the
MATLAB workspace. The number of output arguments, m, must not
exceed the value of the MaxNumLHSArguments property of
KERN.
If the CUDA kernel within a CU file has the following signature:
void myKernel(const float * pIn, float * pInOut1, float * pInOut2)
The corresponding kernel object in MATLAB then has the properties:
MaxNumLHSArguments: 2
NumRHSArguments: 3
ArgumentTypes: {'in single vector' ...
'inout single vector' 'inout single vector'}You can use feval on this code’s kernel
(KERN) with the syntax:
[y1, y2] = feval(KERN, x1, x2, x3)
The three input arguments, x1, x2, and
x3, correspond to the three arguments that are passed into
the CUDA function. The output arguments, y1 and
y2, are gpuArray types, and correspond to the values of
pInOut1 and pInOut2 after the CUDA kernel
has executed.