gpt4 book ai didi

cuda - 如果我在 GPU 内核中使用许多局部变量,这些变量会驻留在全局内存中吗?

转载 作者:行者123 更新时间:2023-12-02 07:37:48 24 4
gpt4 key购买 nike

如果我在 GPU 内核中使用很多变量,这些变量会驻留在全局内存中吗?这样读写局部变量就需要访问全局内存?

为了使变量驻留在寄存器中,GPU 内核中变量数量的典型限制是多少?

谢谢,山姆

最佳答案

快速回答:是的。典型的限制?如果您想达到 0.5 左右的占用率,则每个线程大约需要 32-64 个寄存器,具体取决于架构。

稍微长一点的回答:请记住,寄存器的数量与“局部变量的数量”并不完全相同。这是因为,在给定时间,您通常不需要所有局部变量,编译器会尝试重用寄存器。您最终可能会将多个变量映射到同一个寄存器。

其次,即使您用完了寄存器空间,编译器也会尝试将这些值溢出到很少使用的全局内存中。通常,您的代码中很少有寄存器溢出并不那么耗时。此外,这些寄存器溢出导致完美对齐的全局内存访问模式。

如果您想知道每个内核使用了多少寄存器和(溢出的)本地内存,请将 --ptxas-options=-v 添加到您的编译参数。

关于cuda - 如果我在 GPU 内核中使用许多局部变量,这些变量会驻留在全局内存中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14372524/

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