4. MXSML使用说明
4.1. 简介
MXSML(MetaX System Management Library)是一套C API程序开发库。应用程序使用这套开发库,可以方便地对沐曦的设备进行状态查询和管理。MXSML提供的API可以被使用C/C++/PYTHON/GO等语言开发的程序使用。
4.2. 安装
MXSML动态链接库是随Driver软件包一起发布,同时在MXMACA SDK包中会包含头文件,stub库,示例代码,Python bindings等文件。
Driver软件包的安装参见《曦云® 系列通用GPU驱动安装指南》中“安装驱动”章节。Driver软件包安装后,MXSML动态链接库位于 /opt/mxdriver/lib/libmxsml.so 。
MXMACA SDK包的安装参见《曦云® 系列通用GPU快速上手指南》。SDK安装后的文件列表参见表 4.1。
文件 |
说明 |
|---|---|
/opt/maca/include/mxsml/MxSml.h |
MXSML头文件 |
/opt/maca/include/mxsml/MxSmlExtension.h |
MXSML扩展头文件 |
/opt/maca/include/mxsml/mxsmlBindings.py |
MXSML Python bindings |
/opt/maca/lib/stub/libmxsml.so |
MXSML stub库 |
/opt/maca/share/mxsml/pymxsml-xxx.whl |
Pymxsml安装包 |
/opt/maca/share/mxsml/mxsmlDemo.c |
C示例程序 |
/opt/maca/share/mxsml/mxsml_demo.py |
Python示例程序 |
/opt/maca/share/mxsml/mxsmlDemo.go |
Go示例程序 |
4.3. 编程指南
用C语言调用MXSML API读取所有卡的信息,示例如下:
#include <stdio.h>
#include "MxSml.h"
int main()
{
// 调用任何MXSML API前都需要先调用mxSmlInit完成初始化
mxSmlReturn_t ret = mxSmlInit();
if(ret != MXSML_Success)
{
// 可通过mxSmlGetErrorString将错误号转换为错误信息
printf("mxSmlInit failed: %u, %s\n", ret, mxSmlGetErrorString(ret));
return 1;
}
// 获取可用设备总数,设备ID从0开始依次编号:0,1,2…deviceNum-1
int deviceNum = mxSmlGetDeviceCount();
for(int i = 0; i < deviceNum; i++)
{
mxSmlDeviceInfo_t deviceInfo;
if(mxSmlGetDeviceInfo(i, &deviceInfo) == MXSML_Success)
{
printf("device id %d, bdf id: %s, type: %s\n", i, deviceInfo.bdfId, deviceInfo.deviceName);
}
}
return 0;
}
使用以下命令完成编译:
gcc example.c -I/opt/maca/include/mxsml -L/opt/maca/lib/stub -lmxsml -o example
运行example:
export LD_LIBRARY_PATH=/opt/mxdriver/lib:$LD_LIBRARY_PATH
./example