函数:create_context
产品支持情况
产品 |
是否支持 |
---|---|
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
功能说明
在当前进程或线程中显式创建一个Context。
对于
对于
对于
对于
对于
对于

如果在应用程序中没有调用acl.rt.set_device接口,那么在首次调用acl.rt.create_context接口时,系统内部会根据该接口传入的Device ID,为该Device绑定一个默认Stream(一个Device仅绑定一个默认Stream),因此在首次调用acl.rt.create_context接口时,占用的Stream数量 = Device上绑定的默认Stream + Context中包含的Stream。
函数原型
- C函数原型
1
aclError aclrtCreateContext(aclrtContext *context, int32_t deviceId)
- python函数
1
context, ret = acl.rt.create_context(device_id)
参数说明
参数名 |
说明 |
---|---|
device_id |
int,指定需要创建Context的Device设备号。 |
返回值说明
返回值 |
说明 |
---|---|
context |
int,表示创建的Context的指针地址。 |
ret |
int,错误码,返回0表示成功,返回其它值表示失败。 |
约束说明
支持以下使用场景:
- 若不调用acl.rt.create_context接口显式创建Context,那系统会使用默认Context,该默认Context是在调用acl.rt.set_device接口时隐式创建的。
- 隐式创建Context:适合简单、无复杂交互逻辑的应用,但缺点在于,在多线程编程中,执行结果取决于线程调度的顺序。
- 显式创建Context:适合大型、复杂交互逻辑的应用,便于提高程序的可读性、可维护性。
- 在某一进程中指定Device,该进程内的多个线程可共用在此Device上显式创建的Context(调用acl.rt.create_context接口显式创建Context)。
- 若在某一进程内创建多个Context(Context的数量与Stream相关,Stream数量有限制,请参见acl.rt.create_stream),当前线程在同一时刻内只能使用其中一个Context,建议通过acl.rt.set_context接口明确指定当前线程的Context,增加程序的可维护性。