2013-04-23 150 views
0

我想在CUDA中使用存在函数,但它包含许多类和其他函数。 在每个函数变得微不足道之前添加__host__ __device__。那么,有没有一种自动方法可以做到这一点?或者如何让nvcc编译所有函数为__device__ __host__将所有CUDA函数更改为__host__ __device__

+1

总之,没有没有一种自动的方式来做到这一点。但正如你自己指出的那样,用\ _ \ _ device \ _ \ _来装饰你需要的功能是微不足道的,那么问题是什么? – talonmies 2013-04-23 06:07:36

+0

好吧......我想我可能会写一个这样做...... – GuoHaotian 2013-04-23 06:10:51

+3

如果有很多现有的类和函数,最好修改它们并创建一个GPU特定的解决方案,而不是将所有内容都设置为__device__。 – hthms 2013-04-23 07:49:24

回答

1

基本上,GPU编程都是关于大规模并行性。这是一个完全不同于普通单线程编程的范例。 除非您只是想将这些函数同时应用于大型数组的各个元素,否则将其编码到GPU中没有任何好处。实际上,GPU核心时钟比你的处理器慢得多。 如果您将编译的功能主要针对单线程风格的CPU写入GPU,您将获得潜在的性能损失。 您需要将您的问题重新考虑到GPU范例中。

+0

你可能会正确的。但实际上它关于机器学习,我使用min-max-modular来并行化数据,所以它可以在不改变algorthim的情况下并行训练,并且我有一种方法来整合结果。它应该在multiCPU而不是GPU中运行。但由于某种原因,我别无选择。 – GuoHaotian 2013-04-24 05:27:32

相关问题