内存空间限定符
__gm__
在SIMD与SIMT混合编程中使用内存空间限定符__gm__来表示分配于设备侧全局内存的对象,全局内存对象可以声明为标量、用户自定义结构体的指针。
__gm__ int *var; // var point to an array of int elements
typedef struct {
float a[3];
int b[2];
} foo_t;
__gm__ foo_t *info; // info point to an array of foo_t elements
__ubuf__
在SIMD与SIMT混合编程中使用内存空间限定符__ubuf__来表示动、静态内存,静态内存的大小在编译期是确定的,动态内存的大小在核函数执行时确定。
- 静态内存通过数组分配:
1__ubuf__ half staticBuf[1024];
- 动态内存通过以下方式申请使用:
1extern __ubuf__ half dynamicBuf[];
动态内存的实际内存大小需要在核函数启动时配置。
父主题: 扩展语法