开发者
下载

aclrtGetSymbolAddress

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

Atlas A3 训练系列产品/Atlas A3 推理系列产品

Atlas A2 训练系列产品/Atlas A2 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 推理系列产品

Atlas 训练系列产品

功能说明

获取Device变量的地址。

本接口为封装接口,仅适用于C++程序,接口内部调用C接口aclrtGetSymbolAddress

函数原型

1
2
template <typename T>
aclError aclrtGetSymbolAddress(const T &symbol, void **devPtr)

参数说明

参数名

输入/输出

说明

symbol

输入

Device变量名。

此处的Device变量通过__gm__方式声明的变量。

devPtr

输出

与symbol关联的Device内存地址指针。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError

约束说明

  • 本接口仅适用于使用Ascend C语言开发自定义算子并基于毕昇编译器进行Host和Device代码混合编译的场景。
  • Device变量地址仅在当前Device有效,切换Device后需重新获取地址。
  • 仅支持AI Core算子中的Device变量,具体约束如下:
    • 仅支持在main函数所在文件中定义的Device变量(如__gm__ float convWeights)。
    • 支持通过extern关键字跨文件引用Device变量。例如,在文件A中定义__gm__ float convWeights,文件B中可通过extern __gm__ float convWeights声明并引用该变量。需要满足编译要求:使用毕昇编译器的-dc模式,将多个源文件编译为一个算子二进制文件。
    • 支持基础数据类型、函数指针、结构体及数组,不支持class类型。注意,函数指针只支持指向纯Scalar的函数,不能有效区分Cube和Vector的函数逻辑。