feval
Evaluate kernel on GPU
Syntax
feval(KERN, x1, ..., xn)
[y1, ..., ym] = feval(KERN, x1, ..., xn)
Description
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-constant pointer inputs to the CUDA kernel after it has
executed. The output from feval
running a kernel on the GPU is
always a gpuArray
, even if all the inputs are stored in host
memory. The number of output arguments, m
, must not exceed the
value of the MaxNumLHSArguments
property of
KERN
.
Examples
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
objects, and correspond
to the values of pInOut1
and pInOut2
after the
CUDA kernel has executed.
Version History
Introduced in R2010b