my_kernel.cu 是您的 CUDA 源代码文件,my_kernel.ptx 是生成的 PTX 文件。
.version 7.8
.target sm_86
.address_size 64
.visible .entry add(
.param .u64 _param0,
.param .u64 _param1,
.param .u64 _param2
)
{
.reg .u64 %SP;
.reg .u32 %r<4>;
.reg .s32 %r<4>;
ld.param.u64 %SP, [_param0];
ld.param.u64 %SP, [_param1];
ld.param.u64 %SP, [_param2];
mov.u32 %r1, %tid.x;
cvta.to.global.u64 %SP, %SP;
ld.global.u32 %r2, [%SP];
mov.u32 %r3, %r2;
cvta.to.global.u64 %SP, %SP;
ld.global.u32 %r4, [%SP];
add.s32 %r5, %r3, %r4;
cvta.to.global.u64 %SP, %SP;
st.global.u32 [%SP], %r5;
ret;
}
sm_86 表示支持 Maxwell 架构的 GPU。
ld、st)
add、mul)
bra、call)
ptxas 工具可以将 PTX 代码编译为特定 GPU 架构的机器代码。例如:
ptxas my_kernel.ptx -o my_kernel.o -gencode arch=compute_86,code=sm_86
-gencode 参数指定了目标 GPU 架构,sm_86 表示将 PTX 编译为适用于 Maxwell 架构的机器代码。
my_kernel.o)与其他 CUDA 代码或主机代码链接,生成最终的可执行文件。
通过以上步骤,您可以方便地获得或编写 PTX 代码。PTX 是 CUDA 编程中的重要组成部分,掌握它有助于您深入了解 GPU 并行计算的底层机制