如何在使用 CUDA 和 Matlab 时将矩阵作为参数

How to have a matrix as paramater when working with CUDA and Matlab

本文关键字:参数 Matlab CUDA      更新时间:2023-10-16

我正在尝试弄清楚如何将矩阵从 Matlab 传递到C++ CUDA 文件 (*.ptx)。我想在每个线程中以不同的方式处理矩阵!我绝对不想将矩阵拆分为不同的线程!我希望每个线程都有相同的矩阵!

Matlab 和 CUDA (C++)

我尝试过类似的东西:

_global_ void radialAverage(int* image[][]) {
  ...
}

但它没有用。我收到以下错误:

kernel.cu(8): error: an array may not have elements of this type
1 error detected in the compilation of "C:/Users/ADMINI~1/AppData/Loca/Temp/tmpxft_00000c44_00000000-8_kernel.cpp1.ii".

你能想到任何方法吗?还是可能?

顺便说一句:我没有使用任何库进行C++,只有CUDA-API。

定义内核以从 Matlab 传递矩阵的正确方法清楚地显示在您在问题中链接到的页面上(多次)。

总之,像这样定义内核(Matlab gpuArray作为指向内核的设备指针自动传递):

__global__ void radialAverage(int* image) {
  ...
}

使用工具箱中的CUDAKernel检索内核后,从 Matlab 矩阵创建一个整数gpuArray,并将其传递给内核函数。