From c29d491a400adfc69ab25b0ff96150131687c112 Mon Sep 17 00:00:00 2001 From: anilmartha Date: Thu, 3 Sep 2020 23:15:05 +0530 Subject: [PATCH] [CI][Contrib] Add Vitis-AI docker installation (#6342) * [CI][Contrib] Add Vitis-AI docker installation * rename ubuntu_install_vai_packages.sh to ubuntu_install_vitis_ai_packages_ci.sh * Add Dockerfile.demo_vitis_ai and environment scripts * Add comment to docker/bash describing Xilinx Vitis-AI specific setup Co-authored-by: anilm (generated by with_the_same_user script) Co-authored-by: Anil Martha Co-authored-by: Jorn Tuyls --- docker/Dockerfile.ci_cpu | 4 ++ docker/Dockerfile.demo_vitis_ai | 55 +++++++++++++++++++ docker/bash.sh | 24 ++++++++ docker/install/ubuntu_install_python.sh | 2 +- .../install/ubuntu_install_vitis_ai_core.sh | 29 ++++++++++ .../ubuntu_install_vitis_ai_packages_ci.sh | 29 ++++++++++ 6 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 docker/Dockerfile.demo_vitis_ai create mode 100644 docker/install/ubuntu_install_vitis_ai_core.sh create mode 100644 docker/install/ubuntu_install_vitis_ai_packages_ci.sh diff --git a/docker/Dockerfile.ci_cpu b/docker/Dockerfile.ci_cpu index df416d48ce09..cbf4017e631a 100644 --- a/docker/Dockerfile.ci_cpu +++ b/docker/Dockerfile.ci_cpu @@ -83,3 +83,7 @@ RUN bash /install/ubuntu_install_caffe.sh # Github Arm(R) Ethos(TM)-N NPU driver COPY install/ubuntu_install_ethosn_driver_stack.sh /install/ubuntu_install_ethosn_driver_stack.sh RUN bash /install/ubuntu_install_ethosn_driver_stack.sh + +# Vitis-AI PyXIR CI deps +COPY install/ubuntu_install_vitis_ai_packages_ci.sh /install/ubuntu_install_vitis_ai_packages_ci.sh +RUN bash /install/ubuntu_install_vitis_ai_packages_ci.sh diff --git a/docker/Dockerfile.demo_vitis_ai b/docker/Dockerfile.demo_vitis_ai new file mode 100644 index 000000000000..58326b66bf0c --- /dev/null +++ b/docker/Dockerfile.demo_vitis_ai @@ -0,0 +1,55 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# CI docker VAI env +FROM xilinx/vitis-ai:latest + +RUN apt-get update --fix-missing + + +COPY install/ubuntu_install_core.sh /install/ubuntu_install_core.sh +RUN bash /install/ubuntu_install_core.sh + +COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh +RUN bash /install/ubuntu_install_python.sh + +COPY install/ubuntu_install_python_package.sh /install/ubuntu_install_python_package.sh +RUN bash /install/ubuntu_install_python_package.sh + +COPY install/ubuntu_install_llvm.sh /install/ubuntu_install_llvm.sh +RUN bash /install/ubuntu_install_llvm.sh + +# NNPACK deps +COPY install/ubuntu_install_nnpack.sh /install/ubuntu_install_nnpack.sh +RUN bash /install/ubuntu_install_nnpack.sh + +ENV PATH $PATH:$CARGO_HOME/bin:/usr/lib/go-1.10/bin + +# ANTLR deps +COPY install/ubuntu_install_java.sh /install/ubuntu_install_java.sh +RUN bash /install/ubuntu_install_java.sh + +# Install Vitis-AI ubuntu dependencies +COPY install/ubuntu_install_vitis_ai_core.sh /install/ubuntu_install_vitis_ai_core.sh +RUN bash /install/ubuntu_install_vitis_ai_core.sh + +# Install dependencies inside vitis-ai-tensorflow conda +RUN . $VAI_ROOT/conda/etc/profile.d/conda.sh && \ + conda activate vitis-ai-tensorflow && \ + pip install --no-cache-dir antlr4-python3-runtime && bash /install/ubuntu_install_python_package.sh + +ENV USER="root" diff --git a/docker/bash.sh b/docker/bash.sh index b1a0e712baae..690a5538f16a 100755 --- a/docker/bash.sh +++ b/docker/bash.sh @@ -88,6 +88,28 @@ else CI_PY_ENV="" fi +# If the Vitis-AI docker image is selected, expose the Xilinx FPGA devices and required volumes containing e.g. DSA's and overlays +if [[ "${DOCKER_IMAGE_NAME}" == *"demo_vitis_ai"* && -d "/dev/shm" && -d "/opt/xilinx/dsa" && -d "/opt/xilinx/overlaybins" ]]; then + WORKSPACE_VOLUMES="-v /dev/shm:/dev/shm -v /opt/xilinx/dsa:/opt/xilinx/dsa -v /opt/xilinx/overlaybins:/opt/xilinx/overlaybins" + XCLMGMT_DRIVER="$(find /dev -name xclmgmt\*)" + DOCKER_DEVICES="" + for i in ${XCLMGMT_DRIVER} ; + do + DOCKER_DEVICES+="--device=$i " + done + + RENDER_DRIVER="$(find /dev/dri -name renderD\*)" + for i in ${RENDER_DRIVER} ; + do + DOCKER_DEVICES+="--device=$i " + done + +else + DOCKER_DEVICES="" + WORKSPACE_VOLUMES="" +fi + + # Print arguments. echo "WORKSPACE: ${WORKSPACE}" echo "DOCKER CONTAINER NAME: ${DOCKER_IMAGE_NAME}" @@ -108,6 +130,8 @@ fi # and share the PID namespace (--pid=host) so the process inside does not have # pid 1 and SIGKILL is propagated to the process inside (jenkins can kill it). ${DOCKER_BINARY} run --rm --pid=host\ + ${DOCKER_DEVICES}\ + ${WORKSPACE_VOLUMES}\ -v ${WORKSPACE}:/workspace \ -v ${SCRIPT_DIR}:/docker \ "${EXTRA_MOUNTS[@]}" \ diff --git a/docker/install/ubuntu_install_python.sh b/docker/install/ubuntu_install_python.sh index c1f9d5081f57..58d72f327aa6 100755 --- a/docker/install/ubuntu_install_python.sh +++ b/docker/install/ubuntu_install_python.sh @@ -27,7 +27,7 @@ apt-get install -y python-dev # python 3.6 apt-get install -y software-properties-common -add-apt-repository ppa:deadsnakes/ppa +add-apt-repository -y ppa:deadsnakes/ppa apt-get update apt-get install -y python-pip python-dev python3.6 python3.6-dev diff --git a/docker/install/ubuntu_install_vitis_ai_core.sh b/docker/install/ubuntu_install_vitis_ai_core.sh new file mode 100644 index 000000000000..ea05ffd170fe --- /dev/null +++ b/docker/install/ubuntu_install_vitis_ai_core.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +set -e +set -u +set -o pipefail + +# install libraries for building Vitis-AI on ubuntu +apt-get update && apt-get install -y --no-install-recommends \ + graphviz\ + gnupg2 + +apt-get update && apt-get install -y gcc-aarch64-linux-gnu + diff --git a/docker/install/ubuntu_install_vitis_ai_packages_ci.sh b/docker/install/ubuntu_install_vitis_ai_packages_ci.sh new file mode 100644 index 000000000000..d4077bc67b44 --- /dev/null +++ b/docker/install/ubuntu_install_vitis_ai_packages_ci.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +set -e +set -u +set -o pipefail + +export PYXIR_HOME=/opt/pyxir +mkdir "$PYXIR_HOME" + +pip3 install progressbar + +git clone --recursive --branch v0.1.2 https://github.com/Xilinx/pyxir.git "${PYXIR_HOME}" +cd "${PYXIR_HOME}" && python3 setup.py install