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的函数逻辑。
父主题: C++扩展接口