ptx相关内容

CUDA PTX代码%envreg<;32>;特殊寄存器

我尝试使用CUDA驱动程序API运行.cl内核生成的PTX汇编代码。我采取的步骤如下(标准OpenCL过程): 1)加载.cl内核 2)JIT编译 3)获取编译后的PTX代码并保存。 到目前为止一切顺利。 我注意到PTX ASSEMBLY内部有一些特殊的寄存器,%envreg3,%envreg6等。问题是当我尝试使用驱动程序API执行代码时,这些寄存器没有设置(根据p ..
发布时间:2022-03-27 18:42:58 其他开发

在 1-D 网格中计算 warp id/lane id 的最有效方法是什么?

在 CUDA 中,每个线程都知道它在网格中的块索引和块内的线程索引.但是它似乎没有明确提供两个重要的值: 它的索引作为其经线中的一条车道(其“车道 ID") 在区块内作为车道的经线的索引(其“经线 id") 假设网格是一维的(又名线性,即blockDim.y和blockDim.z为1),显然可以通过以下方式获得: 枚举:无符号 { warp_size = 32 };auto lan ..
发布时间:2022-01-10 16:16:06 其他开发

如何编译 PTX 代码

我需要修改PTX代码,直接编译.原因是我想要一个接一个的特定指令,并且很难编写导致我的目标 PTX 代码的 cuda 代码,所以我需要直接修改 ptx 代码.问题是我可以将其编译为(fatbin 和 cubin),但我不知道如何将这些(.fatbin 和 .cubin)编译为“X.o"文件. 解决方案 可能有一种方法可以通过有序的 nvcc 命令序列来做到这一点,但我不知道它并没有没发现. ..
发布时间:2022-01-10 15:52:02 其他开发

检测推力变换的ptx核

我有以下推力::转换调用. my_functor *f_1 = new my_functor();推力::转换(data.begin(),data.end(),data.begin(),* f_1); 我想在 PTX 文件中检测它对应的内核.但是有很多内核在它们的名称中包含 my_functor. 例如- _ZN6thrust6system4cuda6detail6detail23la ..
发布时间:2022-01-10 15:45:33 其他开发

使用多个“arch"的目的是什么?Nvidia的NVCC编译器中的标志?

我最近开始了解 NVCC 如何为不同的计算架构编译 CUDA 设备代码. 据我了解,在使用 NVCC 的 -gencode 选项时,“arch"是程序员应用程序所需的最小计算架构,也是 NVCC 的 JIT 编译器将为其编译 PTX 代码的最小设备计算架构. 我也明白-gencode的“code"参数是NVCC完全编译应用程序的计算架构,因此不需要JIT编译. 在检查了各种 CU ..
发布时间:2022-01-10 15:17:27 其他开发

CUDA:如何使用 -arch 和 -code 以及 SM 与 COMPUTE

我仍然不确定在使用 nvcc 构建时如何正确指定代码生成的体系结构.我知道我的二进制文件中嵌入了机器代码和 PTX 代码,这可以通过控制器开关 -code 和 -arch (或组合两者都使用 -gencode). 现在,根据 this 除了这两个编译器标志也有两种指定架构的方法:sm_XX 和 compute_XX,其中 compute_XX 指的是虚拟和 sm_XX 到一个真正的架构.-a ..
发布时间:2022-01-10 15:16:08 其他开发

加载内联 ptx 中的函数参数

我有以下带有内联程序集的函数,可以在 32 位 Visual Studio 2008 的调试模式下正常工作: __device__ void add(int* pa, int* pb){asm(".reg .u32 s"::);asm(".reg .u32 r 14 ;"::);asm("ld.global.b32 s0, [%0];"::"r"(&pa));//加载pa,pb的地址pri ..
发布时间:2022-01-05 19:52:18 其他开发

CUDA 仅对一个变量禁用 L1 缓存

在 CUDA 2.0 设备上是否有任何方法可以仅为一个特定变量禁用 L1 缓存?我知道可以在编译时禁用 L1 缓存,为所有内存操作添加标志 -Xptxas -dlcm=cg 到 nvcc.但是,我只想为特定全局变量上的内存读取禁用缓存,以便所有其余的内存读取都通过 L1 缓存. 根据我在网上所做的搜索,可能的解决方案是通过 PTX 汇编代码. 解决方案 如上所述你可以使用内联 PTX ..
发布时间:2021-12-20 11:31:27 其他开发

如何找到活跃的SM?

是否可以通过任何方式了解空闲/活动SM的数量?还是至少要读取每个SM的电压/功率或温度值,才能知道其是否正常工作? (在gpu设备上执行某些作业时实时)。 %smid帮助我了解了每个SM的ID。 感谢和问候, Rakesh 解决方案 CUDA分析工具接口( CUPTI )包含事件API可以对GPU PM计数器进行运行时采样。 CUPTI SDK随CUDA Toolkit一起提 ..
发布时间:2020-10-13 00:47:32 其他开发

将内核链接到PTX功能

我可以使用PTX文件中包含的PTX函数作为外部设备函数来将其链接到另一个应调用该函数的.cu文件吗? 这是 CUDA-将内核链接在一起中的另一个问题,其中函数本身不包含在。 cu文件,但我宁愿以某种方式链接PTX功能。 解决方案 您可以自己加载包含PTX代码的文件 cuModuleLoad 和 cuModuleGetFunction 来自文件系统的代码,如下所示: CUmod ..
发布时间:2020-10-13 00:45:49 C/C++开发

直接将PTX程序传递给CUDA驱动程序

CUDA驱动程序API提供了从文件系统加载包含PTX代码的文件。通常执行以下操作: CUmodule模块; CUfunction函数; const char * module_file =“ my_prg.ptx”; const char * kernel_name =“ vector_add”; err = cuModuleLoad(& module,module ..
发布时间:2020-10-13 00:41:58 其他开发

如何在运行时生成,编译和运行CUDA内核

好吧,我有一个很棘手的问题:) 让我们从我拥有的东西开始: 数据,大​​量数据,已复制到GPU 程序,由CPU(主机)生成,需要对该数组中的每个数据进行评估 程序更改非常频繁,可以生成为CUDA字符串,PTX字符串或其他形式(? ),并且每次更改后都需要重新评估 我想要的是:基本上只是想做出这尽可能有效(快速),例如。避免将CUDA编译为PTX。解决方案甚至可以完全是特定于设 ..
发布时间:2020-10-06 20:40:19 其他开发

CUDA 9中附加了一些以`_sync()`命名的内部函数;语义相同吗?

在CUDA 9中,nVIDIA似乎有了这种“合作团体"的新概念;由于某种原因(我不太清楚),现在不推荐使用__ballot()(= CUDA 9),而推荐使用__ballot_sync().是别名还是语义发生了变化? ...类似的问题,对于现在已在其名称中添加了__sync()的其他内建程序. 解决方案 没有语义是不一样的.函数调用本身是不同的,一个不是另一个的别名,已经公开了新功能 ..
发布时间:2020-07-31 01:53:02 其他开发

在一维网格中计算经向ID/车道ID的最有效方法是什么?

在CUDA中,每个线程都知道其在网格中的块索引以及该块内的线程索引.但是似乎没有两个重要的值可供使用: 其索引为经线内的车道(其“车道ID") 它是块内泳道的经线索引(其“经线ID") 假设网格是一维的(又称线性,即blockDim.y和blockDim.z为1),显然可以这样获得: enum : unsigned { warp_size = 32 }; auto lane_i ..
发布时间:2020-05-21 20:50:59 其他开发

Cuda PTX注册声明和使用

我尝试减少内核中使用寄存器的数量,所以我决定尝试内联的PTX。 这个内核: #define Feedback(a,b,c,d,e)d ^ e ^(a& c)^(a& e)^ c和c(a& b)^(a& b& d)^(a& b& d) c) __global__ void测试(unsigned long a,unsigned long b,unsigned long c,unsi ..
发布时间:2017-03-05 19:18:03 C/C++开发

使用PTX在C ++ / CUDA程序中计算浮点运算的方法

我有一个有点大的CUDA应用程序,我需要计算获得的GFLOPs。 我正在寻找一种简单而且通用的计算浮点运算数的方法。 可以从生成的浮点运算计数PTX代码(如下所示),使用汇编语言中的预定义fpo的列表?基于代码,计数可以通用吗?例如, add.s32%r58,%r8,-2; 计为一个浮点运算? EXAMPLE: BB3_2: .loc 2 108 1 mov.u32%r ..
发布时间:2017-03-05 19:04:10 C/C++开发

CUDA的内联PTX代码的语法

如Nvidia的Inline PTX Assembly文档中所述,使用内联汇编的语法是: asm(“temp_string”:“constraint”(output):“constraint”(input)) ; 以下是两个示例: asm(“vadd.s32.s32.s32%0,%1.h0 ,%2.h0;“:”= r“(v):”r“(a),”r“(b)); “as”(“vadd ..
发布时间:2017-03-05 15:27:35 其它硬件开发