我想要以下帮助。我有一个关于主机代码,内核函数和从内核调用的设备函数的数组。我只希望设备功能使用主机阵列。我可以通过某种方式直接从设备函数使主机阵列“可见”,还是必须先将其复制到内核?
答案 0 :(得分:1)
答案 1 :(得分:0)
我不相信设备功能可以直接访问主机内存。即使你可以,延迟和带宽也是残酷的,可能不值得。
如果您的意思是希望设备功能由主机端的CPU运行,那么这是可能的。您可以将__host__ __device__
作为函数定义的前缀,并且将为主机和设备编译该函数,以便您可以直接在CPU上使用它。唯一的问题是该功能无法利用CPU上没有的任何CUDA功能(例如,共享内存等)。
答案 2 :(得分:0)
CUDA内核是在GPU(设备)上执行的代码。 GPU只能访问位于显卡上的内存,而不能访问主CPU内存。 CPU可以在主内存和设备内存之间复制数据。通常的情况是:
我建议你阅读official documentation。如果您更喜欢幻灯片,可以从introductory presentation开始。