c++ - 使用 CUDA 和 Matlab 时如何将矩阵作为参数

标签 c++ windows matlab matrix cuda

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

Matlab and 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,并将其传递给内核函数。

关于c++ - 使用 CUDA 和 Matlab 时如何将矩阵作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21827030/

相关文章:

c++ - 将可变参数模板参数解包到初始化列表中

windows - 无法在 Windows Server 2008 中加载 Rcpp 包

windows - ffmpeg 解码 h.264 流延迟总是一帧

Matlab strcat 函数有空格问题

matlab - 分类:处理弃权/拒绝类别

c++ - 服务器和客户端之间建立了连接,但无法通过 J2ME 中的 OutputStream 发送数据

c++ - 拦截windows打开的文件

c# - 检测正在使用两个中的哪个监视器/显示器

matlab - 如何在表面的脊上绘制点?

c++ - 为什么 C++ 编译器在对两种不同类型的数字变量使用 `std::max()` 函数时出错