Skip to main content

aclrtGetCurrentContext

aclrtCreateContext

函数功能

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

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

约束说明

支持以下使用场景:

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

函数原型

aclError aclrtCreateContext(aclrtContext *context, int32_t deviceId)

参数说明

参数名输入/输出说明
deviceId输入需创建Context的Device的ID。
context输出Context的指针。

返回值说明

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

参考资源

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

父主题: Context管理

aclrtDestroyContext

函数功能

销毁一个Context,释放Context的资源,同步接口。只能销毁通过aclrtCreateContext接口创建的Context。

函数原型

aclError aclrtDestroyContext(aclrtContext context)

参数说明

参数名输入/输出说明
context输入需销毁的Context。

返回值说明

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

参考资源

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

父主题: Context管理

aclrtSetCurrentContext

函数功能

设置线程的Context,同步接口。

约束说明

  • 支持以下场景:
    • 如果在某线程(例如:thread1)中调用aclrtCreateContext接口显式创建一个Context(例如:ctx1),则可以不调用aclrtSetCurrentContext接口指定该线程的Context,系统默认将ctx1作为thread1的Context。
    • 如果没有调用aclrtCreateContext接口显式创建Context,则系统将默认Context作为线程的Context,此时,不能通过aclrtDestroyContext接口来释放默认Context。
    • 如果多次调用aclrtSetCurrentContext接口设置线程的Context,以最后一次为准。
  • 若给线程设置的Context所对应的Device已经被复位,则不能将该Context设置为线程的Context,否则会导致业务异常。
  • 推荐在某一线程中创建的Context,在该线程中使用。若在线程A中调用aclrtCreateContext接口创建Context,在线程B中使用该Context,则需由用户自行保证两个线程中同一个Context下同一个Stream中任务执行的顺序。

函数原型

aclError aclrtSetCurrentContext(****aclrtContext context)

参数说明

参数名输入/输出说明
context输入指定线程当前的Context。

返回值说明

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

父主题: Context管理

aclrtGetCurrentContext

函数功能

获取线程的Context,同步接口。

如果用户多次调用aclrtSetCurrentContext接口设置当前线程的Context,则获取的是最后一次设置的Context。

函数原型

aclError aclrtGetCurrentContext(****aclrtContext *context)

参数说明

参数名输入/输出说明
context输出线程当前Context的指针。

返回值说明

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

父主题: Context管理

aclrtCtxSetSysParamOpt

函数功能

设置当前Context中的系统参数值,同步接口。

约束说明

多次调用本接口,以最后一次设置的值为准。

函数原型

aclError aclrtCtxSetSysParamOpt(****aclSysParamOpt opt, int64_t value)

参数说明

参数名输入/输出说明
opt输入系统参数。
value输入系统参数值。

返回值说明

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

父主题: Context管理

aclrtCtxGetSysParamOpt

函数功能

获取当前Context中的系统参数值,同步接口。

约束说明

系统参数无默认值,如果不调用aclrtCtxSetSysParamOpt接口设置系统参数的值,直接调用本接口获取系统参数的值,接口会返回失败。

函数原型

aclError aclrtCtxGetSysParamOpt(aclSysParamOpt opt, int64_t *value)

参数说明

参数名输入/输出说明
opt输入系统参数。
value输出存放系统参数值的内存的指针。

返回值说明

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

父主题: Context管理

aclrtGetOverflowStatus

函数功能

获取当前Context下所有Stream上任务的溢出状态,并将状态值拷贝到用户申请的Device内存中。异步接口。

约束说明

本接口是异步接口,在调用之后,需调用aclrtSynchronizeStream接口阻塞应用程序运行,直到指定Stream中的溢出状态查询任务已完成。

函数原型

aclError aclrtGetOverflowStatus(void *outputAddr, size_t outputSize, aclrtStream stream)

参数说明

参数名输入/输出说明
outputAddr输入&输出用户申请的Device内存,需通过aclrtMalloc接口申请。
outputSize输入需申请的Device内存大小,单位Byte,固定大小为64Byte。
stream输入指定Stream,用于下发溢出状态查询任务。

返回值说明

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

父主题: Context管理

在线提单