小编Tat*_*ore的帖子

在 CUDA 中使用较少线程时数组复制速度更快

我测试了两种不同的方法来在 CUDA 内核中复制 2D 数组。

第一个启动 TILE_DIM x TILE_DIM 线程块。每个块复制数组的一个图块,为每个元素分配一个线程:

__global__ void simple_copy(float *outdata, const float *indata){

int x = blockIdx.x * TILE_DIM + threadIdx.x;
int y = blockIdx.y * TILE_DIM + threadIdx.y;

int width = gridDim.x * TILE_DIM;

outdata[y*width + x] = indata[y*width + x];

}
Run Code Online (Sandbox Code Playgroud)

第二个摘自NVIDIA 博客。它与之前的内核类似,但每个块使用 TILE_DIM x BLOCK_ROWS 线程。每个线程循环遍历矩阵的多个元素:

__global__ void fast_copy(float *outdata, const float *indata)
{
int x = blockIdx.x * TILE_DIM + threadIdx.x;
int y = blockIdx.y * TILE_DIM + threadIdx.y;
int …
Run Code Online (Sandbox Code Playgroud)

cuda

3
推荐指数
1
解决办法
1781
查看次数

标签 统计

cuda ×1