cuda 函数前缀 __host__ __device__ __global__ ____noinline__ 和 __forceinline__ 简介
cuda 函数前缀 host device global __noinline 和 forceinline 简介
这些函数前缀在官方的文档里被称为函数执行环境标识符Function execution space specifiers,也就是他指明了这段函数是在哪里被调用的。
global
1 |
|
host device func()
{
#if CUDA_ARCH >= 700
// Device code path for compute capability 7.x
#elif CUDA_ARCH >= 600
// Device code path for compute capability 6.x
#elif CUDA_ARCH >= 500
// Device code path for compute capability 5.x
#elif CUDA_ARCH >= 300
// Device code path for compute capability 3.x
#elif !defined(CUDA_ARCH)
// Host code path
#endif
}
## __noinline__ 和 __forceinline__
前面我们说到```__device__```会被编译器编译为内联函数
```__noinline__```和 ```__forceinline__```则指定编译器不要内联,和强制内联这些函数。
这两个符号不能同时使用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WhatGhost!