我使用CUDA 5.0和我有单独编译的模块。 我想从所有模块中的常量内存访问相同的值。 问题是下文中,当我在每个模块中定义符号链接器声称,符号已经被重新定义。 有一种解决方法或此问题的解决方案? 感谢您的帮助。
Answer 1:
在CUDA分离编译模式,有一个真正的连接体,和许多被唯一定义的每一个被链接到最终设备的二进制有效载荷符号。 这意味着__constant__存储器符号必须只在一个地方在其中链接在一起的所有代码所定义。
该解决方案可能是该符号声明为extern
在每个翻译单元范围除了一个,其中包含符号的定义。 请注意,这是它是有效的使用EXTERN与__constant__符号的唯一案例,否则他们是隐式静态的。 这里是描述这种情况下埋藏的文档中(包括编程指南和手册NVCC IIRC)分别编译模型的一般性讨论。
文章来源: CUDA constant memory symbols