我已經閱讀過各種地方,__device__
函數幾乎總是由CUDA編譯器內聯。那麼說,當我將代碼從內核移動到由內核調用的__device__
函數中時,所使用的寄存器數量(通常)不會增加?調用__device__函數是否會影響CUDA中使用的寄存器數量?
作爲一個例子,下面的代碼段使用相同數量的寄存器嗎?他們有同樣的效率嗎?
SNIPPET 1
__global__ void manuallyInlined(float *A,float *B,float *C,float *D,float *E) {
// code that manipulates A,B,C,D and E
}
SNIPPET 2
__device__ void fn(float *A,float *B,float *C,float *D,float *E) {
// code that manipulates A,B,C,D and E
}
__global__ void manuallyInlined(float *A,float *B,float *C,float *D,float *E) {
fn(A,B,C,D,E);
}