相关疑难解决方法(0)

与CUDA PTX代码和寄存器内存混淆

:)当我试图管理我的内核资源时,我决定调查PTX,但有一些我不明白的事情.这是我写的一个非常简单的内核:

__global__
void foo(float* out, float* in, uint32_t n)
{
    uint32_t idx = blockIdx.x * blockDim.x + threadIdx.x;
    uint32_t one = 5;
    out[idx] = in[idx]+one;
}
Run Code Online (Sandbox Code Playgroud)

然后我用它编译它:nvcc --ptxas-options=-v -keep main.cu我在控制台上得到了这个输出:

ptxas info    : 0 bytes gmem
ptxas info    : Compiling entry function '_Z3fooPfS_j' for 'sm_10'
ptxas info    : Used 2 registers, 36 bytes smem
Run Code Online (Sandbox Code Playgroud)

最终的ptx如下:

    .entry _Z3fooPfS_j (
            .param .u64 __cudaparm__Z3fooPfS_j_out,
            .param .u64 __cudaparm__Z3fooPfS_j_in,
            .param .u32 __cudaparm__Z3fooPfS_j_n)
    {
    .reg .u16 %rh<4>;
    .reg .u32 %r<5>;
    .reg .u64 %rd<8>;
    .reg …
Run Code Online (Sandbox Code Playgroud)

cuda ptx

7
推荐指数
1
解决办法
1546
查看次数

标签 统计

cuda ×1

ptx ×1