|
|
|
@@ -277,6 +277,87 @@ func GetAllCloudbrainsTrend(ctx *context.Context) { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func GetAllCloudbrainsTrendDetail(ctx *context.Context) { |
|
|
|
|
|
|
|
recordBeginTime, err := getBrainRecordBeginTime() |
|
|
|
if err != nil { |
|
|
|
log.Error("Can not get record begin time", err) |
|
|
|
ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err")) |
|
|
|
return |
|
|
|
} |
|
|
|
beginTime, endTime, err := getTimePeroid(ctx, recordBeginTime) |
|
|
|
if err != nil { |
|
|
|
log.Error("Parameter is wrong", err) |
|
|
|
ctx.Error(http.StatusBadRequest, ctx.Tr("repo.parameter_is_wrong")) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
cloudbrains, err := models.GetAllCloudBrain() |
|
|
|
if err != nil { |
|
|
|
log.Error("Getcloudbrains failed:%v", err) |
|
|
|
return |
|
|
|
} |
|
|
|
cloudOneJobTypeRes := make(map[string]int) |
|
|
|
cloudTwoJobTypeRes := make(map[string]int) |
|
|
|
intelligentNetJobTypeRes := make(map[string]int) |
|
|
|
cloudBrainPeriodNum := make(map[int]int) |
|
|
|
for _, cloudbrain := range cloudbrains { |
|
|
|
if int64(cloudbrain.Cloudbrain.CreatedUnix) >= beginTime.Unix() && int64(cloudbrain.Cloudbrain.CreatedUnix) < endTime.Unix() { |
|
|
|
if cloudbrain.Cloudbrain.Type == models.TypeCloudBrainOne { |
|
|
|
if _, ok := cloudOneJobTypeRes[cloudbrain.JobType]; !ok { |
|
|
|
cloudOneJobTypeRes[cloudbrain.JobType] = 1 |
|
|
|
} else { |
|
|
|
cloudOneJobTypeRes[cloudbrain.JobType] += 1 |
|
|
|
} |
|
|
|
} |
|
|
|
if cloudbrain.Cloudbrain.Type == models.TypeCloudBrainTwo { |
|
|
|
if _, ok := cloudTwoJobTypeRes[cloudbrain.JobType]; !ok { |
|
|
|
cloudTwoJobTypeRes[cloudbrain.JobType] = 1 |
|
|
|
} else { |
|
|
|
cloudTwoJobTypeRes[cloudbrain.JobType] += 1 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if _, ok := cloudBrainPeriodNum[cloudbrain.Cloudbrain.Type]; !ok { |
|
|
|
cloudBrainPeriodNum[cloudbrain.Cloudbrain.Type] = 1 |
|
|
|
} else { |
|
|
|
cloudBrainPeriodNum[cloudbrain.Cloudbrain.Type] += 1 |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
jobTypeList := []string{"DEBUG", "BENCHMARK", "INFERENCE", "TRAIN", "SNN4IMAGENET", "BRAINSCORE"} |
|
|
|
for _, v := range jobTypeList { |
|
|
|
if _, ok := cloudOneJobTypeRes[v]; !ok { |
|
|
|
cloudOneJobTypeRes[v] = 0 |
|
|
|
} |
|
|
|
if _, ok := cloudTwoJobTypeRes[v]; !ok { |
|
|
|
cloudTwoJobTypeRes[v] = 0 |
|
|
|
} |
|
|
|
if _, ok := intelligentNetJobTypeRes[v]; !ok { |
|
|
|
intelligentNetJobTypeRes[v] = 0 |
|
|
|
} |
|
|
|
} |
|
|
|
cloudBrainTypeList := []int{0, 1, 2} |
|
|
|
for _, v := range cloudBrainTypeList { |
|
|
|
if _, ok := cloudBrainPeriodNum[v]; !ok { |
|
|
|
cloudBrainPeriodNum[v] = 0 |
|
|
|
} |
|
|
|
} |
|
|
|
// totalTasksCount := cloudBrainPeriodNum[0] + cloudBrainPeriodNum[1] + cloudBrainPeriodNum[2] |
|
|
|
|
|
|
|
cloudOneJobTypeRes["EVALUATION"] = cloudOneJobTypeRes["BENCHMARK"] + cloudOneJobTypeRes["SNN4IMAGENET"] + cloudOneJobTypeRes["BRAINSCORE"] |
|
|
|
cloudTwoJobTypeRes["EVALUATION"] = cloudTwoJobTypeRes["BENCHMARK"] + cloudTwoJobTypeRes["SNN4IMAGENET"] + cloudTwoJobTypeRes["BRAINSCORE"] |
|
|
|
intelligentNetJobTypeRes["EVALUATION"] = intelligentNetJobTypeRes["BENCHMARK"] + intelligentNetJobTypeRes["SNN4IMAGENET"] + intelligentNetJobTypeRes["BRAINSCORE"] |
|
|
|
ctx.JSON(http.StatusOK, map[string]interface{}{ |
|
|
|
"cloudOneJobTypeRes": cloudOneJobTypeRes, |
|
|
|
"cloudTwoJobTypeRes": cloudTwoJobTypeRes, |
|
|
|
"intelligentNetJobTypeRes": intelligentNetJobTypeRes, |
|
|
|
"cloudBrainPeriodNum": cloudBrainPeriodNum, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func GetAllCloudbrainsPeriodDistribution(ctx *context.Context) { |
|
|
|
|
|
|
|
recordBeginTime, err := getBrainRecordBeginTime() |
|
|
|
@@ -291,54 +372,6 @@ func GetAllCloudbrainsPeriodDistribution(ctx *context.Context) { |
|
|
|
ctx.Error(http.StatusBadRequest, ctx.Tr("repo.parameter_is_wrong")) |
|
|
|
return |
|
|
|
} |
|
|
|
// debugOnePeriodCount, err := models.GetDebugOnePeriodCount(beginTime, endTime) |
|
|
|
// if err != nil { |
|
|
|
// log.Error("Can not query debugOneCount.", err) |
|
|
|
// ctx.Error(http.StatusBadRequest, ctx.Tr("debugOneCount_get_error")) |
|
|
|
// return |
|
|
|
// } |
|
|
|
// benchmarkOnePeriodCount, err := models.GetBenchmarkOnePeriodCount(beginTime, endTime) |
|
|
|
// if err != nil { |
|
|
|
// log.Error("Can not query benchmarkCount.", err) |
|
|
|
// ctx.Error(http.StatusBadRequest, ctx.Tr("benchmarkOneCount_get_error")) |
|
|
|
// return |
|
|
|
// } |
|
|
|
// trainOnePeriodCount, err := models.GetTrainOnePeriodCount(beginTime, endTime) |
|
|
|
// if err != nil { |
|
|
|
// log.Error("Can not query trainOneCount.", err) |
|
|
|
// ctx.Error(http.StatusBadRequest, ctx.Tr("trainOneCount_get_error")) |
|
|
|
// return |
|
|
|
// } |
|
|
|
// debugTwoPeriodCount, err := models.GetDebugTwoPeriodCount(beginTime, endTime) |
|
|
|
// if err != nil { |
|
|
|
// log.Error("Can not query debugTwoCount.", err) |
|
|
|
// ctx.Error(http.StatusBadRequest, ctx.Tr("debugTwoCount_get_error")) |
|
|
|
// return |
|
|
|
// } |
|
|
|
// trainTwoPeriodCount, err := models.GetTrainTwoPeriodCount(beginTime, endTime) |
|
|
|
// if err != nil { |
|
|
|
// log.Error("Can not query DebugOneTotal count.", err) |
|
|
|
// ctx.Error(http.StatusBadRequest, ctx.Tr("total_count_get_error")) |
|
|
|
// return |
|
|
|
// } |
|
|
|
// inferenceTwoPeriodCount, err := models.GetInferenceTwoPeriodCount(beginTime, endTime) |
|
|
|
// if err != nil { |
|
|
|
// log.Error("Can not query inferenceTwoCount.", err) |
|
|
|
// ctx.Error(http.StatusBadRequest, ctx.Tr("inferenceTwoCount_get_error")) |
|
|
|
// return |
|
|
|
// } |
|
|
|
// cloudBrainOnePeriodCount, err := models.GetCloudBrainOnePeriodCount(beginTime, endTime) |
|
|
|
// if err != nil { |
|
|
|
// log.Error("Can not query cloudBrainOnePeriodCount.", err) |
|
|
|
// ctx.Error(http.StatusBadRequest, ctx.Tr("cloudBrainOnePeriodCount_get_error")) |
|
|
|
// return |
|
|
|
// } |
|
|
|
// cloudBrainTwoPeriodCount, err := models.GetCloudBrainTwoPeriodCount(beginTime, endTime) |
|
|
|
// if err != nil { |
|
|
|
// log.Error("Can not query cloudBrainTwoPeriodCount.", err) |
|
|
|
// ctx.Error(http.StatusBadRequest, ctx.Tr("cloudBrainTwoPeriodCount_get_error")) |
|
|
|
// return |
|
|
|
// } |
|
|
|
|
|
|
|
cloudbrains, err := models.GetAllCloudBrain() |
|
|
|
if err != nil { |
|
|
|
@@ -773,6 +806,13 @@ func getCloudbrainCount(beginTime time.Time, endTime time.Time) (map[string]int, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
ComputeResourceList := []string{"CPU/GPU", "NPU"} |
|
|
|
for _, v := range ComputeResourceList { |
|
|
|
if _, ok := cloudBrainComputeResource[v]; !ok { |
|
|
|
cloudBrainComputeResource[v] = 0 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
jobTypeList := []string{"DEBUG", "BENCHMARK", "INFERENCE", "TRAIN", "SNN4IMAGENET", "BRAINSCORE"} |
|
|
|
cloudBrainTypeList := []int{0, 1, 2} |
|
|
|
for _, v := range jobTypeList { |
|
|
|
@@ -825,7 +865,7 @@ func getDayCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime tim |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
dayCloudbrainNum = append(dayCloudbrainNum, DateCloudbrainNum{ |
|
|
|
Date: beginTime.Format("2006-01-02"), |
|
|
|
Date: beginTime.Format("2006/01/02"), |
|
|
|
CloudOneJobTypeRes: cloudOneJobTypeRes, |
|
|
|
CloudTwoJobTypeRes: cloudTwoJobTypeRes, |
|
|
|
IntelligentNetJobTypeRes: intelligentNetJobTypeRes, |
|
|
|
@@ -846,7 +886,7 @@ func getYearCloudbrainNum(beginTime time.Time, endTimeTemp time.Time, endTime ti |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
yearCloudbrainNum = append(yearCloudbrainNum, DateCloudbrainNum{ |
|
|
|
Date: beginTime.Format("2006-01"), |
|
|
|
Date: beginTime.Format("2006/01"), |
|
|
|
CloudOneJobTypeRes: cloudOneJobTypeRes, |
|
|
|
CloudTwoJobTypeRes: cloudTwoJobTypeRes, |
|
|
|
IntelligentNetJobTypeRes: intelligentNetJobTypeRes, |
|
|
|
|