Main Content

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

GPU CUDA 和 MEX 编程

使用高级 GPU CUDA® 和 MEX 编程进一步加快代码执行速度

如果在 GPU 上运行 MATLAB® 函数不足以加快代码执行速度,或者您需要使用高级 GPU CUDA 功能,您可以编写自己的 CUDA 代码,并在 MATLAB 中运行该代码,具体方法是使用 mexcuda 生成可执行 MEX 文件,或使用 parallel.gpu.CUDAKernel 生成可执行内核。

一般来说,使用 MEX 文件比使用 CUDAKernel 对象更灵活。有关详细信息,请参阅运行包含 CUDA 代码的 MEX 函数

函数

全部展开

mexcuda编译 MEX 函数或 PTX 文件以进行 GPU 计算
CUDAKernelGPU 上的内核可执行文件
feval在 GPU 上评估内核
setConstantMemory在 GPU 上设置一些常量内存
mxGPUArrayMATLAB gpuArray 的类型
mxGPUCopyFromMxArray将 mxArray 复制到 mxGPUArray
mxGPUCopyGPUArray复制(深度复制)mxGPUArray 对象
mxGPUCopyImag 复制 mxGPUArray 的虚部
mxGPUCopyReal 复制 mxGPUArray 的实部
mxGPUCreateComplexGPUArray从两个真实的 gpuArray 创建复杂的 GPU 数组
mxGPUCreateFromMxArray从输入 mxArray 创建只读 mxGPUArray 对象
mxGPUCreateGPUArray创建 mxGPUArray 对象,在 GPU 上分配内存
mxGPUCreateMxArrayOnCPU创建 mxArray,用于将来自 GPU 的数据返回到 MATLAB CPU 数据
mxGPUCreateMxArrayOnGPU创建 mxArray 用于将 GPU 数据返回到 MATLAB
mxGPUDestroyGPUArray删除 mxGPUArray 对象
mxGPUGetClassID与 GPU 上的数据关联的 mxClassID
mxGPUGetComplexityGPU 上数据的复杂性
mxGPUGetData指向基础数据的原始指针
mxGPUGetDataReadOnly指向基础数据的只读原始指针
mxGPUGetDimensionsmxGPUArray 维度
mxGPUGetNumberOfDimensionsmxGPUArray 的维度数组的大小
mxGPUGetNumberOfElementsGPU 上数组元素的数量
mxGPUIsSame确定两个 mxGPUArray 是否引用相同的 GPU 数据
mxGPUIsSparse确定 mxGPUArray 是否包含稀疏 GPU 数据
mxGPUIsValidGPUData确定 mxArray 是否是指向有效 GPU 数据的指针
mxGPUSetDimensions修改维度数和每个维度的大小
mxIsGPUArray确定 mxArray 是否包含 GPU 数据
mxInitGPU在当前选定的设备上初始化 MATLAB GPU 库

主题

  • 运行包含 CUDA 代码的 MEX 函数

    所有 MEX 文件(包括包含 CUDA 代码的文件)都有一个称为 mexFunction 的入口点。MEX 函数包含与来自 MATLAB 的 gpuArray 对象交互并启动 CUDA 代码的主机端代码。MEX 文件中的 CUDA 代码必须符合 CUDA 运行时 API。

  • 在 GPU 上运行 CUDA 或 PTX 代码

    本页介绍如何从 CUDA C++ 源文件(CU)创建可执行内核,并在 MATLAB 中的 GPU 上运行该内核。内核在 MATLAB 中由 CUDAKernel 对象表示,该对象可以对存储在主机内存中的数组或 GPU 数组进行操作。

精选示例