我想确保正确理解共享内存中的银行冲突。我有32份数据。这些部分由128个整数组成。
|0, 1, 2, ..., 125, 126, 127| ... |3968, 3969, 3970, ..., 4093, 4094, 4095|
每个线程在一个翘曲访问,只有它自己的部分。
中
中的访问位置0(128)
中
这是否意味着我在这里有32次冲突?如果是,那么如果我将部分扩展到129个元素,那么每个线程将访问唯一的银行。我说的对吗?
发布于 2021-09-11 13:25:59
是的,你会遇到32路银行冲突.对于银行冲突的目的,它可能有助于将共享内存可视化为一个二维数组,其宽度为32个元素(例如,32个int或float数量)。这个二维数组中的每一列都是一个“银行”。
把你的存储模式叠加在上面。当您这样做时,您将看到指定的访问模式将导致翘曲中的所有线程从第0列请求项。
是的,这里通常的“技巧”是在“行”中按一个元素填充存储(在您的例子中,这可能是每个“部分”中的一个元素)。这将消除银行冲突,为您规定的访问模式。
https://stackoverflow.com/questions/69142420
复制相似问题