Assembly 如何理解CUDA/GPU中的SASS分析结果
我使用cuobjdump(CUDA二进制实用程序之一)生成SASS代码,示例结果如下所示。这些代码试图从全局内存加载Assembly 如何理解CUDA/GPU中的SASS分析结果,assembly,cuda,gpu,ptx,Assembly,Cuda,Gpu,Ptx,我使用cuobjdump(CUDA二进制实用程序之一)生成SASS代码,示例结果如下所示。这些代码试图从全局内存加载 /*0028*/ IMAD R6.CC, R3, R5, c[0x0][0x20]; /*0030*/ IMAD.HI.X R7, R3, R5, c[0x0][0x24]; /*0040*/ LD.E R2, [R6]; //load 在哪里可以获得解释每个指令含义的完整SASS代码手册。在“cuda二进制实用程序”中,它仅提供指令含义的一般解释。e、 它没有解释“R1.
/*0028*/ IMAD R6.CC, R3, R5, c[0x0][0x20];
/*0030*/ IMAD.HI.X R7, R3, R5, c[0x0][0x24];
/*0040*/ LD.E R2, [R6]; //load
/*0028*/ IMAD R6.CC, R3, R5, c[0x0][0x20];
:将R3与R5相乘,与气缸组0中的常数求和,偏移量0x20,与进位一起存储在R6中
/*0030*/ IMAD.HI.X R7, R3, R5, c[0x0][0x24];
:将R3与R5相乘,提取上半部分,将上半部分与列组0中的常数求和,偏移量0x24,将其与进位一起存储在R7中。
:将寄存器对R7:R6指向的内容加载到R2中
作为:
整个计算将R3与R5相乘,将64位乘积与c[0][24]:c[0][20]中的64位常量相加,并使用得到的64位地址检索R2
threadIdx
、blockIdx
、blockDim
、gridDim
等)驻留的位置未指定,可能因体系结构而异。实际上,其中一些在专用寄存器中,另一些在共享内存中。但这是一个实现细节
注:编辑以集成@njuffa的注释。标记用于名为Sass的CSS预处理器。小更正:将寄存器对R7:R6指向的内容加载到R2中。
.X
指定了带进位的扩展操作,我记得,这个后缀最初用于摩托罗拉的68K生产线。整个计算将R3与R5相乘,将64位乘积与c[0][24]:c[0][20]中的64位常量相加,并使用得到的64位地址检索R2。
/*0040*/ LD.E R2, [R6]; //load