我已经阅读过各种地方,__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);
}