gpt4 book ai didi

memory - 为什么这是一个无冲突的内存库访问?

转载 作者:行者123 更新时间:2023-12-04 14:28:15 26 4
gpt4 key购买 nike

这是从 CUDA C 编程指南中截取的图像:

enter image description here

该指南说这是一个无冲突访问的例子,因为线程 3、4、6、7 和 9 访问了 bank 5 中的同一个词。

我不太明白为什么这是无冲突的,因为不仅线程 3、4、6、7 和 9 访问同一银行内的相同工作(这不应该是内存冲突的一个例子吗?)而且线程 5必须访问银行 4。

你能向我解释一下这个案例吗?

最佳答案

请注意,bank 与共享内存中的字或位置不同。 bank 统称共享内存中满足特定地址模式条件的所有字。

一般而言,如果所有来自 warp(或 cc 1.x 中的 half-warp)的访问都转到单独的 bank,则可以避免共享内存 bank 冲突。这些访问不需要按扭曲顺序,即它们可以被加扰,只要来自每个线程的请求针对一个单独的库。

上面的描述涵盖了图表中的每个箭头,除了那些指向银行 5 的箭头。

如果我们没有其他信息,那么针对单个银行的多个箭头将表示潜在的银行冲突。

但是,有一个异常(exception),即访问不仅针对同一个 bank,而且针对内存中的同一个字。当多个共享内存请求针对内存中的同一个字时,共享内存系统有一个广播机制来获取包含在该字中的数据,并在一个周期内为所有请求线程提供服务。

从文档( http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#shared-memory-1-x ):

Shared memory features a broadcast mechanism whereby a 32-bit word can be read and broadcast to several threads simultaneously when servicing one memory read request. This reduces the number of bank conflicts when several threads read from an address within the same 32-bit word.

关于memory - 为什么这是一个无冲突的内存库访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22514331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com