Hi everyone, I’m a CUDA assembly beginner and I disassemble the code of vectorAdd.cu
__global__ void
vectorAdd(const float *A, const float *B, float *C, int numElements)
{
int i = blockDim.x * blockIdx.x + threadIdx.x;
if (i < numElements)
{
C[i] = A[i] + B[i];
}
}
the corresponding disassembly:
code for sm_30
Function : _Z9vectorAddPKfS0_Pfi
.headerflags @"EF_CUDA_SM30 EF_CUDA_PTX_SM(EF_CUDA_SM30)"
/* 0x2202e2c282823307 */
/*0008*/ MOV R1, c[0x0][0x44]; /* 0x2800400110005de4 */
/*0010*/ S2R R0, SR_CTAID.X; /* 0x2c00000094001c04 */
/*0018*/ S2R R3, SR_TID.X; /* 0x2c0000008400dc04 */
/*0020*/ IMAD R0, R0, c[0x0][0x28], R3; /* 0x20064000a0001ca3 */
/*0028*/ ISETP.GE.AND P0, PT, R0, c[0x0][0x158], PT; /* 0x1b0e40056001dc23 */
/*0030*/ @P0 EXIT; /* 0x80000000000001e7 */
/*0038*/ ISCADD R4.CC, R0, c[0x0][0x140], 0x2; /* 0x4001400500011c43 */
/* 0x22c04282c04282b7 */
/*0048*/ MOV32I R7, 0x4; /* 0x180000001001dde2 */
/*0050*/ IMAD.HI.X R5, R0, R7, c[0x0][0x144]; /* 0x208e800510015ce3 */
/*0058*/ ISCADD R2.CC, R0, c[0x0][0x148], 0x2; /* 0x4001400520009c43 */
/*0060*/ LD.E R4, [R4]; /* 0x8400000000411c85 */
/*0068*/ IMAD.HI.X R3, R0, R7, c[0x0][0x14c]; /* 0x208e80053000dce3 */
/*0070*/ LD.E R2, [R2]; /* 0x8400000000209c85 */
/*0078*/ ISCADD R6.CC, R0, c[0x0][0x150], 0x2; /* 0x4001400540019c43 */
/* 0x20000002f04283f7 */
/*0088*/ IMAD.HI.X R7, R0, R7, c[0x0][0x154]; /* 0x208e80055001dce3 */
/*0090*/ FADD R0, R2, R4; /* 0x5000000010201c00 */
/*0098*/ ST.E [R6], R0; /* 0x9400000000601c85 */
/*00a0*/ EXIT; /* 0x8000000000001de7 */
/*00a8*/ BRA 0xa8; /* 0x4003ffffe0001de7 */
/*00b0*/ NOP; /* 0x4000000000001de4 */
/*00b8*/ NOP; /* 0x4000000000001de4 */
-
what’s the meaning of c[0x0][0x44], c[0x0][0x28], c[0x0][0x140], c[0x0][0x144], c[0x0][0x148], c[0x0][14c], c[0x0][0x150], c[0x0][0x154]?
-
How can I check the value of c[0x0][???] by cuda-gdb or other methods?
Thank you~!