首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCL与数据自动化系统之间的异常性能差距

OpenCL与数据自动化系统之间的异常性能差距
EN

Stack Overflow用户
提问于 2013-01-21 11:43:10
回答 1查看 581关注 0票数 2

我在CUDA中编写了一个简单的平铺矩阵乘法。就像这样:

代码语言:javascript
复制
__global__ void matrixMultiplyShared(float * A, float * B, float * C,
                         int numARows, int numAColumns,
                         int numBRows, int numBColumns,
                         int numCRows, int numCColumns) {

    __shared__ float ds_A[TILE_WIDTH][TILE_WIDTH];
    __shared__ float ds_B[TILE_WIDTH][TILE_WIDTH];

    int bx = blockIdx.x; int by = blockIdx.y;
    int tx = threadIdx.x; int ty = threadIdx.y;

    int row = by * TILE_WIDTH + ty;
    int col = bx * TILE_WIDTH + tx;

    float Cvalue = 0.0;

// Loop over the M and N tiles required to compute the Pd element
    for (int m = 0; m < (numAColumns-1)/TILE_WIDTH+1; ++m) {
        if(row<numARows && m*TILE_WIDTH+tx < numAColumns){
            ds_A[ty][tx] = A[row*numAColumns + m*TILE_WIDTH+tx];
        } else {
            ds_A[ty][tx] = 0;
        }
        if(m*TILE_WIDTH+ty < numBRows && col < numBColumns){
            ds_B[ty][tx] = B[(m*TILE_WIDTH+ty)*numBColumns+col];
        } else {
            ds_B[ty][tx] = 0;
        }
        __syncthreads();
        if(row < numCRows && col < numCColumns){
            for (int k = 0; k < TILE_WIDTH; ++k)
                Cvalue += ds_A[ty][k] * ds_B[k][tx];
        }
        __syncthreads();
    }
    if(row < numCRows && col < numCColumns)
        C[row*numCColumns+col] = Cvalue;
}

在此之后,我在OpenCL版本中使用了相同的内核(稍微做了一些修改)来比较CUDA和OpenCL的性能。但结果却远远超出了我的预期。OpenCL比CUDA快6-7倍.有效吗?Nisght的产出如下:

数据自动化系统:

OpenCL:

您可以看到在启动应用程序和执行内核之间存在很大的差距。为什么会发生这种事?

我的GPU是: GTX 580 \核快递时间(CUDA):3.78s \x核处理器时间(OpenCL):0.53s

Code代码:http://pastebin.com/VQMp3Hba

OpenCL主机代码:http://pastebin.com/cjGYSLQf

OpenCL内核代码:http://pastebin.com/KKw3Ayz7

EN

回答 1

Stack Overflow用户

发布于 2013-01-21 13:01:53

您可以尝试在代码中插入显式定时器,而不是信任工具的输出。可能是工具错误的情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14437875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档