MATLAB中的复杂CUDA核

MATLAB中的复杂CUDA核,cuda,Cuda,我写了一个CUDA内核,通过MATLAB运行, 有几个复杂的指针。我用复数双向量(定义为gpuArray)激活内核,并发出错误消息:“参数规范中不支持的类型cuDoubleComplex” 如何设置MATLAB以了解这种类型?简短的回答是,您不能 显示了支持的内核类型列表,这是您的内核代码可以包含的所有类型,以便使用GPU计算工具箱正确编译。您需要修改代码以使用cudouble2代替cuDoubleComplex,或者向Matlab提供编译的PTX代码和一个函数声明,该声明将cuDoubleCo

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


如何设置MATLAB以了解这种类型?

简短的回答是,您不能

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

__global__ void mykernel(cuDoubleComplex *a) { .. }
将使用nvcc编译为PTX,然后作为

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

这两种方法都可以。

cuDubleComplex?这是打字错误吗?cuDubleComplex是c中复数的一种类型,有两个双部件。您可以将此类型与“cuConmplex.h”一起使用,并使用一组函数在GPU上处理复数。我完全理解它是什么。再看看我在评论中写的和你在问题中写的。CuDupleComplex和cuDoubleComplex不是一回事。您在代码中使用的是哪一个?对不起。我很复杂,对,细节很重要。请编辑您的问题,以包含编译器生成的确切错误消息。如果您能接受此答案,那就太好了。它将从未回答的问题列表中删除该问题,并使将来通过搜索更容易找到该问题。