From f1c1c35e2db14ebd62c5ded21975cb595b664786 Mon Sep 17 00:00:00 2001 From: BianTanggui Date: Sat, 8 Apr 2023 17:13:36 +0800 Subject: [PATCH] Match-id-5169458c6bde398e7e24358b1a66bb30f84e29f8 --- build/build.sh | 1 + build/scripts/base.list_A200IA2 | 16 ++++++++ build/scripts/base.list_A500A2 | 1 - build/scripts/help.info | 4 +- build/scripts/run_main.sh | 36 +++++++++++++++- cli/src/main.c | 4 +- hook/go.mod | 4 +- hook/go.sum | 4 +- install/deb/src/go.mod | 4 +- install/deb/src/go.sum | 30 +++++++++++++- runtime/dcmi/dcmi.go | 68 +++++++++++++++++++++++++++++++ runtime/dcmi/dcmi_api.go | 46 +++++++++++++++++++++ runtime/dcmi/dcmi_interface_api.h | 16 ++++++++ runtime/go.mod | 4 +- runtime/go.sum | 4 +- runtime/main.go | 53 +++++++++++++++++++----- 16 files changed, 268 insertions(+), 27 deletions(-) create mode 100644 build/scripts/base.list_A200IA2 diff --git a/build/build.sh b/build/build.sh index 1cec03a..4bccefe 100644 --- a/build/build.sh +++ b/build/build.sh @@ -125,6 +125,7 @@ function copy_file_output() /bin/cp -f scripts/base.list_A500A2 run_pkg /bin/cp -f scripts/base.list_A200 run_pkg /bin/cp -f scripts/base.list_A200ISoC run_pkg + /bin/cp -f scripts/base.list_A200IA2 run_pkg /bin/cp -rf ${ROOT}/assets run_pkg /bin/cp -f ${ROOT}/README.md run_pkg diff --git a/build/scripts/base.list_A200IA2 b/build/scripts/base.list_A200IA2 new file mode 100644 index 0000000..519d841 --- /dev/null +++ b/build/scripts/base.list_A200IA2 @@ -0,0 +1,16 @@ +/etc/sys_version.conf +/etc/hdcBasic.cfg +/usr/lib64/libaicpu_processer.so +/usr/lib64/libaicpu_prof.so +/usr/lib64/libaicpu_sharder.so +/usr/lib64/libadump.so +/usr/lib64/libtsd_eventclient.so +/usr/lib64/libaicpu_scheduler.so +/usr/lib64/libdcmi.so +/usr/lib64/libmpi_dvpp_adapter.so +/usr/lib64/aicpu_kernels/ +/usr/local/sbin/npu-smi +/usr/lib64/libstackcore.so +/usr/local/Ascend/driver/lib64 +/var/slogd +/var/dmp_daemon \ No newline at end of file diff --git a/build/scripts/base.list_A500A2 b/build/scripts/base.list_A500A2 index 8037fe7..50ff608 100644 --- a/build/scripts/base.list_A500A2 +++ b/build/scripts/base.list_A500A2 @@ -2,7 +2,6 @@ /usr/local/sbin/npu-smi /etc/sys_version.conf /etc/ld.so.conf.d/mind_so.conf -/etc/slog.conf /etc/hdcBasic.cfg /var/dmp_daemon /var/slogd diff --git a/build/scripts/help.info b/build/scripts/help.info index 5f08106..11e8139 100644 --- a/build/scripts/help.info +++ b/build/scripts/help.info @@ -2,5 +2,7 @@ --install-path Specify the installation path (default: /usr/local/Ascend/Ascend-Docker-Runtime) --uninstall Uninstall the installed ascend-docker-runtime tool --upgrade Upgrade the installed ascend-docker-runtime tool - --install-type= Only A500, A500A2, A200ISoC and A200 need to specify the installation type of Ascend-docker-runtime (eg: --install-type=A500) + --install-type= Only A500, A500A2, A200ISoC, A200IA2 and A200 need to specify + the installation type of Ascend-docker-runtime + (eg: --install-type=A200IA2, when your product is A200I A2 or A200I DK A2) --ce= Only iSula need to specify the container engine(eg: --ce=isula) \ No newline at end of file diff --git a/build/scripts/run_main.sh b/build/scripts/run_main.sh index b713cb8..d728c7b 100644 --- a/build/scripts/run_main.sh +++ b/build/scripts/run_main.sh @@ -36,6 +36,7 @@ function save_install_args() { echo -e "a500a2=${a500a2}" echo -e "a200=${a200}" echo -e "a200isoc=${a200isoc}" + echo -e "a200ia2=${a200ia2}" } >> "${INSTALL_PATH}"/ascend_docker_runtime_install.info } @@ -88,6 +89,20 @@ function install() cp -f ./base.list_A200ISoC ${ASCEND_RUNTIME_CONFIG_DIR}/base.list elif [ "${a500a2}" == "y" ]; then cp -f ./base.list_A500A2 ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + elif [ "${a200ia2}" == "y" ]; then + cp -f ./base.list_A200IA2 ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + if grep -qi "ubuntu" "/etc/os-release"; then + echo "[info]: A200IA2 os is Ubuntu" + echo -e "\n/usr/lib/aarch64-linux-gnu/libcrypto.so.1.1" >> ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + echo "/usr/lib/aarch64-linux-gnu/libyaml-0.so.2.0.6" >> ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + elif grep -qi "euler" "/etc/os-release"; then + echo "[info]: A200IA2 os is Euler/OpenEuler" + echo -e "\n/usr/lib64/libcrypto.so.1.1.1m" >> ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + echo "/usr/lib64/libyaml-0.so.2.0.9" >> ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + else + echo "ERROR: not support this os" + exit + fi else cp -f ./base.list ${ASCEND_RUNTIME_CONFIG_DIR}/base.list fi @@ -176,6 +191,21 @@ function upgrade() elif [ "x$(grep "a200isoc=y" "${INSTALL_PATH}"/ascend_docker_runtime_install.info)" == "xa200isoc=y" ]; then a200isoc=y cp -f ./base.list_A200ISoC ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + elif [ "x$(grep "a200ia2=y" "${INSTALL_PATH}"/ascend_docker_runtime_install.info)" == "xa200ia2=y" ]; then + a200ia2=y + cp -f ./base.list_A200IA2 ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + if grep -qi "ubuntu" "/etc/os-release"; then + echo "[info]: A200IA2 os is Ubuntu" + echo -e "\n/usr/lib/aarch64-linux-gnu/libcrypto.so.1.1" >> ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + echo -e "/usr/lib/aarch64-linux-gnu/libyaml-0.so.2.0.6" >> ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + elif grep -qi "euler" "/etc/os-release"; then + echo "[info]: A200IA2 os is Euler/OpenEuler" + echo -e "\n/usr/lib64/libcrypto.so.1.1.1m" >> ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + echo -e "/usr/lib64/libyaml-0.so.2.0.9" >> ${ASCEND_RUNTIME_CONFIG_DIR}/base.list + else + echo "ERROR: not support this os" + exit + fi else cp -f ./base.list ${ASCEND_RUNTIME_CONFIG_DIR}/base.list fi @@ -196,6 +226,7 @@ a500=n a200=n a200isoc=n a500a2=n +a200ia2=n quiet_flag=n ISULA=none @@ -259,7 +290,8 @@ do shift ;; --install-type=*) - if [ "${a500}" == "y" ] || [ "${a200}" == "y" ] || [ "${a200isoc}" == "y" ] || [ "${a500a2}" == "y" ]; then + if [ "${a500}" == "y" ] || [ "${a200}" == "y" ] || [ "${a200isoc}" == "y" ] || + [ "${a200ia2}" == "y" ] || [ "${a500a2}" == "y" ]; then echo "warning :Repeat parameter!" exit 1 fi @@ -272,6 +304,8 @@ do a200isoc=y elif [ "$3" == "--install-type=A500A2" ]; then a500a2=y + elif [ "$3" == "--install-type=A200IA2" ]; then + a200ia2=y else echo "ERROR :Please check the parameter of --install-type=" exit 1 diff --git a/cli/src/main.c b/cli/src/main.c index 5ed83ff..f629d18 100644 --- a/cli/src/main.c +++ b/cli/src/main.c @@ -194,7 +194,9 @@ static bool CheckWhiteList(const char* fileName) {"/usr/lib64/libmpi_dvpp_adapter.so"}, {"/usr/lib64/libaicpu_scheduler.so"}, {"/usr/lib64/libaicpu_processer.so"}, {"/usr/lib64/libaicpu_prof.so"}, {"/usr/lib64/libaicpu_sharder.so"}, {"/usr/lib64/libadump.so"}, {"/usr/lib64/libtsd_eventclient.so"}, - {"/usr/lib64/aicpu_kernels"}, {"/usr/lib64/libyaml-0.so.2"} + {"/usr/lib64/aicpu_kernels"}, {"/usr/lib64/libyaml-0.so.2"}, {"/usr/lib64/libcrypto.so.1.1.1m"}, + {"/usr/lib64/libyaml-0.so.2.0.9"}, {"/usr/lib/aarch64-linux-gnu/libyaml-0.so.2.0.6"}, + {"/usr/lib/aarch64-linux-gnu/libcrypto.so.1.1"} }; for (size_t iLoop = 0; iLoop < WHITE_LIST_NUM; iLoop++) { diff --git a/hook/go.mod b/hook/go.mod index 367663f..9111556 100644 --- a/hook/go.mod +++ b/hook/go.mod @@ -5,7 +5,7 @@ go 1.17 require ( github.com/opencontainers/runtime-spec v1.0.3-0.20220718201635-a8106e99982b github.com/prashantv/gostub v1.1.0 - huawei.com/npu-exporter/v5 v5.0.0-rc1.1 + huawei.com/npu-exporter/v5 v5.0.0-RC1 mindxcheckutils v1.0.0 ) @@ -18,6 +18,6 @@ require ( ) replace ( - huawei.com/npu-exporter/v5 => gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-rc1.1 + huawei.com/npu-exporter/v5 => gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-RC1 mindxcheckutils => ../mindxcheckutils ) diff --git a/hook/go.sum b/hook/go.sum index 15b62db..0113add 100644 --- a/hook/go.sum +++ b/hook/go.sum @@ -1,5 +1,5 @@ -gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-rc1.1 h1:XXNpZemFi7/kmW7v+eXLwYumeDCDgLZtIT6AJHY8w9Q= -gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-rc1.1/go.mod h1:fMiyWfHf3p+Wo4hu8Uy+cnD8ulQV3nzwwVzupRM8XEk= +gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-RC1 h1:nB11UbfMJegmGV/1wnPt+LorjrxaQTMwFRrfnFgv+/c= +gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-RC1/go.mod h1:Fgch3gh9DvQBtxH8fkg83iV4UxwMgp2DtsmocUrwOu4= github.com/agiledragon/gomonkey/v2 v2.8.0 h1:u2K2nNGyk0ippzklz1CWalllEB9ptD+DtSXeCX5O000= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= diff --git a/install/deb/src/go.mod b/install/deb/src/go.mod index 6699cd5..b997b04 100644 --- a/install/deb/src/go.mod +++ b/install/deb/src/go.mod @@ -3,7 +3,7 @@ module main go 1.17 require ( - huawei.com/npu-exporter/v5 v5.0.0-rc1.1 + huawei.com/npu-exporter/v5 v5.0.0-RC1 mindxcheckutils v1.0.0 ) @@ -16,6 +16,6 @@ require ( ) replace ( - huawei.com/npu-exporter/v5 => gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-rc1.1 + huawei.com/npu-exporter/v5 => gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-RC1 mindxcheckutils => ../../../mindxcheckutils ) diff --git a/install/deb/src/go.sum b/install/deb/src/go.sum index 0bbc3e7..b59a2e2 100644 --- a/install/deb/src/go.sum +++ b/install/deb/src/go.sum @@ -37,8 +37,8 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-rc1.1 h1:XXNpZemFi7/kmW7v+eXLwYumeDCDgLZtIT6AJHY8w9Q= -gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-rc1.1/go.mod h1:fMiyWfHf3p+Wo4hu8Uy+cnD8ulQV3nzwwVzupRM8XEk= +gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-RC1 h1:nB11UbfMJegmGV/1wnPt+LorjrxaQTMwFRrfnFgv+/c= +gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-RC1/go.mod h1:Fgch3gh9DvQBtxH8fkg83iV4UxwMgp2DtsmocUrwOu4= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/agiledragon/gomonkey/v2 v2.8.0 h1:u2K2nNGyk0ippzklz1CWalllEB9ptD+DtSXeCX5O000= @@ -59,19 +59,25 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -81,6 +87,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= @@ -96,6 +103,7 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -207,6 +215,7 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= @@ -222,14 +231,19 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +github.com/opencontainers/runc v1.1.2/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -258,6 +272,7 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/shurcooL/go v0.0.0-20200502201357-93f07166e636/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= @@ -286,6 +301,10 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -383,6 +402,7 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= @@ -422,11 +442,13 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -463,6 +485,9 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956 h1:XeJjHH1KiLpKGb6lvMiksZ9l0fVUh+AmGcm0nOMEBOY= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -636,6 +661,7 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/runtime/dcmi/dcmi.go b/runtime/dcmi/dcmi.go index a4bee76..9e40c9d 100644 --- a/runtime/dcmi/dcmi.go +++ b/runtime/dcmi/dcmi.go @@ -33,6 +33,7 @@ const ( hiAIMaxCardNum = 64 // hiAIMaxDeviceNum is the max number of devices in a card hiAIMaxDeviceNum = 4 + maxChipNameLen = 32 productTypeLen = 64 notSupportCode = -8255 @@ -40,10 +41,49 @@ const ( vfgID = 4294967295 // vfg_id表示指定虚拟设备所属的虚拟分组ID,默认自动分配,默认值为0xFFFFFFFF,转换成10进制为4294967295。 ) +// ChipInfo chip info +type ChipInfo struct { + Type string `json:"chip_type"` + Name string `json:"chip_name"` + Version string `json:"chip_version"` +} + // NpuWorker Dcmi worker type NpuWorker struct { } +// isValidCardID valid card id +func isValidCardID(cardID int32) bool { + // for cardID, please watch the maximum value of the driver + return cardID >= 0 && cardID < hiAIMaxCardNum +} + +// isValidDeviceID valid device id +func isValidDeviceID(deviceID int32) bool { + return deviceID >= 0 && deviceID < hiAIMaxDeviceNum +} + +// isValidCardIDAndDeviceID check two params both needs meet the requirement +func isValidCardIDAndDeviceID(cardID, deviceID int32) bool { + return isValidCardID(cardID) && isValidDeviceID(deviceID) +} + +// isValidChipInfo valid chip info is or not empty +func isValidChipInfo(chip *ChipInfo) bool { + return chip.Name != "" || chip.Type != "" || chip.Version != "" +} + +func convertUCharToCharArr(cgoArr [maxChipNameLen]C.uchar) []byte { + var charArr []byte + for _, v := range cgoArr { + if v == 0 { + break + } + charArr = append(charArr, byte(v)) + } + return charArr +} + // Initialize dcmi lib init func (w *NpuWorker) Initialize() error { cDlPath := C.CString(string(make([]byte, int32(C.PATH_MAX)))) @@ -212,3 +252,31 @@ func (w *NpuWorker) GetProductType(cardID, deviceID int32) (string, error) { } return C.GoString(cProductType), nil } + +// GetChipInfo get the chip info by cardID and deviceID +func (w *NpuWorker) GetChipInfo(cardID, deviceID int32) (*ChipInfo, error) { + if !isValidCardIDAndDeviceID(cardID, deviceID) { + return nil, fmt.Errorf("cardID(%d) or deviceID(%d) is invalid", cardID, deviceID) + } + var chipInfo C.struct_dcmi_chip_info + if rCode := C.dcmi_get_device_chip_info(C.int(cardID), C.int(deviceID), &chipInfo); int32(rCode) != 0 { + return nil, fmt.Errorf("get device ChipInfo information failed, cardID(%d), deviceID(%d),"+ + " error code: %d", cardID, deviceID, int32(rCode)) + } + + name := convertUCharToCharArr(chipInfo.chip_name) + cType := convertUCharToCharArr(chipInfo.chip_type) + ver := convertUCharToCharArr(chipInfo.chip_ver) + + chip := &ChipInfo{ + Name: string(name), + Type: string(cType), + Version: string(ver), + } + if !isValidChipInfo(chip) { + return nil, fmt.Errorf("get device ChipInfo information failed, chip info is empty,"+ + " cardID(%d), deviceID(%d)", cardID, deviceID) + } + + return chip, nil +} diff --git a/runtime/dcmi/dcmi_api.go b/runtime/dcmi/dcmi_api.go index 11144df..eaa16ae 100644 --- a/runtime/dcmi/dcmi_api.go +++ b/runtime/dcmi/dcmi_api.go @@ -40,6 +40,7 @@ type WorkerInterface interface { CreateVDevice(cardID, deviceID int32, coreNum string) (int32, error) DestroyVDevice(cardID, deviceID int32, vDevID int32) error GetProductType(cardID, deviceID int32) (string, error) + GetChipInfo(cardID, deviceID int32) (*ChipInfo, error) } // CreateVDevice will create virtual device @@ -138,3 +139,48 @@ func GetProductType(w WorkerInterface) (string, error) { return invalidType, nil } + +// GetChipName get name of chip +func GetChipName() (string, error) { + dcWorker := NpuWorker{} + invalidName := "" + + if err := dcWorker.Initialize(); err != nil { + return invalidName, fmt.Errorf("cannot init dcmi : %v", err) + } + defer dcWorker.ShutDown() + + cardNum, cardList, err := GetCardList() + if err != nil { + hwlog.RunLog.Errorf("failed to get card list, err: %#v", err) + return invalidName, err + } + if cardNum == 0 { + return invalidName, fmt.Errorf("get chip info failed, no card found") + } + + // get device in card, then get chip info by cardID and deviceID + for _, cardID := range cardList { + devNum, err := GetDeviceNumInCard(cardID) + if err != nil || devNum == 0 { + hwlog.RunLog.Warnf("get device num by cardID(%d) failed, error: %#v", cardID, err) + continue + } + for devID := int32(0); devID < devNum; devID++ { + chipInfo, err := dcWorker.GetChipInfo(cardID, devID) + if err != nil { + hwlog.RunLog.Warnf("get chip info failed by cardID(%d), deviceID(%d), error: %#v", cardID, devID, + err) + continue + } + if !isValidChipInfo(chipInfo) { + hwlog.RunLog.Warnf("invalid chip info by cardID(%d), deviceID(%d), error: %#v", cardID, devID, + err) + continue + } + return (*chipInfo).Name, nil + } + } + + return invalidName, fmt.Errorf("cannot get valid chip info") +} diff --git a/runtime/dcmi/dcmi_interface_api.h b/runtime/dcmi/dcmi_interface_api.h index 1d36540..2e5425d 100644 --- a/runtime/dcmi/dcmi_interface_api.h +++ b/runtime/dcmi/dcmi_interface_api.h @@ -36,6 +36,7 @@ void *dcmiHandle; #define SO_NOT_CORRECT (-99996) #define CALL_FUNC(name, ...) if (name##_func == NULL) {return FUNCTION_NOT_FOUND;}return name##_func(__VA_ARGS__) #define DCMI_VDEV_FOR_RESERVE (32) +#define MAX_CHIP_NAME_LEN (32) struct dcmi_create_vdev_out { unsigned int vdev_id; unsigned int pcie_bus; @@ -51,6 +52,13 @@ struct dcmi_create_vdev_res_stru { unsigned char reserved[64]; }; +struct dcmi_chip_info { +unsigned char chip_type[MAX_CHIP_NAME_LEN]; +unsigned char chip_name[MAX_CHIP_NAME_LEN]; +unsigned char chip_ver[MAX_CHIP_NAME_LEN]; +unsigned int aicore_cnt; +}; + // dcmi int (*dcmi_init_func)(); int dcmi_init() @@ -104,6 +112,12 @@ int dcmi_get_product_type(int card_id, int device_id, char *product_type_str, in CALL_FUNC(dcmi_get_product_type, card_id, device_id, product_type_str, buf_size); } +int (*dcmi_get_device_chip_info_func)(int card_id, int device_id, struct dcmi_chip_info *chip_info); +int dcmi_get_device_chip_info(int card_id, int device_id, struct dcmi_chip_info *chip_info) +{ + CALL_FUNC(dcmi_get_device_chip_info, card_id, device_id, chip_info); +} + // load .so files and functions int dcmiInit_dl(char *dl_path) { @@ -140,6 +154,8 @@ int dcmiInit_dl(char *dl_path) dcmi_get_product_type_func = dlsym(dcmiHandle, "dcmi_get_product_type"); + dcmi_get_device_chip_info_func = dlsym(dcmiHandle, "dcmi_get_device_chip_info"); + return SUCCESS; } diff --git a/runtime/go.mod b/runtime/go.mod index bcec9f4..ead3568 100644 --- a/runtime/go.mod +++ b/runtime/go.mod @@ -6,7 +6,7 @@ require ( github.com/containerd/containerd v1.6.19 github.com/opencontainers/runtime-spec v1.0.3-0.20220718201635-a8106e99982b github.com/prashantv/gostub v1.1.0 - huawei.com/npu-exporter/v5 v5.0.0-rc1.1 + huawei.com/npu-exporter/v5 v5.0.0-RC1 mindxcheckutils v1.0.0 ) @@ -40,6 +40,6 @@ require ( replace ( github.com/prashantv/gostub => github.com/prashantv/gostub v1.0.1-0.20191007164320-bbe3712b9c4a - huawei.com/npu-exporter/v5 => gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-rc1.1 + huawei.com/npu-exporter/v5 => gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-RC1 mindxcheckutils => ../mindxcheckutils ) diff --git a/runtime/go.sum b/runtime/go.sum index 775f7ee..fc913bf 100644 --- a/runtime/go.sum +++ b/runtime/go.sum @@ -39,8 +39,8 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-rc1.1 h1:XXNpZemFi7/kmW7v+eXLwYumeDCDgLZtIT6AJHY8w9Q= -gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-rc1.1/go.mod h1:fMiyWfHf3p+Wo4hu8Uy+cnD8ulQV3nzwwVzupRM8XEk= +gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-RC1 h1:nB11UbfMJegmGV/1wnPt+LorjrxaQTMwFRrfnFgv+/c= +gitee.com/ascend/ascend-npu-exporter/v5 v5.0.0-RC1/go.mod h1:Fgch3gh9DvQBtxH8fkg83iV4UxwMgp2DtsmocUrwOu4= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= diff --git a/runtime/main.go b/runtime/main.go index 2b05463..70a7ab5 100644 --- a/runtime/main.go +++ b/runtime/main.go @@ -72,8 +72,14 @@ const ( Atlas200ISoc = "Atlas 200I SoC A1" // Atlas200 Product name Atlas200 = "Atlas 200 Model 3000" - // Atlas500A2 Product name - Atlas500A2 = "Atlas 500 A2" + // Ascend310 ascend 310 chip + Ascend310 = "Ascend310" + // Ascend310P ascend 310P chip + Ascend310P = "Ascend310P" + // Ascend310B ascend 310B chip + Ascend310B = "Ascend310B" + // Ascend910 ascend 910 chip + Ascend910 = "Ascend910" devicePath = "/dev/" davinciName = "davinci" @@ -97,6 +103,23 @@ type args struct { cmd string } +// GetDeviceTypeByChipName get device type by chipName +func GetDeviceTypeByChipName(chipName string) string { + if strings.Contains(chipName, "310B") { + return Ascend310B + } + if strings.Contains(chipName, "310P") { + return Ascend310P + } + if strings.Contains(chipName, "310") { + return Ascend310 + } + if strings.Contains(chipName, "910") { + return Ascend910 + } + return "" +} + func getArgs() (*args, error) { args := &args{} @@ -351,8 +374,8 @@ func addDeviceToSpec(spec *specs.Spec, dPath string, vdevice bool) error { return nil } -func addA500ManagerDevice(spec *specs.Spec) error { - var Atlas500ManageDevices = []string{ +func addAscend310BManagerDevice(spec *specs.Spec) error { + var Ascend310BManageDevices = []string{ svm0, tsAisle, upgrade, @@ -365,10 +388,10 @@ func addA500ManagerDevice(spec *specs.Spec) error { logDrv, } - for _, device := range Atlas500ManageDevices { + for _, device := range Ascend310BManageDevices { dPath := devicePath + device if err := addDeviceToSpec(spec, dPath, false); err != nil { - return fmt.Errorf("failed to add %s of A500 A2 to spec : %#v", dPath, err) + hwlog.RunLog.Warnf("failed to add %s to spec : %#v", dPath, err) } } @@ -397,6 +420,19 @@ func addManagerDevice(spec *specs.Spec) error { return fmt.Errorf("add davinci_manager to spec error: %#v", err) } + chipName, err := dcmi.GetChipName() + if err != nil { + return fmt.Errorf("get chip name error: %#v", err) + } + devType := GetDeviceTypeByChipName(chipName) + hwlog.RunLog.Infof("device type is: %s", devType) + if devType == Ascend310B { + if err = addAscend310BManagerDevice(spec); err != nil { + return fmt.Errorf("add 310B manage device error: %#v", err) + } + return nil + } + productType, err := dcmi.GetProductType(&dcmi.NpuWorker{}) if err != nil { return fmt.Errorf("parse product type error: %#v", err) @@ -404,10 +440,6 @@ func addManagerDevice(spec *specs.Spec) error { hwlog.RunLog.Infof("product type is %s", productType) switch productType { - case Atlas500A2: - if err = addA500ManagerDevice(spec); err != nil { - return fmt.Errorf("add A500 manage device error: %#v", err) - } // do nothing case Atlas200ISoc, Atlas200: default: @@ -424,7 +456,6 @@ func addDevice(spec *specs.Spec) error { if visibleDevices == "" { return nil } - hwlog.RunLog.Infof("getValueByKey visibleDevices: %#v", visibleDevices) devices, err := parseDevices(visibleDevices) if err != nil { -- Gitee