51得票1回答
CUDA:如何使用-arch和-code,SM与计算的区别

我仍然不确定在使用nvcc编译时如何正确指定代码生成的架构。我知道我的二进制文件中嵌入了机器代码和PTX代码,并且可以通过控制器开关-code和-arch(或两者的组合,使用-gencode)来控制它。 现在,根据this,除了这两个编译器标志外,还有两种指定架构的方法:sm_XX和comp...

43得票2回答
Nvidia的NVCC编译器中使用多个“arch”标志的目的是什么?

我最近理解了NVCC如何为不同的计算架构编译CUDA设备代码。 据我所知,使用NVCC的-gencode选项时,“arch”是程序员应用程序所需的最低计算架构,也是NVCC的JIT编译器将PTX代码编译为的最低设备计算架构。 我还了解到,“-gencode”的“code”参数是NVCC完全...

16得票3回答
PTX - 什么是CTA?

我正在学习PTX,不明白CTA(计算线程数组)和CUDA块有何不同。 它们是相同的东西吗?在我看来,就目前而言(我刚开始学习PTX文档),它们是完全相同的。

16得票1回答
漏斗转移 - 它是什么?

阅读CUDA 5.0编程指南时,我发现有一项名为“漏斗移位(Funnel shift)”的功能,它存在于3.5计算能力的设备中,但不存在于3.0中。指南中有一个注释“请参考参考手册”,但当我在手册中搜索“funnel shift”时,没有找到任何相关内容。我尝试通过谷歌搜索,只在第8章的htt...

14得票1回答
关于NVCC编译器,PTX和CUBIN有什么区别?

我已安装CUDA 4.0,并拥有一个Compute Capability 2.0的设备(一张GTX 460显卡)。 'cubin'文件和'ptx'文件有什么区别? 我认为'cubin'是GPU的本地代码,因此具有特定的微架构,而'ptx'是通过JIT编译在Fermi设备(例如GeForce G...

14得票2回答
什么是在一维网格中计算warp id / lane id的最有效方式?

在CUDA中,每个线程都知道它在网格中的块索引和块内线程索引。但两个重要的值似乎对它并不明确可用: - 它作为warp中的lane的索引(其“lane id”) - 它作为warp所在块中的lane的索引(其“warp id”) 假设网格是一维的(即线性的,例如blockDim.y和blo...

13得票3回答
仅针对一个变量禁用CUDA的L1缓存

在CUDA 2.0设备上,有没有办法只针对一个特定的变量禁用L1缓存?虽然我知道可以通过在编译时添加标志-Xptxas -dlcm=cg到nvcc来禁用所有内存操作的L1缓存,但是我想要在特定全局变量的内存读取中禁用缓存,以便其余内存读取仍可以通过L1缓存进行。 根据我在网上搜索的内容,可能...

10得票6回答
如何编译PTX代码

我需要修改PTX代码并直接编译它。原因是我想在彼此紧随其后的一些特定指令之后,编写CUDA代码很难得到我的目标PTX代码,所以我需要直接修改ptx代码。 问题是我可以将其编译为(fatbin和cubin),但我不知道如何将这些(.fatbin和.cubin)编译成“X.o”文件。

10得票3回答
如何在CUDA 4.1/4.2/5.0中输出C/C++注释的PTX?

有人知道如何在新的LLVM后端中获取带有C/C++代码注释的PTX汇编器吗? 在CUDA 4.0或更早版本中可以轻松获得,但在升级CUDA工具包到4.2版本后,NVCC拒绝了我所有的标志。

9得票1回答
我能否在CUDA内核中预取特定数据到特定缓存级别?

我了解Fermi GPU支持将数据预取到L1或L2缓存。然而,在CUDA参考手册中,我找不到任何相关说明。 CUDA是否允许我的内核代码将特定数据预取到特定级别的缓存中?