我想了解parallel forall post on instruction level profiling。特别是减少内存依赖性停顿部分中的以下几行:
NVIDIA GPU没有索引的寄存器文件,因此如果使用动态索引访问堆栈数组,编译器必须在本地内存中分配该数组。在Maxwell架构中,本地内存存储不会缓存在L1中,因此存储后本地内存加载的延迟很大。
我了解注册文件是什么,但是它们不是索引是什么意思?为什么它会阻止编译器存储使用动态索引访问的堆栈数组?
引用说该数组将存储在本地内存中。这个本地内存在下面的架构中对应什么块?
答案 0 :(得分:2)
......他们没有被编入索引是什么意思
这意味着不支持寄存器的间接寻址。因此,不可能从一个寄存器(理论上是保存数组的第一个元素的寄存器)索引到另一个任意寄存器。因此,编译器无法为存储在寄存器中的数组的非静态索引生成代码。
这个本地内存在下面的架构中对应哪个块?
它与其中任何一个都不对应。本地内存存储在DRAM中,而不是存储在GPU本身上。