diff --git a/cann/8.0.RC1/22.03-lts-sp4/Dockerfile b/cann/8.0.RC1/22.03-lts-sp4/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..3d1d637747052acd5849a19c6915e768a0530b6a --- /dev/null +++ b/cann/8.0.RC1/22.03-lts-sp4/Dockerfile @@ -0,0 +1,138 @@ +# Arguments +ARG TARGETPLATFORM +ARG PY_VERSION=3.8 +ARG CANN_CHIP=910b +ARG VERSION=8.0.RC1 +ARG BASE=openeuler/openeuler:22.03-lts-sp4 + +# Phase 1: Install Python +FROM ${BASE} as py-installer + +# Arguments +ARG PY_VERSION + +# Environment variables +ENV PATH=/usr/local/python${PY_VERSION}/bin:${PATH} + +# Install dependencies +RUN yum update -y && \ + yum install -y \ + gcc \ + gcc-c++ \ + make \ + cmake \ + curl \ + zlib-devel \ + bzip2-devel \ + openssl-devel \ + ncurses-devel \ + sqlite-devel \ + readline-devel \ + tk-devel \ + gdbm-devel \ + libpcap-devel \ + xz-devel \ + libev-devel \ + expat-devel \ + libffi-devel \ + systemtap-sdt-devel \ + && yum clean all \ + && rm -rf /var/cache/yum \ + && rm -rf /tmp/* + +# Copy files +COPY scripts/python.sh /tmp/python.sh + +# Download Python +RUN bash /tmp/python.sh --download + +# Install Python +RUN bash /tmp/python.sh --install && \ + rm /tmp/python.sh + +# Phase 2: Install CANN +FROM py-installer as cann-installer + +# Arguments +ARG TARGETPLATFORM +ARG CANN_CHIP +ARG VERSION + +# Install dependencies +RUN yum update -y && \ + yum install -y \ + gcc \ + gcc-c++ \ + make \ + cmake \ + unzip \ + zlib-devel \ + libffi-devel \ + openssl-devel \ + pciutils \ + net-tools \ + sqlite-devel \ + lapack-devel \ + gcc-gfortran \ + util-linux \ + findutils \ + && yum clean all \ + && rm -rf /var/cache/yum \ + && rm -rf /tmp/* + +# Copy files +COPY scripts/cann.sh /tmp/cann.sh + +# Download CANN +RUN bash /tmp/cann.sh --download + +# Install CANN +RUN bash /tmp/cann.sh --install && \ + rm /tmp/cann.sh + +# Phase 3: Copy results from previous phases +FROM ${BASE} as official + +# Arguments +ARG TARGETPLATFORM +ARG PY_VERSION +ARG CANN_CHIP +ARG VERSION + +# Environment variables +ENV PATH=/usr/local/python${PY_VERSION}/bin:${PATH} +ENV LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/common/:/usr/local/Ascend/driver/lib64/driver/:${LD_LIBRARY_PATH} + +# Change the default shell +SHELL [ "/bin/bash", "-c" ] + +# Install dependencies +RUN yum update -y && \ + yum install -y \ + ca-certificates \ + bash \ + glibc \ + sqlite-devel \ + && yum clean all \ + && rm -rf /var/cache/yum \ + && rm -rf /tmp/* + +# Copy files +COPY --from=cann-installer /usr/local/python${PY_VERSION} /usr/local/python${PY_VERSION} +COPY --from=cann-installer /usr/local/Ascend /usr/local/Ascend +COPY --from=cann-installer /etc/Ascend /etc/Ascend + +# Set environment variables for Python +RUN PY_PATH="PATH=/usr/local/python${PY_VERSION}/bin:\${PATH}" && \ + echo "export ${PY_PATH}" >> /etc/profile && \ + echo "export ${PY_PATH}" >> ~/.bashrc + +# Set environment variables for CANN +RUN CANN_TOOLKIT_ENV_FILE="/usr/local/Ascend/ascend-toolkit/set_env.sh" && \ + DRIVER_LIBRARY_PATH="LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/common/:/usr/local/Ascend/driver/lib64/driver/:\${LD_LIBRARY_PATH}" && \ + echo "export ${DRIVER_LIBRARY_PATH}" >> /etc/profile && \ + echo "export ${DRIVER_LIBRARY_PATH}" >> ~/.bashrc && \ + echo "source ${CANN_TOOLKIT_ENV_FILE}" >> /etc/profile && \ + echo "source ${CANN_TOOLKIT_ENV_FILE}" >> ~/.bashrc + +ENTRYPOINT [ "/bin/bash", "-c", "source /usr/local/Ascend/ascend-toolkit/set_env.sh && exec \"$@\"", "--" ] \ No newline at end of file diff --git a/cann/8.0.RC1/22.03-lts-sp4/scripts/cann.sh b/cann/8.0.RC1/22.03-lts-sp4/scripts/cann.sh new file mode 100644 index 0000000000000000000000000000000000000000..ee5dcea6fe40c4da1a54639d6df772626cf782b9 --- /dev/null +++ b/cann/8.0.RC1/22.03-lts-sp4/scripts/cann.sh @@ -0,0 +1,141 @@ +#!/bin/bash + +set -e + +get_architecture() { + # not case sensitive + shopt -s nocasematch + + case "${PLATFORM}" in + "linux/x86_64"|"linux/amd64") + ARCH="x86_64" + ;; + "linux/aarch64"|"linux/arm64") + ARCH="aarch64" + ;; + *) + echo "Error: Unsupported architecture ${PLATFORM}." + exit 1 + ;; + esac + + echo "${ARCH}" +} + +download_file() { + set +e + + local max_retries=10 + local retry_delay=10 + local url="$1" + local path="$2" + + for ((i=1; i<=max_retries; i++)); do + echo "Attempt $i of $max_retries..." + curl -fsSL -o "${path}" "${url}" + if [[ $? -eq 0 ]]; then + return 0 + else + echo "Download failed with error code $?. Retrying in ${retry_delay} seconds..." + sleep ${retry_delay} + fi + done + + echo "All attempts failed. Exiting." + return 1 +} + +download_cann() { + if [[ ${CANN_VERSION} == "8.0.RC2.alpha001" ]]; then + local url_prefix="https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C18B800TP015" + elif [[ ${CANN_VERSION} == "8.0.RC2.alpha002" ]]; then + local url_prefix="https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C18SPC805" + elif [[ ${CANN_VERSION} == "8.0.RC2.alpha003" ]]; then + local url_prefix="https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C18SPC703" + else + local url_prefix="https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%20${CANN_VERSION}" + fi + local url_suffix="response-content-type=application/octet-stream" + local toolkit_url="${url_prefix}/${TOOLKIT_FILE}?${url_suffix}" + local kernels_url="${url_prefix}/${KERNELS_FILE}?${url_suffix}" + + if [ ! -f "${TOOLKIT_PATH}" ]; then + echo "Downloading ${TOOLKIT_FILE} from ${toolkit_url}" + download_file "${toolkit_url}" "${TOOLKIT_PATH}" + fi + + if [ ! -f "${KERNELS_PATH}" ]; then + echo "Downloading ${KERNELS_FILE} from ${kernels_url}" + download_file "${kernels_url}" "${KERNELS_PATH}" + fi + + echo "CANN ${CANN_VERSION} download successful." +} + +set_env() { + local cann_toolkit_env_file="${CANN_HOME}/ascend-toolkit/set_env.sh" + if [ ! -f "${cann_toolkit_env_file}" ]; then + echo "CANN Toolkit ${CANN_VERSION} installation failed." + exit 1 + else + local driver_path_env="LD_LIBRARY_PATH=${CANN_HOME}/driver/lib64/common/:${CANN_HOME}/driver/lib64/driver/:\${LD_LIBRARY_PATH}" && \ + echo "export ${driver_path_env}" >> /etc/profile + echo "export ${driver_path_env}" >> ~/.bashrc + echo "source ${cann_toolkit_env_file}" >> /etc/profile + echo "source ${cann_toolkit_env_file}" >> ~/.bashrc + source ${cann_toolkit_env_file} + fi +} + +install_cann() { + # Download installers + if [ ! -f "${TOOLKIT_PATH}" ] || [ ! -f "${KERNELS_PATH}" ]; then + echo "[WARNING] Installers do not exist, re-download them." + download_cann + fi + + # Install dependencies + pip install --no-cache-dir --upgrade pip + pip install --no-cache-dir \ + attrs cython numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests absl-py + + # Install CANN Toolkit + echo "Installing ${TOOLKIT_FILE}" + chmod +x "${TOOLKIT_PATH}" + bash "${TOOLKIT_PATH}" --quiet --install --install-for-all --install-path="${CANN_HOME}" + rm -f "${TOOLKIT_PATH}" + + # Set environment variables + set_env + + # Install CANN Kernels + echo "Installing ${KERNELS_FILE}" + chmod +x "${KERNELS_PATH}" + bash "${KERNELS_PATH}" --quiet --install --install-for-all --install-path="${CANN_HOME}" + rm -f "${KERNELS_PATH}" + + echo "CANN ${CANN_VERSION} installation successful." +} + +PLATFORM=${PLATFORM:=$(uname -s)/$(uname -m)} +ARCH=$(get_architecture) +CANN_HOME=${CANN_HOME:="/usr/local/Ascend"} +CANN_CHIP=${CANN_CHIP:="910b"} +CANN_VERSION=${CANN_VERSION:="8.0.RC1"} + +TOOLKIT_FILE="Ascend-cann-toolkit_${CANN_VERSION}_linux-${ARCH}.run" +KERNELS_FILE="Ascend-cann-kernels-${CANN_CHIP}_${CANN_VERSION}_linux.run" +TOOLKIT_PATH="/tmp/${TOOLKIT_FILE}" +KERNELS_PATH="/tmp/${KERNELS_FILE}" + +# Parse arguments +if [ "$1" == "--download" ]; then + download_cann +elif [ "$1" == "--install" ]; then + install_cann +elif [ "$1" == "--set_env" ]; then + set_env +else + echo "Unexpected arguments, use '--download', '--install' or '--set_env' instead" + exit 1 +fi \ No newline at end of file diff --git a/cann/8.0.RC1/22.03-lts-sp4/scripts/python.sh b/cann/8.0.RC1/22.03-lts-sp4/scripts/python.sh new file mode 100644 index 0000000000000000000000000000000000000000..077ffa178914255d314e1557fd03f99848d8e6d9 --- /dev/null +++ b/cann/8.0.RC1/22.03-lts-sp4/scripts/python.sh @@ -0,0 +1,81 @@ + +#!/bin/bash + +set -e + +PY_VERSION=${PY_VERSION:-"3.8"} +PY_MAJOR_VERSION=$(echo $PY_VERSION | cut -d'.' -f1) + +# Find the latest version +PY_LATEST_VERSION=$(curl -s https://www.python.org/ftp/python/ | grep -oE "${PY_VERSION}\.[0-9]+" | sort -V | tail -n 1) +if [ -z "${PY_LATEST_VERSION}" ]; then + echo "[WARNING] Could not find the latest version for Python ${PY_VERSION}" + exit 1 +else + echo "Latest Python version found: ${PY_LATEST_VERSION}" +fi + +PY_HOME="/usr/local/python${PY_VERSION}" +PY_INSTALLER_TGZ="Python-${PY_LATEST_VERSION}.tgz" +PY_INSTALLER_DIR="Python-${PY_LATEST_VERSION}" +PY_INSTALLER_URL="https://repo.huaweicloud.com/python/${PY_LATEST_VERSION}/${PY_INSTALLER_TGZ}" + +download_python() { + # Download python + echo "Downloading ${PY_INSTALLER_TGZ} from ${PY_INSTALLER_URL}" + curl -fsSL -o "/tmp/${PY_INSTALLER_TGZ}" "${PY_INSTALLER_URL}" + if [ $? -ne 0 ]; then + echo "Python ${PY_LATEST_VERSION} download failed." + exit 1 + fi +} + +install_python() { + # Download python + if [ ! -f "/tmp/${PY_INSTALLER_TGZ}" ]; then + echo "[WARNING] Installer do not exist, re-download it." + download_python + fi + + # Install python + echo "Installing ${PY_INSTALLER_DIR}" + tar -xf /tmp/${PY_INSTALLER_TGZ} -C /tmp + cd /tmp/${PY_INSTALLER_DIR} + mkdir -p /${PY_HOME}/lib + ./configure --prefix=${PY_HOME} --enable-shared LDFLAGS="-Wl,-rpath ${PY_HOME}/lib" + make -j $(nproc) + make altinstall + + # Create symbolic links at PY_HOME + ln -sf ${PY_HOME}/bin/python${PY_VERSION} ${PY_HOME}/bin/python${PY_MAJOR_VERSION} + ln -sf ${PY_HOME}/bin/pip${PY_VERSION} ${PY_HOME}/bin/pip${PY_MAJOR_VERSION} + ln -sf ${PY_HOME}/bin/python${PY_MAJOR_VERSION} ${PY_HOME}/bin/python + ln -sf ${PY_HOME}/bin/pip${PY_MAJOR_VERSION} ${PY_HOME}/bin/pip + + # Clean up + rm -rf /tmp/${PY_INSTALLER_TGZ} /tmp/${PY_INSTALLER_DIR} + echo "Python ${PY_LATEST_VERSION} installation successful." + ${PY_HOME}/bin/python -c "import sys; print(sys.version)" +} + +# Create symbolic links +create_links() { + ln -sf ${PY_HOME}/bin/python${PY_VERSION} /usr/bin/python${PY_VERSION} + ln -sf ${PY_HOME}/bin/pip${PY_VERSION} /usr/bin/pip${PY_VERSION} + ln -sf /usr/bin/python${PY_VERSION} /usr/bin/python${PY_MAJOR_VERSION} + ln -sf /usr/bin/pip${PY_VERSION} /usr/bin/pip${PY_MAJOR_VERSION} + ln -sf /usr/bin/python${PY_MAJOR_VERSION} /usr/bin/python + ln -sf /usr/bin/pip${PY_MAJOR_VERSION} /usr/bin/pip +} + +# Parse arguments +if [ "$1" == "--download" ]; then + download_python +elif [ "$1" == "--install" ]; then + install_python +elif [ "$1" == "--create_links" ]; then + create_links +else + echo "Unexpected arguments, use '--download', '--install' or '--create_links' instead" + exit 1 +fi diff --git a/cann/README.md b/cann/README.md index 8eaa79d154750d95fa0bd95a56c6b1841ff634ad..e0609029fd98c2b8d416401f78ca53a976c70ea9 100644 --- a/cann/README.md +++ b/cann/README.md @@ -1,31 +1,79 @@ -# cann - # Quick reference -- The official cann docker image. - -- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative) +- The official CANN docker image. -- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community) +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative). -# Build reference +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community). -1. Build images and push: -```shell -docker buildx build -t "openeuler/cann:$TAG" --platform linux/arm64 ./$TAG --push -``` +# CANN | openEuler +Current CANN docker images are built on the [openEuler](https://repo.openeuler.org/). This repository is free to use and exempted from per-user rate limits. -We are using `buildx` in here to generate ARM64 images on different host, see more in [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) +AI-oriented heterogeneous compute architecture provides hierarchical APIs to help you quickly build AI applications and services based on the Ascend platform. -# How to use this image -Please run container with this image on Ascend platform of ARM64. -```shell -docker run --device $DEVICE --device /dev/davinci_manager --device /dev/devmm_svm --device /dev/hisi_hdc -v /usr/local/dcmi:/usr/local/dcmi -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info -it openeuler/cann:$TAG -``` +Learn more about on [CANN Document](https://www.hiascend.com/en/document). # Supported tags and respective Dockerfile links +The tag of each `cann` docker image is consist of the complete software stack version. The details are as follows +| Tag | Currently | Architectures | +|----------|-------------|------------------| +|[cann7.0.RC1.alpha002-oe2203sp2](https://gitee.com/openeuler/openeuler-docker-images/blob/master/cann/7.0.RC1.alpha002/22.03-lts-sp2/Dockerfile)| CANN 7.0.RC1.alpha002 on openEuler 22.03-LTS-SP2 | arm64 | +|[8.0.RC1-oe2203sp4](https://gitee.com/openeuler/openeuler-docker-images/blob/master/cann/8.0.RC1/22.03-lts-sp4/Dockerfile)| CANN 8.0.RC1 with Python 3.8 on openEuler 22.03-LTS-SP4 | arm64,amd64 | + +# Usage +In this usage, users can select the corresponding `{Tag}` and `container startup options` based on their requirements. + +- Pull the `openeuler/cann` image from docker + + ```bash + docker pull openeuler/cann:{Tag} + ``` + +- Start a cann instance + + ```bash + docker run \ + --name my-cann \ + --device /dev/davinci1 \ + --device /dev/davinci_manager \ + --device /dev/devmm_svm \ + --device /dev/hisi_hdc \ + -v /usr/local/dcmi:/usr/local/dcmi \ + -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ + -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \ + -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \ + -v /etc/ascend_install.info:/etc/ascend_install.info \ + -it openeuler/cann:{Tag} bash + ``` + +- Container startup options + + | Option | Description | + |--|--| + | `--name my-cann` | Names the container `my-cann`. | + | `--device /dev/davinciX` | NPU device, where `X` is the physical ID number of the chip, e.g., davinci1. | + | `--device /dev/davinci_manager` | Davinci-related management device. | + | `--device /dev/devmm_svm` | Memory management-related device. | + | `--device /dev/hisi_hdc` | HDC-related management device. | + | `-v /usr/local/dcmi:/usr/local/dcmi` | Mounts the host's DCMI .so and interface file directory /usr/local/dcmi to the container. Please modify according to actual situation. | + | `-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi` | Mount the host npu-smi tool "/usr/local/bin/npu-smi" into the container. Please modify it according to the actual situation. | + | `-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/` | Mounts the host directory /usr/local/Ascend/driver/lib64/driver to the container. Please modify according to the path where the driver's .so files are located. | + | `-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info` | Mounts the host's version information file /usr/local/Ascend/driver/version.info to the container. Please modify according to actual situation. | + | `-v /etc/ascend_install.info:/etc/ascend_install.info` | Mounts the host's installation information file /etc/ascend_install.info to the container. | + | `-it` | Starts the container in interactive mode with a terminal (bash). | + | `openeuler/cann:{Tag}` | Specifies the Docker image to run, replace `{Tag}` with the specific version or tag of the `openeuler/cann` image you want to use. | + +- View container running logs + + ```bash + docker logs -f my-cann + ``` + +- To get an interactive shell -- cann7.0.RC1.alpha002-oe2203sp2 + ```bash + docker exec -it my-cann /bin/bash + ``` -## Operating System -Linux/Unix, ARM64 architecture. +# Question and answering +If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images). \ No newline at end of file diff --git a/cann/doc/image-info.yml b/cann/doc/image-info.yml new file mode 100644 index 0000000000000000000000000000000000000000..b54c9d8f0013773eb7b325b395161adba2d24f5b --- /dev/null +++ b/cann/doc/image-info.yml @@ -0,0 +1,86 @@ +name: cann +category: ai +description: CANN(Compute Architecture for Neural Networks)是华为针对AI场景推出的异构计算架构,对上支持多种AI框架,对下服务AI处理器与编程,发挥承上启下的关键作用,是提升昇腾AI处理器计算效率的关键平台。 +environment: | + 本应用在Docker环境中运行,安装Docker执行如下命令 + ``` + yum install -y docker + ``` +tags: | + CANN镜像的Tag由其版本信息和基础镜像版本信息组成,详细内容如下 + + | Tag | Currently | Architectures | + |----------|-------------|------------------| + |[cann7.0.RC1.alpha002-oe2203sp2](https://gitee.com/openeuler/openeuler-docker-images/blob/master/cann/7.0.RC1.alpha002/22.03-lts-sp2/Dockerfile)| CANN 7.0.RC1.alpha002 on openEuler 22.03-LTS-SP2 | arm64 | + |[8.0.RC1-oe2203sp4](https://gitee.com/openeuler/openeuler-docker-images/blob/master/cann/8.0.RC1/22.03-lts-sp4/Dockerfile)| CANN 8.0.RC1 with Python 3.8 on openEuler 22.03-LTS-SP4 | arm64,amd64 | + +download: | + 拉取镜像到本地 + ``` + docker pull openeuler/cann:{Tag} + ``` + +usage: | + - 启动容器 + ``` + docker run \ + --name my-cann \ + --device ${device} \ + --device /dev/davinci_manager \ + --device /dev/devmm_svm \ + --device /dev/hisi_hdc \ + -v /usr/local/dcmi:/usr/local/dcmi \ + -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ + -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \ + -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \ + -v /etc/ascend_install.info:/etc/ascend_install.info \ + -it openeuler/cann:{Tag} bash + ``` + 用户可根据自身需求选择对应版本的`{Tag}`、对应的NPU设备`{device}`以及容器启动的其他参数配置。 + + - 参数说明 + | 配置项 | 描述 | + |--|--| + | `--name my-cann` | 容器名称。| + | `--device /dev/davinci1` | NPU设备,X是芯片物理ID号,例如davinci1。 | + | `--device /dev/davinci_manager` | davinci相关的管理设备。 | + | `--device /dev/devmm_svm` | 内存管理相关设备。 | + | `--device /dev/hisi_hdc` | hdc相关管理设备。 | + | `-v /usr/local/dcmi:/usr/local/dcmi` | 将宿主机dcmi的.so和接口文件目录`/usr/local/dcmi`挂载到容器中,请根据实际情况修改。 | + | `-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi` | 将宿主机`npu-smi`工具`/usr/local/bin/npu-smi`挂载到容器中,请根据实际情况修改。 | + | `-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/` | 将宿主机目录`/usr/local/Ascend/driver/lib64/driver`挂载到容器中。请根据driver的驱动.so所在路径修改。 | + | `-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info` | 将宿主机版本信息文件`/usr/local/Ascend/driver/version.info`挂载到容器中,请根据实际情况修改。 | + | `-v /etc/ascend_install.info:/etc/ascend_install.info` |将宿主机安装信息文件`/etc/ascend_install.info`挂载到容器中。 | + | `-it` | 以交互模式启动容器。 | + | `openeuler/cann:{Tag}` | 指定要运行的镜像为 `openeuler/cann`,其中` {Tag}` 是需要替换的镜像标签。 | + + - 容器测试 + + 查看运行日志 + ``` + docker logs -f my-cann + ``` + + 使用shell交互 + ``` + docker exec -it my-cann /bin/bash + ``` + +license: Apache-2.0 license +similar_packages: + - CUDA: CUDA是英伟达公司设计研发一种并行计算平台和编程模型,包含了CUDA指令集架构以及GPU内部的并行计算引擎。 +dependency: + - attrs + - decorator + - sympy + - numpy + - cffi + - pathlib2 + - pyyaml + - psutil + - protobuf + - scipy + - requests + - absl-py + - wheel + - typing_extensions \ No newline at end of file diff --git a/cann/doc/picture/logo.png b/cann/doc/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c4b327fdac78fb03bda6e5d98e731dfdd92aa38c Binary files /dev/null and b/cann/doc/picture/logo.png differ diff --git a/cann/meta.yml b/cann/meta.yml index afa778316e2b619a0eae9d1df4fee0b276fad906..827915e859e4c61bd28e419b2540ef69fcbb3c9c 100644 --- a/cann/meta.yml +++ b/cann/meta.yml @@ -1,2 +1,4 @@ cann7.0.RC1.alpha002-oe2203sp2: path: cann/7.0.RC1.alpha002/22.03-lts-sp2/Dockerfile +8.0.RC1-oe2203sp4: + path: cann/8.0.RC1/22.03-lts-sp4/Dockerfile