2010-10-08 120 views
2

說我有一個CUDA內核CUDA內核參數

__global__ foo (int a, int b) 
{ 
    ... ... 
} 

其中a和b存儲。這是否需要每個線程的寄存器空間?

回答

2

不,這不會爲每個線程佔用寄存器空間,而是在固定空間(只讀空間)中分配一次ab,所有線程都可以從該空間讀取空間。

注意,這個空間是由常量寄存器緩存和共享由所有線程:

只讀恆定高速緩存是 由所有的標量處理器核心 共享並加速從恆定 存儲器中讀取空間,這是設備內存的只讀 區域[PTX ISA版本2.1第3章]。

+0

我猜測至少當你修改代碼中的參數時,它們會被複制到寄存器中。此外,寄存器可能比常量內存還要快,所以無論如何複製都可能發生。有人應該檢查生成的程序集。 – masterxilo 2016-04-07 00:42:31