__device_builtin__ 是 **CUDA 編譯器內部使用的空宏定義**,對開發者**無任何語義影響**,完全可以忽略。
// driver_types.h 中
#define __device_builtin__
// 枚舉定義
enum __device_builtin__ cudaError { ... };
// typedef 使用
typedef __device_builtin__ enum cudaError cudaError_t;
enum cudaError { ... };
typedef enum cudaError cudaError_t;
AFX_MSG// afxwin.h
#define AFX_MSG
// 用戶代碼
class CMyWnd : public CWnd {
AFX_MSG void OnPaint(); // 展開後 void OnPaint();
};
同樣是**給框架工具(Class Wizard)識別用的標記**,預處理後消失,不影響 C++ 語義。
__device_builtin__。cudaError_t 本質是 enum cudaError 的別名,錯誤碼值定義在枚舉中(如 cudaSuccess=0)。| 宏 | 用途 | 開發者可見性 |
|---|---|---|
__host__ | 函數僅在宿主編譯 | 高(常用) |
__device__ | 函數僅在設備編譯 | 高(常用) |
__global__ | Kernel 函數入口 | 高(核心) |
__forceinline__ | 強制內聯 | 中(優化) |
__device_builtin__ | 內建類型標記 | 無(忽略) |
__builtin__ | 編譯器內建函數 | 低(間接使用) |
看懂頭文件不等於要用內部宏,專注於公開 API(__global__、__device__、錯誤碼枚舉值),才是高效 CUDA 開發的正道。