Skip to content

Commit

Permalink
[CI][Contrib] Add Vitis-AI docker installation (apache#6342)
Browse files Browse the repository at this point in the history
* [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) <[email protected]>
Co-authored-by: Anil Martha <[email protected]>
Co-authored-by: Jorn Tuyls <[email protected]>
  • Loading branch information
4 people authored and kevinthesun committed Sep 17, 2020
1 parent 62aed46 commit 4e2cce8
Show file tree
Hide file tree
Showing 6 changed files with 142 additions and 1 deletion.
4 changes: 4 additions & 0 deletions docker/Dockerfile.ci_cpu
Original file line number Diff line number Diff line change
Expand Up @@ -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
55 changes: 55 additions & 0 deletions docker/Dockerfile.demo_vitis_ai
Original file line number Diff line number Diff line change
@@ -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"
24 changes: 24 additions & 0 deletions docker/bash.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Expand All @@ -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[@]}" \
Expand Down
2 changes: 1 addition & 1 deletion docker/install/ubuntu_install_python.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
29 changes: 29 additions & 0 deletions docker/install/ubuntu_install_vitis_ai_core.sh
Original file line number Diff line number Diff line change
@@ -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

29 changes: 29 additions & 0 deletions docker/install/ubuntu_install_vitis_ai_packages_ci.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 4e2cce8

Please sign in to comment.