文档
注册

函数:create_context

C函数原型

aclError aclrtCreateContext(aclrtContext *context, int32_t deviceId)

Python函数

context, ret = acl.rt.create_context(device_id)

函数功能

在当前进程或线程中显式创建一个Context。同步接口。

对于Atlas 200/300/500 推理产品,该Context中包含2个Stream,1个默认Stream和1个执行内部同步的Stream。

对于Atlas 训练系列产品,该Context中包含1个默认Stream。

对于Atlas A2训练系列产品,该默认Context中包含1个默认Stream。

对于Atlas 推理系列产品(Ascend 310P处理器),在标准形态下,该Context中包含2个Stream,1个默认Stream和1个执行内部同步的Stream。

输入说明

device_id:int,指定需要创建Context的Device的ID设备号。

返回值说明

context:int,表示创建的Context在C中的指针。

ret:int,错误码。

  • 返回0表示成功。
  • 返回其它值表示失败。

约束说明

支持以下使用场景:

  • 若不调用acl.rt.create_context接口显式创建Context,那系统会使用默认Context,该默认Context是在调用acl.rt.set_device接口时隐式创建的。
    • 隐式创建Context:适合简单、无复杂交互逻辑的应用,但缺点在于,在多线程编程中,执行结果取决于线程调度的顺序。
    • (推荐)显式创建Context:适合大型、复杂交互逻辑的应用,且便于提高程序的可读性、可维护性。
  • 若在某一进程内创建多个Context(Context的数量与Stream相关,Stream数量有限制,请参见acl.rt.create_stream),当前线程在同一时刻内只能使用其中一个Context,建议通过acl.rt.set_context接口明确指定当前线程的Context,增加程序的可维护性
说明:

对于Atlas 200/300/500 推理产品,如果在程序中没有调用acl.rt.set_device接口,那么在首次调用acl.rt.create_context接口时,系统内部会根据该接口传入的Device ID,为该Device绑定一个默认Stream(一个Device仅绑定一个默认Stream),因此仅在首次调用acl.rt.create_context接口时,会占用3个Stream:Device上绑定的默认Stream、Context内的默认Stream、Context内的用于执行内部同步的Stream。

对于Atlas 推理系列产品(Ascend 310P处理器),对于Atlas 训练系列产品,如果在程序中没有调用acl.rt.set_device接口,那么在首次调用acl.rt.create_context接口时,系统内部会根据该接口传入的Device ID,为该Device绑定一个默认Stream(一个Device仅绑定一个默认Stream),因此仅在首次调用acl.rt.create_context接口时,会占用2个Stream:Device上绑定的默认Stream、Context内的默认Stream。

注意事项

参考资源

接口调用流程与示例,请参见运行管理资源申请与释放同步等待

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词