开发者
下载

内存空间限定符

__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];
    
  • 动态内存通过以下方式申请使用:
    1
    extern __ubuf__ half dynamicBuf[]; 
    

    动态内存的实际内存大小需要在核函数启动时配置。