package slave
|
|
import (
|
"analysis/app"
|
"analysis/logo"
|
"analysis/util"
|
"context"
|
"plugin"
|
"strconv"
|
|
"basic.com/valib/gogpu.git"
|
)
|
|
// TwoPluginConflict test
|
func TwoPluginConflict(commSoFile, config string) bool {
|
cfg, err := app.ReadConfig(config)
|
if err != nil {
|
logo.Errorln("Slave Read Config Error: ", err)
|
return false
|
}
|
sdk := LoadSDK(cfg.SoFile)
|
if sdk == nil {
|
}
|
|
plug, err := plugin.Open(commSoFile)
|
if err != nil || plug == nil {
|
logo.Errorln("Slave Open so File: ", commSoFile, " Error: ", err)
|
return false
|
}
|
return false
|
}
|
|
// Run run
|
func Run(ctx context.Context, config, typ, id string, gpu int, shm bool) bool {
|
cfg, err := app.ReadConfig(config)
|
if err != nil {
|
logo.Errorln("Slave Read Config Error: ", err)
|
return false
|
}
|
sdk := LoadSDK(cfg.SoFile)
|
if sdk == nil {
|
return false
|
}
|
|
// 配置文件设置了gpu memory且值至少两位数,判断是否有gpu可用
|
if v, ok := cfg.Param["gpu-memory"]; ok && len(v) > 1 {
|
indices := gogpu.RankGPU()
|
if len(indices) == 0 {
|
logo.Errorln("!!!!!!THERE IS NO VALID GPU")
|
return false
|
}
|
}
|
// 设置gpu index
|
rGPU := gpu
|
if v, ok := cfg.Param["gpu"]; ok {
|
if t, err := strconv.Atoi(v); err != nil {
|
rGPU = -1
|
} else {
|
rGPU = t
|
}
|
}
|
// func Create(config string, typ, id string, gpu int, shm bool, ipc2Rule string, ruleMaxSize int, fn func(...interface{}), reserved map[string]string) interface{}
|
// func Run(ctx context.Context, i interface{}) {
|
|
handle := sdk.fnCreate(config, typ, id, rGPU, shm, util.ToRuleIPC, 30, logo.Infoln, nil)
|
if handle == nil {
|
logo.Errorln("Create SDK: ", typ, " ID: ", id, " Error")
|
return false
|
}
|
|
sdk.fnRun(ctx, handle)
|
|
return true
|
}
|