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 }