Memory 库达:什么时候能有人实现凝聚记忆?

Memory 库达:什么时候能有人实现凝聚记忆?,memory,cuda,gpu,coalescing,Memory,Cuda,Gpu,Coalescing,我很难理解这个概念。我在网上做了很多研究,我唯一了解的是线程需要访问连续的数据 因此,如果我们有一个10000个整数的数组,如果线程i访问数组的第个数,那么内存将合并 如果不是所有整数都有10000个线程,而是决定有500个线程,每个线程访问两个连续的整数,会怎么样?在这种情况下,内存合并可能吗 如果我们决定允许一个线程访问2个以上的值,例如10个值,该怎么办 在这种情况下,内存聚合将如何表现?在我上面描述的示例中,“连续访问”何时不再是“连续的” 先谢谢你 我很难理解这个概念 这不是一个可以用

我很难理解这个概念。我在网上做了很多研究,我唯一了解的是线程需要访问连续的数据

因此,如果我们有一个10000个整数的数组,如果线程
i
访问数组的第个数,那么内存将合并

如果不是所有整数都有10000个线程,而是决定有500个线程,每个线程访问两个连续的整数,会怎么样?在这种情况下,内存合并可能吗

如果我们决定允许一个线程访问2个以上的值,例如10个值,该怎么办

在这种情况下,内存聚合将如何表现?在我上面描述的示例中,“连续访问”何时不再是“连续的”

先谢谢你

我很难理解这个概念

这不是一个可以用简短的描述完全涵盖的东西,特别是你可能遇到的所有澄清问题

我的建议是采取以下措施之一:

使用CUDA C的GPU计算–高级1(2010)

CUDA全球内存使用与策略+与NVIDIA Justin Luitjens博士的现场问答


然后,如果您有基于对主题的一般理解的特定问题,请返回。

这里已经有了很好的答案:-线程索引不一定与内存索引相同。连续的线程只需要加载地址空间中彼此紧挨着的内存谢谢你的评论,但是“彼此紧挨着”在全局内存中的实际字节数是什么意思?例如,如果我们在数组中有20个元素,并且我们创建了5个线程,其中每个线程将使用4个元素,那么每个线程将要加载的内存是否会彼此相邻?因为在本例中,线程加载4个元素,即4*4=16字节。因此,线程
i
的第一个元素距离线程
i+1
的第一个元素16字节。同样的距离也适用于所有其他三个元素。也许a可能是有趣的。有各种各样的网络研讨会很好地结合了很多例子,比如“使用CUDA C的GPU计算-高级1(2010)”或“CUDA全球内存使用与策略+与NVIDIA Justin Luitjens博士的现场问答”-如果你想很好地理解它,花一个小时是很合适的。因此,对于教程或问题序列以及后续问题,ksm001的设计不是很好。@ksm001您阅读过CUDA C编程指南的部分了吗?CC 1.1、1.2-1.3、2.*和3.*的内存子系统变化很大,每种情况下的逻辑都不同。上述链接主要针对CC 1.*体系结构。注意:Nsight VSE内存事务实验将显示每个源代码行的#事务直方图,以帮助识别错误的访问模式。首先,您必须了解内存指令是如何转换为事务的。我的答案可能也很有趣。