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.