# context_c [![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg)](https://gitee.com/mindspore/docs/blob/master/docs/lite/api/source_zh_cn/api_c/context_c.md) ```c #include ``` context_c.h提供了操作Context的接口,Context对象用于保存执行中的环境变量。 ## 公有函数 | function | | -------------------------------------------------------------------------------------------------------------------------------------------------- | | [MSContextHandle MSContextCreate()](#mscontextcreate) | | [void MSContextDestroy(MSContextHandle* context)](#mscontextdestroy) | | [void MSContextSetThreadNum(MSContextHandle context, int32_t thread_num)](#mscontextsetthreadnum) | | [int32_t MSContextGetThreadNum(const MSContextHandle context)](#mscontextgetthreadnum) | | [void MSContextSetThreadAffinityMode(MSContextHandle context, int mode)](#mscontextsetthreadaffinitymode) | | [int MSContextGetThreadAffinityMode(const MSContextHandle context)](#mscontextgetthreadaffinitymode) | | [void MSContextSetThreadAffinityCoreList(MSContextHandle context, const int32_t* core_list, size_t core_num)](#mscontextsetthreadaffinitycorelist) | | [int32_t* MSContextGetThreadAffinityCoreList(const MSContextHandle context, size_t* core_num)](#mscontextgetthreadaffinitycorelist) | | [void MSContextSetEnableParallel(MSContextHandle context, bool is_parallel)](#mscontextsetenableparallel) | | [bool MSContextGetEnableParallel(const MSContextHandle context)](#mscontextgetenableparallel) | | [void MSContextAddDeviceInfo(MSContextHandle context, MSDeviceInfoHandle device_info)](#mscontextadddeviceinfo) | | [MSDeviceInfoHandle MSDeviceInfoCreate(MSDeviceType device_type)](#msdeviceinfocreate) | | [void MSDeviceInfoDestroy(MSDeviceInfoHandle* device_info)](#msdeviceinfodestroy) | | [void MSDeviceInfoSetProvider(MSDeviceInfoHandle device_info, const char* provider)](#msdeviceinfosetprovider) | | [const char* MSDeviceInfoGetProvider(const MSDeviceInfoHandle device_info)](#msdeviceinfogetprovider) | | [void MSDeviceInfoSetProviderDevice(MSDeviceInfoHandle device_info, const char* device)](#msdeviceinfosetproviderdevice) | | [const char* MSDeviceInfoGetProviderDevice(const MSDeviceInfoHandle device_info)](#msdeviceinfogetproviderdevice) | | [const char* MSDeviceType MSDeviceInfoGetDeviceType(const MSDeviceInfoHandle device_info)](#msdeviceinfogetdevicetype) | | [void MSDeviceInfoSetEnableFP16(MSDeviceInfoHandle device_info, bool is_fp16)](#msdeviceinfosetenablefp16) | | [bool MSDeviceInfoGetEnableFP16(const MSDeviceInfoHandle device_info)](#msdeviceinfogetenablefp16) | | [void MSDeviceInfoSetFrequency(MSDeviceInfoHandle device_info, int frequency)](#msdeviceinfosetfrequency) | | [int MSDeviceInfoGetFrequency(const MSDeviceInfoHandle device_info)](#msdeviceinfogetfrequency) | ### MSContextCreate ```C MSContextHandle MSContextCreate() ``` 创建一个MSContext。 - 返回值 指向创建的MSContext的指针。 ### MSContextDestroy ```C void MSContextDestroy(MSContextHandle* context) ``` 销毁一个MSContext。 - 参数 - `context`: 指向MSContext的指针。 ### MSContextSetThreadNum ```C void MSContextSetThreadNum(MSContextHandle context, int32_t thread_num); ``` 设置运行时的线程数量,该选项仅MindSpore Lite有效。 若参数context为空则不会做任何操作,并在日志中输出空指针信息。 - 参数 - `context`: 指向MSContext的指针。 - `thread_num`: 运行时的线程数。 ### MSContextGetThreadNum ```C int32_t MSContextGetThreadNum(const MSContextHandle context) ``` 获取MSContext的线程数量,该选项仅MindSpore Lite有效。 若参数context为空则不会做任何操作,并在日志中输出空指针信息。 - 参数 - `context`: 指向MSContext的指针。 - 返回值 线程数量。 ### MSContextSetThreadAffinityMode ```C void MSContextSetThreadAffinityMode(MSContextHandle context, int mode) ``` 设置运行时的CPU绑核策略,该选项仅MindSpore Lite有效。 若参数context为空则不会做任何操作,并在日志中输出空指针信息。 - 参数 - `context`: 指向MSContext的指针。 - `mode`: 绑核的模式,有效值为0-2,0为默认不绑核,1为绑大核,2为绑中核。 ### MSContextGetThreadAffinityMode ```C int MSContextGetThreadAffinityMode(const MSContextHandle context) ``` 获取当前CPU绑核策略,该选项仅MindSpore Lite有效。 若参数context为空则返回-1,并在日志中输出空指针信息。 - 参数 - `context`: 指向MSContext的指针。 - 返回值 当前CPU绑核策略,有效值为0-2,0为默认不绑核,1为绑大核,2为绑中核。 ### MSContextSetThreadAffinityCoreList ```C void MSContextSetThreadAffinityCoreList(MSContextHandle context, const int32_t* core_list, size_t core_num) ``` 设置运行时的CPU绑核列表,如果同时调用了两个不同的`SetThreadAffinity`函数来设置同一个MSContext,仅`core_list`生效,而`mode`不生效。该选项仅MindSpore Lite有效。 若参数context为空则不会做任何操作,并在日志中输出空指针信息。 - 参数 - `context`: 指向MSContext的指针。 - `core_list`: CPU绑核的列表。 - `core_num`: 核的数量。 ### MSContextGetThreadAffinityCoreList ```C int32_t* MSContextGetThreadAffinityCoreList(const MSContextHandle context, size_t* core_num) ``` 获取当前CPU绑核列表,该选项仅MindSpore Lite有效。 若参数context为空则会返回`nullptr`,并在日志中输出空指针信息。 - 参数 - `context`: 指向MSContext的指针。 - `core_num`: 输出参数,表示返回值对应的数组的长度。 - 返回值 当前CPU绑核列表。 ### MSContextSetEnableParallel ```C void MSContextSetEnableParallel(MSContextHandle context, bool is_parallel) ``` 设置运行时是否支持并行,该选项仅MindSpore Lite有效。 若参数context为空则不会做任何操作,并在日志中输出空指针信息。 - 参数 - `context`: 指向MSContext的指针。 - `is_parallel`: 为true则支持并行。 ### MSContextGetEnableParallel ```C bool MSContextGetEnableParallel(const MSContextHandle context) ``` 获取当前是否支持并行,该选项仅MindSpore Lite有效。 若参数context为空则会返回false,并在日志中输出空指针信息。 - 参数 - `context`: 指向MSContext的指针。 - 返回值 返回值为为true,代表支持并行。 ### MSContextAddDeviceInfo ```C void MSContextAddDeviceInfo(MSContextHandle context, MSDeviceInfoHandle device_info) ``` 添加运行设备信息。 - 参数 - `context`: 指向MSContext的指针。 - `device_info`: 指向设备类型信息的指针。 - 返回值 运行设备添加是否成功。 ### MSDeviceInfoCreate ```C MSDeviceInfoHandle MSDeviceInfoCreate(MSDeviceType device_type) ``` 新建运行设备信息,若创建失败则会返回`nullptr`,并日志中输出信息。 - 参数 - `device_type`: 设备类型,具体见[MSDeviceType](https://www.mindspore.cn/lite/api/zh-CN/master/api_c/types_c.html#msdevicetype)。 - 返回值 指向创建的运行设备信息的指针。 ### MSDeviceInfoDestroy ```C void MSDeviceInfoDestroy(MSDeviceInfoHandle* device_info) ``` 销毁一个运行设备信息对象。 - 参数 - `device_info`: 指向设备类型信息的指针。 ### MSDeviceInfoSetProvider ```C void MSDeviceInfoSetProvider(MSDeviceInfoHandle device_info, const char* provider) ``` 设置设备生产商名称。若参数device_info为空则不会做任何操作,并在日志中输出空指针信息。 - 参数 - `device_info`: 指向设备类型信息的指针。 - `provider`: 生产商名称。 ### MSDeviceInfoGetProvider ```C const char* MSDeviceInfoGetProvider(const MSDeviceInfoHandle device_info) ``` 获取生产商设备名称。若参数device_info为空则输出`nullptr`,并在日志中输出空指针信息。 - 参数 - `device_info`: 指向设备类型信息的指针。 - 返回值 生产商名称。 ### MSDeviceInfoSetProviderDevice ```C void MSDeviceInfoSetProviderDevice(MSDeviceInfoHandle device_info, const char* device) ``` 设置供应商设备名称。若参数device_info为空则不会做任何操作,并在日志中输出空指针信息。 - 参数 - `device_info`: 指向设备类型信息的指针。 - `device`: 供应商设备类型,例如"CPU"。 ### MSDeviceInfoGetProviderDevice ```C const char* MSDeviceInfoGetProviderDevice(const MSDeviceInfoHandle device_info) ``` 获取生产商设备名。若参数device_info为空则不会做任何操作,并在日志中输出空指针信息。 - 参数 - `device_info`: 指向设备类型信息的指针。 - 返回值 生产商设备名。 ### MSDeviceInfoGetDeviceType ```C const char* MSDeviceType MSDeviceInfoGetDeviceType(const MSDeviceInfoHandle device_info) ``` 获得生产商设备类型。若参数device_info为空则返回`nullptr`,并在日志中输出空指针信息。 - 参数 - `device_info`: 指向设备类型信息的指针。 - 返回值 生产商设备类型。 ### MSDeviceInfoGetEnableFP16 ```C bool MSDeviceInfoGetEnableFP16(const MSDeviceInfoHandle device_info) ``` 获取是否开启float16推理模式,仅CPU/GPU设备可用。若参数device_info为空则返回flase,并在日志中输出空指针信息。 - 参数 - `device_info`: 指向设备类型信息的指针。 - 返回值 是否开启FP16。 ### MSDeviceInfoSetEnableFP16 ```C void MSDeviceInfoSetEnableFP16(MSDeviceInfoHandle device_info, bool is_fp16) ``` 设置是否开启float16推理模式,仅CPU/GPU设备可用。若参数device_info为空则不会做任何操作,并在日志中输出空指针信息。 - 参数 - `device_info`: 指向设备类型信息的指针。 - `is_fp16`: 是否基于float16进行推理。 ### MSDeviceInfoSetFrequency ```C void MSDeviceInfoSetFrequency(MSDeviceInfoHandle device_info, int frequency) ``` 设置NPU的频率类型,仅NPU设备可用。若参数device_info为空或者当前设备不为NPU则不会做任何操作,并在日志中输出具体信息。 - 参数 - `device_info`: 指向设备类型信息的指针。 - `frequency`: 频率类型,取值范围为0-4,默认是3。1表示低功耗,2表示平衡,3表示高性能,4表示超高性能。 ### MSDeviceInfoGetFrequency ```C int MSDeviceInfoGetFrequency(const MSDeviceInfoHandle device_info) ``` 获取NPU的频率类型,仅NPU设备可用。若参数device_info为空或者当前设备不为NPU则返回-1,并在日志中输出具体信息。 - 参数 - `device_info`: 指向设备类型信息的指针。 - 返回值 NPU的频率类型。