首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库达内存库冲突

库达内存库冲突
EN

Stack Overflow用户
提问于 2021-09-11 11:10:53
回答 1查看 192关注 0票数 1

我想确保正确理解共享内存中的银行冲突。我有32份数据。这些部分由128个整数组成。

|0, 1, 2, ..., 125, 126, 127| ... |3968, 3969, 3970, ..., 4093, 4094, 4095|

每个线程在一个翘曲访问,只有它自己的部分。

  • 线程0访问位置0(0)在0

  • 线程1在第1部分

中的访问位置0(128)

  • 线程31访问位置0(3968)在31

这是否意味着我在这里有32次冲突?如果是,那么如果我将部分扩展到129个元素,那么每个线程将访问唯一的银行。我说的对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-11 13:25:59

是的,你会遇到32路银行冲突.对于银行冲突的目的,它可能有助于将共享内存可视化为一个二维数组,其宽度为32个元素(例如,32个intfloat数量)。这个二维数组中的每一列都是一个“银行”。

把你的存储模式叠加在上面。当您这样做时,您将看到指定的访问模式将导致翘曲中的所有线程从第0列请求项。

是的,这里通常的“技巧”是在“行”中按一个元素填充存储(在您的例子中,这可能是每个“部分”中的一个元素)。这将消除银行冲突,为您规定的访问模式。

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

https://stackoverflow.com/questions/69142420

复制
相关文章

相似问题

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