2017-05-08 11 views
-1

我需要平行解释水下声纳输出的代码。代码严重依赖于该设备特有的十几个常量,并且它们都是全局常量。有什么办法可以使这些常量在设备上可见,所以我不必将它们中的每一个都作为内核函数参数传递?CUDA是否有任何类型的全局变量在设备上可见而不传递给它?

+1

喜欢......'#define'? –

+0

@EugeneSh。你的意思是用'#define'声明的常量实际上在设备上是可见的吗?没有一个消息来源提到它。 –

+0

你是什么意思“设备”?如果在适当范围内定义,代码可以看到它。 –

回答

0

如果我理解你的问题,你想使用来自GPU的常量数据,而不将它作为内核参数传递。 您可以声明您的数据为__constant__,并使用cudaMemcpyToSymbol。 RobertCrovella提出的解决方案允许它在有限的情况下,但不需要memcopy。 你只需要做一次memcopy。

+0

并不是真的,我一直在寻找一种不使用'cudaMemcpyToSymbol'的方法来避免使用重复操作泛滥我的代码。不幸的是,你不能使用具有动态初始化全局变量的'__constant__',所以显然'cudaMemcpyToSymbol'是这里唯一的选择。 –

相关问题