Main Content

本页采用了机器翻译。点击此处可查看英文原文。

mexcuda

编译 MEX 函数或 PTX 文件以进行 GPU 计算

说明

示例

mexcuda filenames 将源文件编译并链接到称为 MEX 文件的共享库中,该文件可从 MATLAB® 内部执行。该函数使用 NVIDIA® nvcc 编译器编译使用 CUDA® C++ 框架编写的 MEX 文件,从而允许文件定义和启动 GPU 内核。此外,mexcuda 函数公开了 GPU MEX API,以允许 MEX 文件读取和写入 GPU 数组。

mexcuda 是 MATLAB mex 函数的扩展。mexcuda 仅支持 mex 函数支持的编译器子集。有关详细信息,请参阅支持的主机编译器

示例

mexcuda option1 ... optionN filenames 使用指定的构建选项进行构建。option1 ... optionN 参量补充或覆盖默认的 mexcuda 构建配置。您可以将 mex 中的大多数选项与 mexcuda 一起使用。

示例

全部折叠

编译一个简单的 MEX 函数,从 CUDA C++ 源文件创建函数 myMexFunction

mexcuda myMexFunction.cu

示例源文件可在 matlabroot/toolbox/parallel/gpu/extern/src/mex/mexGPUExample.cu 中找到。

从 CUDA C++ 源文件编译 PTX 文件。 (自 R2023a 起)

mexcuda -ptx myMexFunction.cu

在 R2023a 之前: 使用 NVIDIA CUDA 工具包中的 nvcc 编译器来编译 PTX 文件,而不是 mexcuda 函数。

使用详细模式显示编译和链接命令以及其他有助于故障排除的信息。

mexcuda -v myMexFunction.cu

使用一个命令编译并链接多个源文件。

mexcuda myMexFunction.cu otherSource1.cpp otherSource2.cpp

先编译,然后链接以创建一个函数。

mexcuda -c myMexFunction.cu
mexcuda myMexFunction.obj

第一行编译为 myMexFunction.obj (Windows®) 或 myMexFunction.o (UNIX®),第二行链接创建函数 myMexFunction

编译使用动态并行的代码,定义启动其他内核的内核。

mexcuda -dynamic myMexFunction.cu

编译一个 MEX 函数,利用安装在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64\nppi.lib 的 CUDA 图像基元库 npp

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

输入参数

全部折叠

一个或多个文件名,包括名称和文件扩展名,指定为字符向量。如果文件不在当前文件夹中,请指定该文件的完整路径。文件名可以是以下任意组合:

  • C 或 C++ 语言源文件

  • 目标文件

  • 库文件

filenames 中列出的第一个源代码文件是二进制 MEX 文件的名称。要覆盖此命名约定,请使用 '-output' 选项。

数据类型: char

一个或多个构建选项,指定为以下值之一。除非另有说明,选项可以在任何平台上以任何顺序出现。

支持 mex 函数的大多数可用选项。此外,还有以下选项可供选择。

选项描述

-dynamic

动态并行:编译定义启动其他内核的内核的 MEX 文件。

-ptx (自 R2023a 起)

生成并行线程执行文件(.ptx)。生成的 PTX 文件可与 CUDAKernel 一起使用,直接从 MATLAB 运行内核。不编译 MEX 文件。

-G

为设备代码生成调试信息。这使得可以在 NVIDIA 的调试应用程序(NSight 或 cuda-gdb)中逐行执行内核代码。要启用主机代码的调试,请使用 -g

不支持以下 mex 函数选项。

选项原因

-compatibleArrayDims

MATLAB 大型数组处理 API 的使用是隐式的,并且不能被覆盖。

mex 的所有其他选项均支持 mexcuda。有关详细信息,请参阅 mex 的文档。

提示

  • 与 MATLAB 一起安装的 CUDA 工具包不包含 CUDA 工具包中可用的所有库。如果要使用未随 MATLAB 安装的特定库,请安装 CUDA 工具包。您可以使用 gpuDevice 检查 MATLAB 支持哪个 CUDA 工具包版本。有关 CUDA 工具包的更多信息,请参阅 安装 CUDA 工具包(可选)

  • 如果未检测到 CUDA 工具包或者其版本不受支持,则 mexcuda 将使用随 MATLAB 安装的 NVIDIA nvcc 编译器编译 CUDA 代码。要检查 mexcuda 正在使用哪个编译器,请在 mexcuda 命令中使用 -v 标志进行详细输出。

  • 如果您已将 CUDA 工具包安装在非默认位置,则可以通过将 nvcc 存储在环境变量 MW_NVCC_PATH 中来指定系统上它的位置。您可以使用 MATLAB setenv 命令设置此变量。例如,

    setenv("MW_NVCC_PATH","/usr/local/CUDA/bin")

版本历史记录

在 R2015b 中推出