开发者
资源

初始化

CANN Runtime提供了aclInit、aclrtSetDevice接口,在应用程序启动时被调用,结合json配置文件完成如下功能:

  • 初始化环境:设置 CANN Runtime 运行时所需的环境参数,确保所有运行时资源和配置项都被正确加载。
  • 设备资源配置:初始化与硬件相关的资源(如 Ascend 处理器、加速卡等)并为其分配资源,使得后续的计算任务可以在适当的设备上执行。
  • 设置日志:提供日志记录的初始化,确保系统的运行状态可以被实时检查与调试。
  • 资源管理初始化:为后续的内存管理、任务调度、内存分配等功能提供资源准备。

以下是初始化及指定计算设备的代码示例,不可以直接拷贝编译运行,仅供参考。完整样例代码请参见Link

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// 初始化
int32_t deviceId = 0;
aclInit(nullptr); // json配置路径为nullptr, 默认初始化
aclrtSetDevice(deviceId);

// SetDevice后才可以调用其他aclrt运行时接口。
......

// 去初始化
aclrtResetDeviceForce(deviceId);
aclFinalize();

若不显式调用aclrtSetDevice接口时,可按照如下配置的默认Device进行处理。例如:aclInit接口的json文件中指定默认Device 为 0:

{
    "defaultDevice":{
        "default_device":"0"
    }
}

在aclInit接口中启用默认Device功能后,初始化的示例代码如下,不可以直接拷贝编译运行,仅供参考。完整样例代码请参见Link

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// 初始化
int32_t deviceId = 0;
aclInit(nullptr);

// 启用DefaultDevice后,可以不显式调用aclrtSetDevice直接调用运行时接口
// 接口中会按json配置文件指定的device,进行隐式aclrtSetDevice
aclrtMalloc(&devPtr, size, 0); 

......

// 去初始化
aclrtResetDeviceForce(deviceId);
aclFinalize();

除了默认Device功能之外,通过配置aclInit接口中的json文件,可实现零修改代码二进制完成性能数据采集、模型输入/输出数据导出、溢出算子Dump等功能,相关配置示例及使用说明请参考aclInit接口中的说明。