Main Content


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-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.


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