cuda和文件范围

cuda和文件范围,cuda,linkage,Cuda,Linkage,我从自己的项目中了解到,例如,cuda在使用\uuuuu constant\uuuu内存时有一个文件范围链接。这意味着我必须在执行cudaMemcpyToSymbol的同一文件中使用常量内存。 那么cuda使用文件作用域链接的其他存储/内存类型是什么?我想它也用它来制作纹理。但是\uuuuuuuuuuuuuuuuuuuuuuuu共享内存是什么?第一点是,在经典的CUDA编译模型中,所有设备符号的作用域要求都是作用域。而且至少是这样 __全局函数 __设备功能 __纹理对象 __恒定内存 __已声

我从自己的项目中了解到,例如,cuda在使用
\uuuuu constant\uuuu
内存时有一个文件范围链接。这意味着我必须在执行
cudaMemcpyToSymbol
的同一文件中使用常量内存。
那么cuda使用文件作用域链接的其他存储/内存类型是什么?我想它也用它来制作
纹理
。但是
\uuuuuuuuuuuuuuuuuuuuuuuu共享内存是什么?

第一点是,在经典的CUDA编译模型中,所有设备符号的作用域要求都是作用域。而且至少是这样

  • __全局函数
  • __设备功能
  • __纹理对象
  • __恒定内存
  • __已声明外部的共享内存
  • __设备符号
  • 所有这些都必须在使用它们的同一个翻译单元中定义,以便运行时正常工作。根本原因是,上面列表中的所有对象都必须发送到同一个CUDA模块(这是一个驱动程序API概念)中才能正常工作

    CUDA5引入了一种单独的编译模式,它实际上是一种静态链接模型。这意味着符号不需要在同一翻译单元中定义,它们可以被前向声明,并且链接器将在设备代码链接过程中处理符号匹配