小编mns*_*mns的帖子

表面存储器比全局存储器花费更多的时间(两倍)

我正在优化cuda程序。因此,我首先从矩阵乘法程序的优化开始。我用于并行化的线程方案是Blocksize(1,1),Gridsize(N,N)。我将表面内存用于内存优化目的(因为此线程方案无法使用共享内存)。当我比较优化前后的时间时,我发现执行使用表面内存后需要花费两倍的时间(我尝试使用不同的线程方案,但问题仍然存在)。从我到目前为止所读的内容来看,全局内存比表面内存要慢。因此使用表面存储器应该花费更少的时间。下面我给出使用表面存储器的矩阵乘法程序。有人可以告诉我这是什么问题吗?

#include < stdio.h > 
#include < cuda.h >

//#define N 3

surface < void, 2 > a_surf;
surface < void, 2 > b_surf;
surface < void, 2 > c_surf;

void CUDA_SAFE_CALL(cudaError_t call, int line) {
    switch (call) {
    case cudaSuccess:
        break;
    default:
        printf("ERROR at line :%i.%d' ' %s\n",
            line, call, cudaGetErrorString(call));
        exit(-1);
        break;
    }

}

__global__ void mul(int N) {
    int a, b, c, temp;
    int i;

    unsigned int x = blockIdx.x * blockDim.x + (threadIdx.x);
    unsigned int y …
Run Code Online (Sandbox Code Playgroud)

cuda

2
推荐指数
1
解决办法
243
查看次数

标签 统计

cuda ×1