我是CUDA编程的新手,所以我很好奇如何执行以下操作:
根据这里的问题:Using std::vector in cuda device code
我们不能使用std :: vector。我试图将像std :: vector这样的参数传递给内核。 void *
描述了GPU /设备上的内存指针(cuda术语)。
最好的方法是什么?也许void **
?那会有用吗?
答案 0 :(得分:2)
这篇文章似乎很清楚,但我会用其他话重复一遍:你不能将std :: vector传递给CUDA内核,原因如下: / p>
CUDA内核需要使用设备代码,即在您的gpu上运行的代码或可以这样翻译的代码。为了生成该代码,您编写的几乎所有内容都需要通过编译链,最终为您的gpu生成中间代码或可执行代码。
通过使用STL构造和算法,您使用的代码还没有为GPU编写,并且没有设备等效代码或仿真速度慢/甚至不可能。