工具简介¶
EFSMI (Enflame System Management Interface)是用于管理 GCU 设备的Linux命令行工具。 可以实时查询各种 GCU 设备信息:包含温度、功耗、时钟频率等。 有关EFSMI命令的详细用法,请参考 EFSMI 命令。 EFSMI是基于 EFML (Enflame Management Library)开发的,EFML是提供给用户的一套访问底层GCU硬件的代码库。 请参阅章节 EFML - Enflame 管理库。
参考文献¶
词汇表¶
名称 |
说明 |
EFSMI |
EnFlame System Management Interface Tool which is based on EFML library for monitoring GCU device in system |
EFML |
EnFlame Management Library, a C/C++/Script library providing system management APIs |
GCU |
General Compute Unit, refer to PCIe based computing Devices delivered by Enflame |
UUID |
Universally Unique Identifier |
DPM |
Dynamic Power Managerment |
TDP |
Thermal Design Power |
ECC |
Error Correcting Code |
MCM |
Multi Chip Modules |
分发包¶
支持的OS类型¶
EFSMI仅支持 Linux 操作系统。所测试的系统如下所示。
系统 |
内核 |
架构 |
---|---|---|
Ubuntu 18.04.4 Server LTS |
4.15.0 |
x86_64/amd64 |
Ubuntu 20.04.2 Desktop LTS |
5.15.0 |
x86_64/amd64 |
4.14.105 |
x86_64/amd64 |
|
4.19.90 |
x86_64/amd64 |
|
4.19.90 |
aarch64 |
安装包内容¶
包含 efsmi 在内的所有内容在TopsPlatform安装包中提供。其中有 efsmi 和 efml RPM/DEB包, 以及python语言的开发库 pyefml。 具体内容如下表所示:
内容 |
说明 |
---|---|
efsmi-x.x.x.x86_64.rpm |
EFSMI RPM 软件包 |
efsmi_x.x.x_amd64.deb |
EFSMI DEB 软件包 |
efml_x.x.x.x86_64.rpm |
EFML RPM 软件包 |
efml_x.x.x_amd64.deb |
EFML DEB 软件包 |
pyefml-x.x.x-py3-none-any.whl |
EFML Python开发库软件包 |
Attention
各组件安装包现已不再单独提供,如有特殊需求请联系客户支持工程师。
安装步骤¶
请参考TopsPlatform 安装指南进行安装。
使用须知¶
在宿主机中运行¶
Attention
efsmi 的部分功能仅支持特权模式下执行
efsmi 在非特权模式下运行,需要依赖 enflame 提供的设备驱动程序
在容器中运行¶
efsmi 支持在容器中运行, 可以通过以下方式:
赋予容器特权模式¶
Attention
在宿主机上以特权用户身份启动容器
启动容器时, 使能 --privileged=true 参数以赋予容器内用户特权
不赋予特权模式¶
Attention
宿主机需要加载 enflame 提供的内核模块设备驱动程序
启动容器时, 使能 --device 选项映射 enflame 设备到容器内
在虚拟机中运行¶
Attention
efsmi 不支持在使用mdev虚拟设备的虚拟机中运行
EFSMI 命令¶
EFSMI是用于监控 GCU 状态的可执行程序,它基于 EFML 库。 EFSMI当前支持的命令如下表所示。
Attention
EFSMI 不支持在宿主机和docker 里面同时运行。
当前支持的命令列表:
参数 |
说明 |
---|---|
-h, –help |
显示此帮助说明
|
“” |
不带参数执行 ‘sudo efsmi’ , efsmi 将显示包含 版本号/驱动/功耗/频率/温度
e.g.
'sudo efsmi -i 0' 显示 GCU 卡 0 的信息
|
-L |
显示所有支持的 GCUs
|
–version |
显示 efsmi 版本号
|
-i X |
选择指定的 GCU 卡
e.g.
'sudo efsmi -i 0' 显示 GCU 卡 0 的信息
|
–dmon |
监控 GCU 设备的各种数据,刷新率为 1s。
按 Ctrl + C 退出监控。
子命令:
a. -s XXX
选择显示部分数据,XXX 可以是 “p”, “g”, “c”, “m”, “t” 及其组合, “all” 为所有信息。
p: 显示功耗/温度/使用率的监控信息
c: 显示频率的监控信息
m: 显示内存信息, 此功能依赖 enflame 提供的设备驱动程序, 在缺少驱动程序时, 内存信息为 0
t: 显示 PCIe/GCU-LARE 吞吐量的监控信息, GCU-LARE 在部分产品上不支持
all: 在同一行显示所有信息
e.g.
'sudo efsmi -dmon -s c -i 0' 显示 GCU0 的频率信息
b. -c X
设置循环次数
e.g.
'sudo efsmi -dmon -c 10' 打印10次设备监控信息
|
–dmon |
c. -o
显示时间戳信息
d. -w X
以秒为单位设置刷新时间间隔
|
–pmon |
监控使用 GCU 设备的进程的各种数据,刷新率为 1s。
按 Ctrl + C 退出监控。
子命令:
a. -c X
设置循环次数
e.g.
'sudo efsmi -pmon -c 10' 打印10次设备监控信息
b. -o
显示时间戳信息
c. -w X
以秒为单位设置刷新时间间隔
|
-q |
获取 GCU 状态信息
列出 GCUs 状态的详细信息,以 TAB 对齐
支持的子命令:
a. -d XXX
选择要显示的内容
XXX 可以设定为以下之一:
“POWER”, “CLOCK”, “DRIVER”, “DEVICE”, “PCIE” “MEMORY” “TEMP” “VOLT”
“USAGE”, “CABLE”, “ECC”, “RMA”, “VPU”
e.g.
'sudo efsmi -q -d CLOCK -i 0' 选择显示GCU0 的频率信息
注意:
内存信息依赖 enflame 提供的设备驱动程序
|
–ptopo |
显示 设备的PCIE 拓扑信息
|
-r |
该指令会复位目标 GCU 设备,在一些场景下可以用来重置 GCU 硬件状态。否则需要重启机器。
重置操作并不保证在所有情况下都能正常工作,应谨慎使用。
此命令需要依赖 enflame 提供的设备驱动程序
支持的子命令:
a. -y
自动确认提示。默认以“yes”作为所有提示的答案,并以非交互方式运行。
|
–ecc |
设置设备的ECC 状态
ECC 状态变更后需 GCU 复位方可生效(使用’-r hot’命令)
用法:
–ecc # 查询 ECC 状态
–ecc on|off # 打开/关闭 ECC 模式
该命令不支持在虚拟化环境的VF下使用。请确保在切换ECC 状态前,所有的任务都已经退出。
|
–sleep |
设置设备的功耗状态进入或者退出睡眠模式.
默认情况下,设备会在空闲一段时间后自动进入睡眠模式,并在有新的任务下发后自动退出睡眠模式。
该命令可手动使设备进入或者退出睡眠模式。
用法:
–sleep # 查询设备是否在睡眠模式
–sleep on|off # 设置设备进入/退出睡眠模式
# 切换结束后,设备大约会有10秒的延迟才能进入睡眠模式
在虚拟化环境下,该命令不支持在PF上切换设备功耗状态。当所有VF进入睡眠模式后,PF会自动进入睡眠模式。
而当有任意VF退出睡眠模式时,PF会自动退出睡眠模式。
|
–mcm |
设置设备的MCM 状态
该命令会自动触发设备复位,以使新的MCM 状态生效。
用法:
–mcm # 查询 MCM 状态
–mcm single|dual # 设置设备MCM 状态为单芯片/双芯片模式
在虚拟化环境下不支持切换MCM 状态。请确保在切换MCM 状态前,所有的任务都已经退出。
|
Attention
GCU-LARE 1 在部分产品上不支持。 ECC 在部分产品上不支持。
信息概览¶
不带参数执行 'sudo efsmi'
, 将显示如下的看板信息:
$ sudo efsmi ---------------------------------------------------------------------------- -------------------- Enflame System Management Interface ------------------- ----------- Enflame Tech, All Rights Reserved. 2024 Copyright (C) ---------- ---------------------------------------------------------------------------- +2024-05-30, 14:49:23 CST--------------------------------------------------+ |EFSMI V1.0.20240530 Driver Ver: 9e24f0b1c1a3e0694717a1f2f64e4fbb | |--------------------------------------------------------------------------| |--------------------------------------------------------------------------| | DEV NAME | FW VER | BUS-ID ECC | | TEMP Dpm Pwr(Usage/Cap)| Mem GCU Virt| DUsed SN | |--------------------------------------------------------------------------| | 0 S60 | 33.6.2 | 00:23:00.0 Enable | | 37 C Sleep 95W 300W | 42976MiB Disable| 0.0% A004B4052.... | +--------------------------------------------------------------------------+
字段 |
字段内容 |
---|---|
EFSMI Ver: |
EFSMI 版本号 |
Driver Ver: |
Driver 版本号 |
DEV: |
GCU 设备的ID号 |
NAME: |
GCU 设备型号 |
FW Ver: |
固件版本 |
Bus-ID: |
PCIe 设备 Domain/Bus/Device/Function ID |
ECC: |
Memory ECC 开/关 状态 |
TEMP: |
GCU 设备当前温度 |
Dpm: |
动态功耗管理, 详情参考下面表格 |
Pwr (Usage/Cap): |
当前功耗/额定功耗 |
DUsed: |
设备使用率 |
SN: |
设备序列号 |
GCU Virt: |
GCU虚拟化状态 |
DPM等级 |
详情 |
---|---|
Active |
正常模式,GCU满功耗运行。 一旦有任务运行,GCU将切换至Active |
Sleep: |
低功耗模式。在闲置若干秒后,GCU将从Active切换为Sleep |
Suspend: |
深层次低功耗模式。 在闲置数分钟后,GCU将从Sleep切换为Suspend |
Attention
默认条件下将展示所有设备的信息。 参数 “-i X” 可以用来获取指定的设备信息。
设备使用率:在 1 个采样周期内, GCU 上有 1 个或多于 1 个的 SIP 处于工作状态的时间占比, 采样周期为 1 秒。
信息查询¶
下图显示了执行命令 'sudo efsmi -q'
时得到的查询信息。
部分内容定义与EFSMI 看板中定义的相同。另有更多信息展示:
例如PCIe Tx/Rx 实时带宽信息、GCU-LARE端口连接情况和实时带宽信息和GCU/Mem信息。
默认情况下, “-q” 命令将查询并显示所有检测到的 GCU 设备,
参数 “-i X” 可用于选择特定的 GCU 。
支持的子命令请参见本章
EFSMI 命令 。
$ sudo efsmi -q ---------------------------------------------------------------- -------------- Enflame System Management Interface ------------- ----- Enflame Tech, All Rights Reserved. 2024 Copyright (C) ---- ---------------------------------------------------------------- DEV ID 0 Driver Info Ver : 1.2.0.4 Device Info Dev Name : S60 Dev UUID : T6R231010508 Dev SN : A029C30510020 Dev PN : EFB-0088800-00 Dev MFD : 2023-9-12 Health : True PCIe Info Vendor ID : 1e36 Device ID : c033 Domain : 0000 Bus : 07 Dev : 00 Func : 0 Link Info Max Link Speed : Gen5 Max Link Width : X16 Cur Link Speed : Gen4 Cur Link Width : X16 Tx NAK : 0 Rx NAK : 0 Tx Throughput : 0.00 MB/s Rx Throughput : 0.00 MB/s Clock Info Mem CLK : 7000 MHz Power Info Power Capa : 250 W Cur Power : 90 W Dpm Level : Active Device Mem Info Mem Size : 49120 MiB Mem Usage : 1129 MiB Mem Ecc : disable Temperature Info GCU Temp : 39 C Voltage Info VDD GCU : 0.896 V VDD SOC : 0.846 V VDD MEMQC : 1.347 V ECC Mode Current : Disable Pending : Disable RMA Info Flags : False DBE : 0 Power Cable Status : Normal VPU Info Encoder Usage : 0 % Decoder Usage : 0 %
设备监控¶
下面的图片显示了执行 'sudo efsmi -dmon'
时得到的设备监视器信息,它将显示功耗,GCU/Mem温度,频率等的实时抓取的板卡信息
详细的子命令请参见本章中的表格
EFSMI 命令。
收集的数据将显示在一行,每秒刷新一次。循环数和刷新周期可以通过子命令 “-c X” 和 “-w X” 调整。 ` Ctrl + C ` 可退出显示 。
$ sudo efsmi -dmon ---------------------------------------------------------------- -------------- Enflame System Management Interface ------------- ----- Enflame Tech, All Rights Reserved. 2024 Copyright (C) ---- ---------------------------------------------------------------- *Dev Logic Pwr DTemp DUsed Dpm MUsed Mem Mclk TxPci RxPci *Idx Id W C % L % Mib MHz MB/s MB/s 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 38 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 38 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 38 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 38 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 38 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 38 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 38 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 38 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 38 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0 0 0 90 39 0.0 Active 2.4 42976 7000 0.0 0.0
字段 |
字段内容 |
---|---|
Dev Idx: |
GCU卡序号 |
Logic Id: |
GCU卡逻辑序号 |
Pwr: |
板卡功耗(瓦) |
DTemp: |
板卡温度 |
DUsed: |
基于采样统计的设备使用率 |
Dpm: |
动态功耗管理,对应于GCU频率等级 |
MUsed: |
GCU 内存使用率 |
Mem: |
GCU 内存的大小 |
Ecc: |
ECC 状态 |
Mclk MHz: |
内存频率 |
TxPci/RxPci: |
PCIe 传输/接受 带宽 |
TxE/RxE: |
GCU-LARE 传输/接受 带宽, 部分产品不支持 |
Attention
通常情况下, 设备ID与逻辑ID是相同的;在某些平台上, 可能存在设备ID与逻辑ID不同的情况, 请留意这一点。
GCU 卡序号:按PCI 总线上Enflame GCU 设备bdf信息排列。
GCU 卡逻辑序号:按Enflame KerneL Module Driver 枚举 GCU 设备的先后次序排列。
设备使用率:在 1 个采样周期内, GCU 上有 1 个或多于 1 个的 SIP 处于工作状态的时间占比, 采样周期为 1 秒。
PCIE 拓扑¶
在PCIe的树形结构里, 每个GCU设备都是一个EP、endpoint,它会跟PCIe Switch 的下游端口相连。 PCIe Switch的上游端口会继续跟别的Switch或者CPU的RC(Root Complex)/Host Bridge的下游端口相连。 这样构建出一个树形的topo结构。
‘sudo efsmi -ptopo’ 命令可以展示这种结构的详细信息
$ sudo efsmi -ptopo ---------------------------------------------------------------- -------------- Enflame System Management Interface ------------- ----- Enflame Tech, All Rights Reserved. 2024 Copyright (C) ---- ---------------------------------------------------------------- gcu 0-0000:20:00.0 --> ... --> bridge-pci0000:16 --> cpu gcu 1-0000:35:00.0 --> ... --> bridge-pci0000:30 --> cpu gcu 2-0000:36:00.0 --> ... --> bridge-pci0000:30 --> cpu gcu 3-0000:39:00.0 --> ... --> bridge-pci0000:30 --> cpu gcu 4-0000:3d:00.0 --> ... --> bridge-pci0000:30 --> cpu gcu 5-0000:9c:00.0 --> ... --> bridge-pci0000:97 --> cpu gcu 6-0000:9d:00.0 --> ... --> bridge-pci0000:97 --> cpu gcu 7-0000:a0:00.0 --> ... --> bridge-pci0000:97 --> cpu gcu 8-0000:a4:00.0 --> ... --> bridge-pci0000:97 --> cpu gcu 9-0000:bd:00.0 --> ... --> bridge-pci0000:b0 --> cpu
ECC 状态¶
各个 GCU 的ECC状态可能不同,以’-q’ 命令获取当前模式,
可以通过 'sudo efsmi -ecc on|off -i 0'
设置设备0的ECC状态,’off’是禁用,’on’是启用; 设置后需按照提示复位设备方可生效。
该命令不支持在虚拟化环境中的VF上使用。
EFML - Enflame 管理库¶
EFML是一套基于C/C++语言开发的程序库,使用这套程序库,应用软件可以很方便的实现对Enflame 硬件设备的访问。 EFML公开提供的API可以被C/C++/Python/Go… 等语言开发的程序使用。
EFSMI 就是利用 EFML 实现硬件监控和管理的应用之一 。 EFML 是与 EFSMI 包一起发布的,包括它的头文件、库文件、脚本,还有一些示例代码 。
EFML包含的文件¶
下表是 EFML 库包含的文件列表
名称: |
说明 |
---|---|
efml.h |
提供API 支持的C头文件 |
libefml_static.a |
静态链接库 |
libefml.so |
动态链接库 |
pyefml.py |
python binding APIs |
pyefml/samples |
python 示例 |
C/C++ 示例¶
下面的例子展示了如何使用EFML库开发C/C++程序获取系统中GCU设备个数。
#include <iostream>
#include <string>
#include <string.h>
#include <stdint.h>
#include "efml.h"
int main(void)
{
int ret = 0;
// init library
ret += static_cast<int>EfmlInit(false);
// device info structure
efmlDeviceInfo_t dev_info;
// call 'EfmlGetDevCount' to get total device counts in system
uint32_t dev_cnt = 0;
ret += static_cast<int>EfmlGetDevCount(&dev_cnt);
std::cout << "device count = " << dev_cnt << std::endl;
// loop through each device get and print device VID/DID and Bus/Dev/Func info
for (uint32_t i = 0; i < dev_cnt; i++)
{
memset(&dev_info, 0, sizeof(efmlDeviceInfo_t));
ret += static_cast<int>EfmlGetDevInfo(i, &dev_info);
std::cout << "dev id = " << i << std::endl;
std::cout << "name = " << dev_info.name << std::endl;
std::cout << "vendor id = " << std::hex << dev_info.vendor_id << std::endl;
std::cout << "device id = " << std::hex << dev_info.vendor_id << std::endl;
std::cout << "domain = " << std::hex << dev_info.domain_id << std::endl;
std::cout << "bus = " << std::hex << dev_info.bus_id << std::endl;
std::cout << "dev = " << std::hex << dev_info.dev_id << std::endl;
std::cout << "func = " << std::hex << dev_info.func_id << std::endl;
}
// check if error returned in above steps
if (ret != static_cast<int>(EFML_SUCCESS))
std::cout << "execute failed! check log" << std::endl;
// shutdown library
EfmlShutdown();
return ret;
}
上述代码是C++ 代码, 编译上述代码, 请注意以下事项:
Attention
a.包含头文件efml .h b.首先调用API ‘EfmlInit()’来初始化库 c.在所有进程结束时,调用API ‘EfmlShutdown()’来释放库使用的资源 d.编译时使用’-L DIR_TO_EFML_LIB’来指定库文件存在的目录 e.编译时使用’-lefml’链接库文件 当使用静态链接库进行链接时,需要使用’-lpthread’
Script Bindings¶
Python¶
在人工智能行业中,Python 是开发应用程序的主要语言之一 。 EFML 还提供了python语言开发库。通过驱动安装包安装。
安装完成后,pyefml.py已经作为python模块安装到系统操作系统中,您可以导入该模块。
如果您想快速体验python中的pyefml,请尝试以下命令。
python
>>> import pyefml
>>> pyefml.efmlInit()
0
>>> pyefml.efmlGetDevCount()
1L
>>> pyefml.efmlShutdown()
第一条返回值 ‘0’ 表示 EFML 初始化正常。
第二条返回值 ‘1L’ 表示系统中检测到一张 GCU 卡。
下面的例子展示如何使用EFML python库的example.py脚本获取设备信息。 安装完成后命令行执行 ‘python ./example.py’即可。
# -*- coding: utf-8 -*-
import sys
from ctypes import *
import pyefml
# init and enumerate device
pyefml.efmlInit()
# get device counts
dev_cnt = pyefml.efmlGetDevCount()
print('total device count = {}'.format(dev_cnt))
for idx in range(dev_cnt):
dev_info = pyefml.efmlGetDevInfo(idx)
print('device idx: {}'.format(idx))
print('name = {}'.format(dev_info.name))
print('vendor_id = {:04x}'.format(dev_info.vendor_id))
print('device_id = {:04x}'.format(dev_info.device_id))
print('domain_id = {:04x}'.format(dev_info.domain_id))
print('bus_id = {:02x}'.format(dev_info.bus_id))
print('dev_id = {:x}'.format(dev_info.dev_id))
print("func_id = {:x}".format(dev_info.func_id))
# shutdown
pyefml.efmlShutdown()
与 C++ 的示例一样,pyefml.efmlInit()/pyefml.efmlShutdown() 需在初始化/退出的时候加载。 示例中的代码会打印出系统中所有 GCU 设备的 厂商识别码/设备识别码 Bus/Dev/Func 信息。
Go¶
Go 是一款开源编程软件,它使得代码实现更加简单,可靠和高效,也因此越来越受欢迎。 我们也提供了支持Go语言的efml 库。
Attention
请参阅 Golang 的官方文档去搭建 Go 开发环境。 简而言之,你需要安装Golang并设置Go 开发环境,包含设置 “$GOPATH” and “$GOROOT”。
下面有一个简单的示例 “main.go” ,示例可以打印出基本的设备信息。
package main
import (
"efml"
"fmt"
)
func main() {
efml.Init()
cnt, _ := efml.GetDevCount()
for dev_idx := uint32(0); dev_idx < cnt; dev_idx++ {
devInfo, _ := efml.GetDevInfo(dev_idx)
fmt.Println("device idx:", dev_idx)
fmt.Println("name = ", devInfo.Name)
fmt.Printf("vendor_id = %4x\n", devInfo.Vendor_id)
fmt.Printf("device_id = %4x\n", devInfo.Device_id)
fmt.Printf("domain_id = %4x\n", devInfo.Domain_id)
fmt.Printf("bus_id = %2x\n", devInfo.Bus_id)
fmt.Printf("dev_id = %2x\n", devInfo.Dev_id)
fmt.Printf("func_id = %2x\n", devInfo.Func_id)
}
efml.Shutdown()
}
编译上述代码,你需要正确的生成和放置库文件的源代码。 Golang 的源代码放置于名为“src”的文件夹, efml 库文件放在下面的子目录。 在 efml 目录,你可以找到如下文件:
名称: |
说明 |
---|---|
efml.h |
提供API 支持的C头文件 |
libefml.so |
动态链接库 |
efml_dl.go |
go binding 库文件 |
efml_bindings.go |
go binding 文件 |
源文件的代码结构应类似于:
重定向 “$GOPATH” to “dev_info” 链接, 你可以执行如下命令:
'export GOPATH="/PATH/TO/dev_info'
另,需设置环境变量 “LD_LIBRARY_PATH” 以便于查找 “libefml.so”:
'export LD_LIBRARY_PATH=/PATH/TO/dev_info/src/efml:$LD_LIBRARY_PATH'
'ldconfig'
返回到 “dev_info” 目录,执行 “go build”, 代码将被编译成 “dev_info” 可执行文件。
在目标机器执行生成的 “dev_info” 程序,将会输出目标设备的基本信息。
- 1
GCU-LARE TM 是为支持加速卡之间互联的燧原智能互联技术。