diff --git a/README.md b/README.md index 6321d0b05f752dc1f930bea2f909e676a7375763..bbc782094bcbf2a1b37c599dfe52446fa596209e 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ root@#:/home/test/ascend-docker-runtime/output# ll ``` # 组件安装 -请参考[《MindX DL用户指南》--Ascend Docker Runtime用户指南](https://www.hiascend.com/document/detail/zh/mindx-dl/50rc2/dockerruntime/dockerruntimeug/dlruntime_ug_005.html)中“安装Ascend Docker Runtime”章节进行。 +请参考[《MindX DL用户指南》--Ascend Docker Runtime用户指南](https://www.hiascend.com/document/detail/zh/mindx-dl/60rc1/clusterscheduling/dockerruntimeug/dlruntime_ug_005.html)中“安装Ascend Docker Runtime”章节进行。 # 更新日志 diff --git a/runtime/main.go b/runtime/main.go index 444fd7d3887380edccce8e5cfd081dd94ea7b9fc..d64fe5944d5d9e733e07060c3ad8c1364ccebfcc 100644 --- a/runtime/main.go +++ b/runtime/main.go @@ -64,7 +64,6 @@ var ( hookDefaultFile = hookDefaultFilePath dockerRuncName = dockerRuncFile runcName = runcFile - deviceIdList []int ) const ( @@ -198,7 +197,7 @@ func addAscendDockerEnv(spec *specs.Spec) { spec.Process.Env = append(spec.Process.Env, useAscendDocker) } -func addHook(spec *specs.Spec) error { +func addHook(spec *specs.Spec, deviceIdList []int) error { currentExecPath, err := os.Executable() if err != nil { return fmt.Errorf("cannot get the path of ascend-docker-runtime: %v", err) @@ -248,7 +247,7 @@ func addHook(spec *specs.Spec) error { hwlog.RunLog.Infof("vnpu split done: vdevice: %v", vdevice.VdeviceID) if vdevice.VdeviceID != -1 { - updateEnvAndPostHook(spec, vdevice) + updateEnvAndPostHook(spec, vdevice, deviceIdList) } return nil @@ -528,7 +527,7 @@ func checkVisibleDevice(spec *specs.Spec) ([]int, error) { return devices, err } -func addDevice(spec *specs.Spec) error { +func addDevice(spec *specs.Spec, deviceIdList []int) error { deviceName := davinciName if strings.Contains(getValueByKey(spec.Process.Env, ascendRuntimeOptions), "VIRTUAL") { deviceName = virtualDavinciName @@ -547,7 +546,7 @@ func addDevice(spec *specs.Spec) error { return nil } -func updateEnvAndPostHook(spec *specs.Spec, vdevice dcmi.VDeviceInfo) { +func updateEnvAndPostHook(spec *specs.Spec, vdevice dcmi.VDeviceInfo, deviceIdList []int) { newEnv := make([]string, 0, len(spec.Process.Env)+1) needAddVirtualFlag := true deviceIdList = []int{int(vdevice.VdeviceID)} @@ -618,12 +617,11 @@ func modifySpecFile(path string) error { return fmt.Errorf("failed to check ASCEND_VISIBLE_DEVICES parameter, err: %v", err) } if len(devices) != 0 { - deviceIdList = devices - if err = addHook(&spec); err != nil { + if err = addHook(&spec, devices); err != nil { hwlog.RunLog.Errorf("failed to inject hook, err: %v", err) return fmt.Errorf("failed to inject hook, err: %v", err) } - if err = addDevice(&spec); err != nil { + if err = addDevice(&spec, devices); err != nil { return fmt.Errorf("failed to add device to env: %v", err) } } diff --git a/runtime/main_test.go b/runtime/main_test.go index 87eb513063d5a5899eb8c9785521ff44108084be..5603c253159c87628de0e10194023db6ddb0ece7 100644 --- a/runtime/main_test.go +++ b/runtime/main_test.go @@ -41,6 +41,10 @@ const ( needToMkdir = "./test" ) +var ( + deviceList = []int{1} +) + func TestArgsIsCreate(t *testing.T) { t.Log("进入测试用例") @@ -190,7 +194,8 @@ func TestModifySpecFileCase3(t *testing.T) { func TestAddHook(t *testing.T) { var specArgs = &specs.Spec{} - if err := addHook(specArgs); err != nil { + if err := addHook(specArgs, deviceList); err != nil { + t.Logf("addHook failed, error: %v", err) } } @@ -199,7 +204,7 @@ func TestAddHookCase1(t *testing.T) { stub := gomonkey.ApplyGlobalVar(&hookCliPath, ".") defer stub.Reset() - err := addHook(specArgs) + err := addHook(specArgs, deviceList) assert.NotNil(t, err) } @@ -208,7 +213,7 @@ func TestAddHookCase2(t *testing.T) { stub := gomonkey.ApplyGlobalVar(&hookCliPath, ".") defer stub.Reset() stub.ApplyGlobalVar(&hookDefaultFile, ".") - err := addHook(specArgs) + err := addHook(specArgs, deviceList) assert.NotNil(t, err) } @@ -220,7 +225,7 @@ func TestAddHookCase3(t *testing.T) { t.Log("rename ", file) } var specArgs = &specs.Spec{} - err := addHook(specArgs) + err := addHook(specArgs, deviceList) assert.NotNil(t, err) if err := os.Rename(filenew, file); err != nil { @@ -399,7 +404,7 @@ func TestUpdateEnvAndPostHook(t *testing.T) { Hooks: &specs.Hooks{}, } - updateEnvAndPostHook(&spec, vdvice) + updateEnvAndPostHook(&spec, vdvice, deviceList) assert.Contains(t, spec.Process.Env, "ASCEND_VISIBLE_DEVICES=100") assert.Contains(t, spec.Process.Env, "ASCEND_RUNTIME_OPTIONS=VIRTUAL") assert.Contains(t, spec.Hooks.Poststop[0].Path, destroyHookCli) @@ -537,7 +542,7 @@ func TestAddDevice(t *testing.T) { ctx, _ := context.WithCancel(context.Background()) err := initLogModule(ctx) assert.Nil(t, err) - err = addDevice(&spec) + err = addDevice(&spec, deviceList) assert.Nil(t, err) assert.Contains(t, spec.Linux.Devices[0].Path, devPath) }