MUSA C++ 语言扩展
概述
MUSA C++ 扩展是 MCC 编译器为 MTGPU 编程提供的语言扩展。它保持了与标准 C++ 的兼容性,同时添加了用于表达并行计算的语法结构。
核心扩展内容:
- 函数限定符:
__global__,__device__,__host__ - 内存限定符:
__shared__,__constant__,__managed__ - 内置变量:
threadIdx,blockIdx,gridDim,blockDim - Kernel 启动语法:
<<<grid, block>>>
本文档详细介绍 MUSA C++ 扩展的语法和用法。
变量限定符
device 限定符
__device__ 限定符声明的函数在 MUSA 设备上执行:
__device__ float device_function(float x) {
return x * x + 1.0f;
}
host 限定符
__host__ 限定符声明的函数在 MUSA 主机上执行:
__host__ float host_function(float x) {
return std::sqrt(x);
}
global 限定符
__global__ 限定符声明从主机调用、在设备上执行的函数(核函数):
__global__ void vector_add_kernel(
const float *a,
const float *b,
float *c,
int n
) {
int idx = blockIdx.x * blockDim.x + threadIdx.x;
if (idx < n) {
c[idx] = a[idx] + b[idx];
}
}