cuda-gdb无法打印变量的值

时间:2019-10-21 14:52:00

标签: cuda cuda-gdb

当我使用cuda-gdb调试程序时,我打印了数组之一,但输出不是我期望的。

在以下程序中,当使用cuda-gdb运行“ p * sendbuff @ 2”时,结果为“ 0 0”。不是“ 1 1”。我运行“ p trecv”,输出为“ 1“。这是正确的。我猜想sendbuff值正确,但是输出了错误的输出。有人可以告诉我这是怎么回事吗?

该程序可能存在某些错误,或者使用该软件存在错误。

int nDev = 2;   
float trecv[1024];   
float** sendbuff = (float**)malloc(nDev * sizeof(float*));   
float** recvbuff = (float**)malloc(nDev * sizeof(float*));   
cudaStream_t* s = (cudaStream_t*)malloc(sizeof(cudaStream_t)*nDev);


  //picking GPUs based on localRank   for (int i = 0; i < nDev; ++i) {
    for(int j=0;j<1024;j++) {
        trecv[j]=5;
    }
    CUDACHECK(cudaSetDevice(localRank*nDev + i));
    CUDACHECK(cudaMalloc(sendbuff + i, size * sizeof(float)));
    CUDACHECK(cudaMalloc(recvbuff + i, size * sizeof(float)));
    CUDACHECK(cudaMemset(sendbuff[i], 1, size * sizeof(float)));
    CUDACHECK(cudaMemset(recvbuff[i], 0, size * sizeof(float)));
    cudaMemcpy(trecv, sendbuff[i], sizeof(float)*size, cudaMemcpyDeviceToHost);
    CUDACHECK(cudaStreamCreate(s+i));   }

0 个答案:

没有答案