This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Compile MEX-function for GPU computation


mexcuda filenames
mexcuda option1 ... optionN filenames



mexcuda filenames compiles and links source files into a shared library called a MEX-file, executable from within MATLAB®. The function compiles MEX-files written using the CUDA® C++ framework with the NVIDIA® nvcc compiler, allowing the files to define and launch GPU kernels. In addition, the mexcuda function exposes the GPU MEX API to allow the MEX-file to read and write gpuArrays.

mexcuda is an extension of the MATLAB mex function. Only a subset of the compilers supported by mex is supported for mexcuda. The supported compilers depend on the CUDA Toolkit version supported by MATLAB. You can check which CUDA Toolkit version MATLAB requires using gpuDevice. For more information about the CUDA Toolkit, see CUDA Toolkit.


mexcuda option1 ... optionN filenames builds with the specified build options. The option1 ... optionN arguments supplement or override the default mexcuda build configuration. You can use the most of the options available in mex with mexcuda.


collapse all

Compile a simple MEX-function to create the function myMexFunction from a CUDA C++ source file.


An example source file is available at matlabroot/toolbox/distcomp/gpu/extern/src/mex/

Use verbose mode to display the compile and link commands and other information useful for troubleshooting.

mexcuda -v

Compile and link multiple source files with one command.

mexcuda otherSource1.cpp otherSource2.cpp

First compile, then link to create a function.

mexcuda -c
mexcuda myMexFunction.obj

The first line compiles to myMexFunction.obj (Windows®) or myMexFunction.o (UNIX®), and the second links to create the function myMexFunction.

Compile code that uses dynamic parallelism, defining kernels that launch other kernels.

mexcuda -dynamic

Compile a MEX-function that makes use of the CUDA image primitives library, npp, which is installed at C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64\nppi.lib.

mexcuda '-LC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64' -lnppi 

Input Arguments

collapse all

One or more file names, including name and file extension, specified as a character vector. If the file is not in the current folder, specify the full path to the file. File names can be any combination of:

  • C or C++ language source files

  • object files

  • library files

The first source code file listed in filenames is the name of the binary MEX-file. To override this naming convention, use the '-output' option.

Data Types: char

One or more build options, specified as one of these values. Options can appear in any order on any platform, except where indicated.

Most options available for the mex function are supported. In addition, the following options are also available.



Dynamic parallelism: compiles MEX-files that define kernels that launch other kernels.


Generate debug information for device code. This makes it possible to step through kernel code line by line in one of NVIDIA’s debugging applications (NSight or cuda-gdb). To enable debugging of host code use -g.

The following mex function option is not supported.



Use of the MATLAB large-array-handling API is implicit, and cannot be overridden.

All other options for mex are supported for mexcuda. See the documentation for mex for details.

Introduced in R2015b