函数类型限定符指定函数是在主机上执行还是在设备上执行和是从主机上调用还是从设备上调用。
一、__device__
使用 __device__ 限定符声明的函数:
- 在设备上执行;
- 仅可通过设备调用。
二、__global__
使用 __global__ 限定符可将函数声明为内核。此类函数:
- 在设备上执行;
- 只能通过主机调用。
__global__ 函数的返回类型必须为空。
对__ global__ 函数的任何调用都必须按B.18的方法指定其执行配置。
__global__ 函数的调用是异步的,也就是说它会在设备执行完成之前返回。
三、__host__
使用 __host__ 限定符声明的函数:
- 在主机上执行;
- 仅可通过主机调用。
仅使用 __host__ 限定符声明函数等同于不使用 __host__ 、 __device__ 或 __global__限定符声明函数,这两种情况下,函数都将仅为主机进行编译。
__global__ 和 __host__ 限定符不能一起使用。
但 __host__ 限定符也可与 __device__ 限定符一起使用,此时函数将为主机和设备同时进行编译。