记录 | CUDA编程中 __host__ 标识符可以省略的情况

CUDA 完全兼容 C++,因此任何函数如果没有指明修饰符,则默认就是 __host__ ,而如果是 CPU 上的函数,由于本身就是 host 的,所以 __host__ 是可以省略的。

比如:

#include 
#include 

__device__ void say_hello(){
    printf("Hello, world from GPU!\n");
}

__host__ void say_hello_host(){
    printf("Hello, world from CPU!\n");
}

__global__ void kernel(){
    say_hello();
}

int main(){
    kernel<<<1, 1>>>();
    cudaDeviceSynchronize();
    say_hello_host();
    return 0;
}

可以写成:

#include 
#include 

__device__ void say_hello(){
    printf("Hello, world from GPU!\n");
}

void say_hello_host(){                    // 省略__host__
    printf("Hello, world from CPU!\n");
}

__global__ void kernel(){
    say_hello();
}

int main(){
    kernel<<<1, 1>>>();
    cudaDeviceSynchronize();
    say_hello_host();
    return 0;
}

你可能感兴趣的:(踩坑记录,CUDA,CUDA编程,__host__,标识符,CPU)