【问题标题】:complex CUDA kernel in MATLABMATLAB中的复杂CUDA内核
【发布时间】:2014-06-16 21:14:47
【问题描述】:

我写了一个 CUDA 内核来通过 MATLAB 运行, 有几个 cuDoubleComplex 指针。我用复数双向量(定义为 gpuArray)激活了内核,并得到错误消息:“参数规范 cuDoubleComplex 中不支持的类型”。

如何设置 MATLAB 来识别这种类型?

【问题讨论】:

  • cuDubleComplex?是错字吗?
  • cuDubleComplex 是 c 中的复数类型,有 2 个双部分。您可以将此类型与“cuConmplex.h”一起使用,并使用一组函数在 GPU 上处理复数。
  • 我完全理解它是什么。再次查看我在评论中写的内容以及您在问题中写的内容。 cuDubleComplex 和 cuDoubleComplex 不是一回事。您在代码中使用的是哪个?
  • 对不起。我ment cuDoubleComplex。
  • 对,细节很重要。请编辑您的问题以包含编译器生成的 exact 错误消息。

标签: cuda


【解决方案1】:

简短的回答,你不能。

内核支持的类型列表显示为here,这是您的内核代码可以包含的所有内容,以便使用 GPU 计算工具箱正确编译。您需要修改代码以使用double2 代替cuDoubleComplex,或者为Matlab 提供已编译的PTX 代码和将cuDoubleComplex 映射到double2 的函数声明。例如

__global__ void mykernel(cuDoubleComplex *a) { .. }

将使用 nvcc 编译为 PTX,然后在 Matlab 中加载为

k = parallel.gpu.CUDAKernel('mykernel.ptx','double2*');

任何一种方法都应该有效。

【讨论】:

  • 如果你能接受这个答案就好了。它将从未回答的问题列表中删除该问题,并且将来通过搜索更容易找到。
猜你喜欢
  • 1970-01-01
  • 2014-03-16
  • 2020-07-29
  • 2021-05-31
  • 2021-02-07
  • 1970-01-01
  • 2012-02-24
  • 2023-04-06
  • 2011-05-24
相关资源
最近更新 更多