Function: create_context
Applicability
|
Product |
Supported (√/x) |
|---|---|
|
|
√ |
|
|
√ |
|
|
√ |
|
|
√ |
|
|
√ |
Function Usage
Explicitly creates a context in the current process or thread.
For the
For the
For the
For the
For the
If acl.rt.set_device is not called in the app, when acl.rt.create_context is called for the first time, the system binds a default stream to the device based on the device ID passed by the API (one device is bound to only one default stream). Therefore, when acl.rt.create_context is called for the first time, the number of occupied streams is calculated as follows: Number of occupied streams = Number of default streams bound to the device + Number of streams contained in the context.
Prototype
- C Prototype
1aclError aclrtCreateContext(aclrtContext *context, int32_t deviceId)
- Python Function
1context, ret = acl.rt.create_context(device_id)
Parameter Description
|
Parameter |
Description |
|---|---|
|
device_id |
Int, ID of the device for which the context is to be created. |
Return Value Description
|
Return Value |
Description |
|---|---|
|
context |
Int, pointer address of the created context. |
|
ret |
Int, error code: 0 on success; else, failure. |
Restrictions
The following use cases are supported:
- If the acl.rt.create_context API is not called to display the created context, the system uses the default context, which is created implicitly when acl.rt.set_device is called.
- Implicit context creation: applies to simple apps with low complicity of interaction logic. However, in multithreaded programming, the execution result depends on the thread scheduling sequence.
- Explicit context creation: applies to large apps with complex interaction logic, offering better app readability and maintainability.
- If a device is specified in a process, multiple threads in the process can share the context explicitly created on the device by calling acl.rt.create_context.
- If multiple contexts are created in a process, the current thread can use only one context at a time. It is recommended that acl.rt.set_context be used to specify the context of the current thread to improve program maintainability. The number of contexts depends on the number of streams. For details, see acl.rt.create_stream.