CUDA合并和全局内存

问题描述 投票:0回答:1

我在CUDA课程中被告知,如果我的“ a”数组的元素大小为4,8或16个字节,则对以下访问(全局内存)进行合并缩放。

int i = blockIdx.x*blockDim.x + threadIdx.x;
a[i];

合并的两个条件是:经线的线程必须访问32、64或128字节的块。Warp的第一个线程必须访问的地址是32、64或128的倍数。

但是在此示例中(第一个条件),没有任何保证可以保证warp将访问32个字节的块。

如果我假设a的元素是浮点数(4个字节),并且如果我将blockDim.x定义为5,那么即使我的“ a”数组的元素大小为20,每个扭曲都将访问20(4x5)个字节的块。 4,8或16个字节,而不是32个字节。那么,关于合并false的第一个主张是?

谢谢您的回答。

我在CUDA课程中被告知,如果我的“ a”数组的元素大小为4,8或16个字节,则对以下访问(全局内存)进行合并缩放。 int i = blockIdx.x * blockDim.x + threadIdx.x; a [...

memory cuda gpgpu coalescing
1个回答
1
投票

但是在此示例中(第一个条件),没有任何保证可以保证warp将访问32个字节的块。

© www.soinside.com 2019 - 2024. All rights reserved.