CUDA编程关键点
发布时间
阅读量:
阅读量
1、函数执行空间标识符
- 标识为全局类型的全局函数即为核型(kernel)全局功能通常由主处理器发起并执行于设备层面上。
- 标识为设备类型的全局功能仅能通过核型功能或其他设备型功能发起并执行于设备层面上。
- 标识为宿主类型的全局功能即为主处理器上的标准C++功能在宿主层面上运行并会被调用。
- 由于上述情况宿主类型的功能标识符可选择性地省略因此提供这一标识符使得同一功能既能作为标准C++宿主类型功能也能作为设备类型功能从而减少代码冗余编译器会针对宿主层面上下文分别编译这些相关功能。
- 禁止在同一全局定义上同时应用宿主型标识符与核型标识符因为这会导致同一全局定义既被视为宿主类型又被视为核型类型产生逻辑冲突。
- 同样禁止在同一全局定义上同时应用宿主型标识符与设备型标识符因为这会导致同一全局定义既被视为宿主类型又被视为设备型类型产生逻辑冲突。
- 编译器根据上下文自动决定将特定的功能视为内联(inline)还是非内联(non-inline)但可以通过使用
_NOINLINE宏指令强制指定某个特定的功能应以非内联形式存在(此指令并非总是被接受)或者使用_FORCEINLINE宏指令强制指定某个特定的功能应以内联形式存在。
2、网格与线程块大小的限制
CUDA 对于可配置的网格维度和线程块划分数量实施了严格的限制;适用于 Kep
全部评论 (0)
还没有任何评论哟~
