@@ -2993,33 +2993,33 @@ func GetCloudbrainCluster(task models.Cloudbrain, ctx *context.Context) string {
return ""
}
func GetCloudbrainCardDuration(task models.Cloudbrain) string {
C ardNum, _, _ := GetCloudbrainCardNumAndType(task)
CardDuration := models.ConvertDurationToStr(int64(C ardNum) * task.Duration)
return C ardDuration
c ardNum, _, _ := GetCloudbrainCardNumAndType(task)
cardDuration := models.ConvertDurationToStr(int64(c ardNum) * task.Duration)
return c ardDuration
}
func GetCloudbrainWaitTime(task models.Cloudbrain) string {
var W aitTime string
var w aitTime string
if task.Status == string(models.JobWaiting) {
W aitTimeInt := time.Now().Unix() - task.CreatedUnix.AsTime().Unix()
WaitTime = models.ConvertDurationToStr(W aitTimeInt)
if W aitTimeInt < 0 {
W aitTime = "00:00:00"
w aitTimeInt := time.Now().Unix() - task.CreatedUnix.AsTime().Unix()
waitTime = models.ConvertDurationToStr(w aitTimeInt)
if w aitTimeInt < 0 {
w aitTime = "00:00:00"
}
} else if task.Status == string(models.JobStopped) && task.StartTime.AsTime().Unix() == 0 {
W aitTimeInt := task.EndTime.AsTime().Unix() - task.CreatedUnix.AsTime().Unix()
WaitTime = models.ConvertDurationToStr(W aitTimeInt)
if W aitTimeInt < 0 {
W aitTime = "00:00:00"
w aitTimeInt := task.EndTime.AsTime().Unix() - task.CreatedUnix.AsTime().Unix()
waitTime = models.ConvertDurationToStr(w aitTimeInt)
if w aitTimeInt < 0 {
w aitTime = "00:00:00"
}
} else {
W aitTimeInt := task.StartTime.AsTime().Unix() - task.CreatedUnix.AsTime().Unix()
WaitTime = models.ConvertDurationToStr(W aitTimeInt)
if W aitTimeInt < 0 {
W aitTime = "00:00:00"
w aitTimeInt := task.StartTime.AsTime().Unix() - task.CreatedUnix.AsTime().Unix()
waitTime = models.ConvertDurationToStr(w aitTimeInt)
if w aitTimeInt < 0 {
w aitTime = "00:00:00"
}
}
return W aitTime
return w aitTime
}
func GetCloudbrainCardNumAndType(task models.Cloudbrain) (int, string, error) {
@@ -3029,11 +3029,11 @@ func GetCloudbrainCardNumAndType(task models.Cloudbrain) (int, string, error) {
if !models.GpuInfosMapInitFlag {
models.InitCloudbrainOneGpuInfoMap()
}
F lavorName, err := GetCloudbrainFlavorName(task)
f lavorName, err := GetCloudbrainFlavorName(task)
if err != nil {
return 0, "", nil
}
return getCardNumAndTypeByFlavorname(F lavorName)
return getCardNumAndTypeByFlavorname(f lavorName)
}
func getCardNumAndTypeByFlavorname(FlavorName string) (int, string, error) {
@@ -3058,36 +3058,36 @@ func getCardNumAndTypeByFlavorname(FlavorName string) (int, string, error) {
func GetCloudbrainFlavorName(task models.Cloudbrain) (string, error) {
if task.Type == models.TypeCloudBrainOne {
ResourceSpec, G puInfo, err := getCloudBrainOneResourceSpec(task)
resourceSpec, g puInfo, err := getCloudBrainOneResourceSpec(task)
if err != nil {
log.Info("getCloudBrainOneResourceSpec err:", err)
return "", err
} else {
if ResourceSpec == nil || G puInfo == nil {
err := errors.New("ResourceSpec or G puInfo is nil")
if resourceSpec == nil || g puInfo == nil {
err := errors.New("resourceSpec or g puInfo is nil")
return "", err
} else {
CloudbrainOneFlavorName := "GPU:" + strconv.Itoa(ResourceSpec.GpuNum) + "*Nvidia-" + G puInfo.Value +
" | CPU:" + strconv.Itoa(ResourceSpec.CpuNum) + "核" + strconv.Itoa(R esourceSpec.MemMiB) + "MB"
CloudbrainOneFlavorName := "GPU:" + strconv.Itoa(resourceSpec.GpuNum) + "*Nvidia-" + g puInfo.Value +
" | CPU:" + strconv.Itoa(resourceSpec.CpuNum) + "核" + strconv.Itoa(r esourceSpec.MemMiB) + "MB"
return CloudbrainOneFlavorName, nil
}
}
} else if (task.Type == models.TypeCloudBrainTwo || task.Type == models.TypeC2Net) && task.FlavorName != "" {
R eplaceFlavorName := strings.ReplaceAll(task.FlavorName, ":", ":")
return R eplaceFlavorName, nil
r eplaceFlavorName := strings.ReplaceAll(task.FlavorName, ":", ":")
return r eplaceFlavorName, nil
} else if task.Type == models.TypeCloudBrainTwo && task.FlavorName == "" && task.FlavorCode != "" {
index := strings.LastIndex(task.FlavorCode, ".")
cardNum, err := strconv.Atoi(strings.TrimSpace(task.FlavorCode[index+1 : len(task.FlavorCode)]))
cloudbrainTwoFlavorName := getFlavorNameByFlavorCode(task.FlavorCode)
return cloudbrainTwoFlavorName, nil
} else if task.Type == models.TypeCloudBrainTwo && task.JobType == string(models.JobTypeDebug) && task.FlavorName == "" && task.FlavorCode == "" {
tasks, err := models.GetModelartsReDebugTaskByJobId(task.JobID)
if err != nil {
log.Error("strconv.Atoi failed: %v", err)
return "", err
}
CloudbrainTwoFlavorName := "Ascend:" + strings.TrimSpace(task.FlavorCode[index+1:len(task.FlavorCode)]) +
"*Ascend-910(" + strconv.Itoa(cardNum*32) + "GB)|ARM:" + strconv.Itoa(cardNum*24) +
"核" + strconv.Itoa(cardNum*256) + "GB"
return CloudbrainTwoFlavorName , nil
if len(tasks) >= 1 {
return getFlavorNameByFlavorCode(tasks[0].FlavorCode), nil
}
return "" , nil
}
return "", nil
}
@@ -3112,3 +3112,15 @@ func getCloudBrainOneResourceSpec(task models.Cloudbrain) (*models.ResourceSpec,
}
return nil, nil, nil
}
func getFlavorNameByFlavorCode(flavorCode string) string {
index := strings.LastIndex(flavorCode, ".")
cardNum, err := strconv.Atoi(strings.TrimSpace(flavorCode[index+1 : len(flavorCode)]))
if err != nil {
log.Error("strconv.Atoi failed: %v", err)
return ""
}
cloudbrainTwoFlavorName := "Ascend:" + strings.TrimSpace(flavorCode[index+1:len(flavorCode)]) +
"*Ascend-910(" + strconv.Itoa(cardNum*32) + "GB)|ARM:" + strconv.Itoa(cardNum*24) +
"核" + strconv.Itoa(cardNum*256) + "GB"
return cloudbrainTwoFlavorName
}