附录 A 运行环境管理
仓颉 TensorBoost 需要设置环境变量 CANGJIETB_GRAPH_MODE
来设置运行模式,当 CANGJIETB_GRAPH_MODE=true
时,仓颉 TensorBoost 将以静态图模式运行,否则为动态图模式。如未设置此环境变量,默认以动态图模式运行。
此外仓颉 TensorBoost 提供了 Context 类型用于运行管理,并在 context 包里定义了 Context 对象 g_context
。只要从 context 包中导入 g_context
,即可使用 Context 类型提供的外部接口管理运行状态。
public var g_context: Context
Context 类提供的相关方法如下所述:
设置运行模式
public func setEagerMode(eagerMode: Bool): Unit
仅支持在调试版本使用,非调试版本会抛出异常提示,当 eagerMode 选择 true 时,表示动态图模式运行。
查看运行模式
public func isEagerMode(): Bool
查看当前是动态图模式运行还是静态图模式运行,如果返回 true ,表示当前在动态图模式运行。
设置 Device 类型
public func setDeviceTarget(device: String): Unit
函数 setDeviceTarget 用于设置 Device 类型,合法的输入有 "Ascend","GPU","CPU",不符合输入要求会抛出异常,目前仓颉 TensorBoost 发布的软件版本仅支持 "Ascend" 和 "GPU"。默认不显示设置的情况下,仓颉 TensorBoost 自动设置 Device 类型是 "GPU"。
获取 Device 类型
public func getDeviceTarget(): String
函数 getDeviceTarget 用于获取 Device 类型,返回值有 "Ascend" ,"GPU","CPU",分别表示 Device 类型是 Ascend,GPU 和 CPU。
获取 Tensor GC 阈值
public func getTensorSize(): Int64
Tensor 占用的内存总量超过释放阈值会自动释放不使用的 Tensor,具体详见张量释放章节。
选择 Device 编号
public func setDeviceId(deviceId: UInt32): Unit
当存在多张昇腾计算芯片时,函数 setDeviceId 用于选择设备编号,取值范围为[0, 4095],不在范围内会抛出异常。如果 Device 为 GPU 或 CPU 时此设置无效。
设置当前分布式后端
public func setBackend(backend: String): Unit
初始化通信服务需要的分布式后端,backend 是分布式后端的名称,当前仅支持输入"nccl",仅支持 GPU 硬件平台,不符合规则会抛出异常,默认值为"none"。
查询当前分布式后端
public func getBackend(): String
代码示例
以下为程序开始时设置运行信息的示例代码:
from CangjieTB import context.*
main(): Int64
{
g_context.setSaveGraphs(true) // 保存计算图
g_context.setDeviceTarget("GPU") // 运行设备为GPU
// 测试代码写在此处
return 0
}