1. 前言

本文档提供的信息属于上海燧原科技有限公司和/或其子公司(以下统称“燧原”)所有,且燧原保留不经通知随时对本文档信息或对任何产品和服务做出修改的权利。本文档所含信息和本文档所引用燧原其他信息均“按原样”提供。燧原不担保信息、文本、图案、链接或本文档内所含其他项目的准确性或完整性。燧原不对本文档所述产品的可销售性、所有权、不侵犯知识产权、准确性、完整性、稳定性或特定用途适用性做任何暗示担保、保证。燧原可不经通知随时对本文档或本文档所述产品做出更改,但不承诺更新本文档。

在任何情况下,燧原不对因使用或无法使用本文档而导致的任何损害(包括但不限于利润损失、业务中断和信息损失等损害)承担责任。燧原不承担因应用或使用本文档所述任何产品或服务而产生的任何责任。

本文档所列的规格参数、性能数据和等级需使用特定芯片或计算机系统或组件来测量。经该等测试,本文档所示结果反映了燧原产品的大概性能。系统配置及软硬件版本、环境变量等的任何不同会影响实际性能,产品实际效果与文档描述存在差异的,均属正常现象。燧原不担保测试每种产品的所有参数。客户自行承担对产品适合并适用于客户计划的应用以及对应用程序进行必要测试的责任。客户产品设计的脆弱性会影响燧原产品的质量和可靠性并导致超出本文档范围的额外或不同的情况和/或要求。

燧原和燧原的标志是上海燧原科技有限公司申请和/或注册的商标。本文档并未明示或暗示地授予客户任何专利、版权、商标、集成电路布图设计、商业秘密或任何其他燧原知识产权的权利或许可。

本文档为版权所有并受全世界版权法律和条约条款的保护。未经燧原的事先书面许可,任何人不可以任何方式复制、修改、出版、上传、发布、传输或分发本文档。为免疑义,除了允许客户按照本文档要求使用文档相关信息外,燧原不授予其他任何明示或暗示的权利或许可。

燧原对本文档享有最终解释权。

1.1. 版本申明

版本 修改内容 修改时间
v1.0 初始版本,新增使用方法 8/12/2022

2. 简介

go-eflib 是基于 Enflame Management Library (EFML) 的golang开发库,经过对efml的二次封装提供GCU设备管理golang API,从而给开发者用户提供了enflame GCU 的设备管理golang接口。

3. 使用配置

3.1. go.mod配置

go-eflib 添加到 golang项目的 go.mod 文件里, 例如:

module modulename

go 1.15

require (
	go-eflib v1.0.0
)

3.2. vendor配置

先将go-eflib 整个目录复制到golang项目的vendor目录下,例如:

# ls vendor/
github.com  go-eflib  golang.org  google.golang.org  gopkg.in  k8s.io  modules.txt

同时将 go-eflib 添加到 vendor/modules.txt 里, 例如:

# go-eflib v1.0.0
## explicit
go-eflib
go-eflib/efml

3.3. import导入

编写代码时需要将go-eflib 导入文件内,例如:

package metrics

import (
	"strconv"

	"go-eflib"
	"go-eflib/efml"
)

如果添加了 go-eflib/efml 但是 文件里没用上,会出现类似以下的error信息:

imported and not used: "go-eflib/efml"

那么就在import里删除 go-eflib/efml这一行。

3.4. 代码示例

参考 目录下的 samples/metrics.go

4. 常见问题

4.1. go-eflib 里的libefml.so 版本

默认采用主机上的libefml.so,因此需要保证主机上已安装libefml.so。如果是ARM平台 存在 libefml-arm.so。 建议执行 ln -sf /usr/lib/libefml-arm.so /usr/lib/libefml.so 保证 /usr/lib/libefml.so 库名称可兼容。

4.2. 是否提供API介绍说明

推荐直接看代码以及编程samples示例。