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

表 4.1 MXSML安装文件列表

文件

说明

/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