0

我想读取一个文本文件并将其存储在一个数组中。然后,我想将数组从主机传输到设备并将其存储在共享内存中。我编写了以下代码,但与使用全局内存相比,执行时间有所增加。我无法理解原因可能是什么?此外,如果有人可以帮助我使用常量内存编写这段代码,那就太好了。

__global__ void deviceFunction(char *pBuffer,int pSize){
    extern __shared__ char p[];
    int i;
    for(i=0;i<pSize;i++)}
        p[i] = pBuffer[i];
    }
}
int main(void){

    cudaMalloc((void**)&pBuffer_device,sizeof(char)*pSize);
    cudaMemcpy(pBuffer_device,pBuffer,sizeof(char)*pSize,cudaMemcpyHostTo Device);
    kernel<<<BLOCK,THREAD>>>(pBuffer_device,pSize);

}
4

1 回答 1

1
  1. 可能是因为块中的每个线程都试图同时写入相同的共享内存地址,范围从 0 到 pSize!
    使用线程协作将全局内存数据加载到共享内存中: http :
    //forums.nvidia.com/index.php?showtopic=216640&view=findpost&p=1332005 内核中的每个线程都执行“pSize”全局内存读取。
于 2012-03-17T16:33:05.960 回答