以下代码给出了一个错误:
Node *nodes;
__device__ Node *nodes;
错误: error: variable "nodes" has already been defined
为什么主机和设备中的变量名称不一致?
我认为它应该是可能的,因为它们有不同的范围。
答案 0 :(得分:1)
我认为它应该是可能的,因为它们有不同的范围。
这是你的错。它们没有不同的范围。它们被标记为存在于不同的逻辑CUDA存储空间中,但这并不意味着不同的范围,因为C ++定义它。两者都在同一编译单元中编译和发出为符号,这就是发出编译器错误的原因。