Skip to content

Commit

Permalink
Updates - Docker & Readme (#791)
Browse files Browse the repository at this point in the history
* Docker - Ubuntu20 ROCm Updates

* Docker - Ubuntu 18 ROCm Updates

* Readme - Updates

* Readme - Win 10/11 Support
  • Loading branch information
kiritigowda committed Mar 25, 2022
1 parent 19a869b commit cd55c23
Show file tree
Hide file tree
Showing 21 changed files with 208 additions and 89 deletions.
7 changes: 4 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
### Changed

* **Backend** - Default Backend set to `HIP`
* DockerFiles - Updates to install ROCm 5.0 Plus

### Fixed

Expand All @@ -28,12 +29,12 @@

### Tested Configurations

* Windows 10
* Windows `10` / `11`
* Linux distribution
+ Ubuntu - `18.04` / `20.04`
+ CentOS - `7` / `8`
+ SLES - `15-SP2`
* ROCm: rocm-dev - `4.5.2.40502-164`
* ROCm: rocm-core - `5.0.0.50000-49`
* rocm-cmake - [rocm-4.2.0](https://github.com/RadeonOpenCompute/rocm-cmake/releases/tag/rocm-4.2.0)
* MIOpenGEMM - [1.1.5](https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/releases/tag/1.1.5)
* MIOpen - [2.14.0](https://github.com/ROCmSoftwarePlatform/MIOpen/releases/tag/2.14.0)
Expand All @@ -42,7 +43,7 @@
* RPP - [0.92](https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp/releases/tag/0.92)
* FFMPEG - [n4.0.4](https://github.com/FFmpeg/FFmpeg/releases/tag/n4.0.4)
* Dependencies for all the above packages
* MIVisionX Setup Script - `V2.0.0`
* MIVisionX Setup Script - `V2.1.0`

### Known issues

Expand Down
38 changes: 19 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<p align="center"><img width="70%" src="docs/images/MIVisionX.png" /></p>

MIVisionX toolkit is a set of comprehensive computer vision and machine intelligence libraries, utilities, and applications bundled into a single toolkit. AMD MIVisionX delivers highly optimized open-source implementation of the <a href="https://www.khronos.org/openvx/" target="_blank">Khronos OpenVX&trade;</a> and OpenVX&trade; Extensions along with Convolution Neural Net Model Compiler & Optimizer supporting <a href="https://onnx.ai/" target="_blank">ONNX</a>, and <a href="https://www.khronos.org/nnef" target="_blank">Khronos NNEF&trade;</a> exchange formats. The toolkit allows for rapid prototyping and deployment of optimized computer vision and machine learning inference workloads on a wide range of computer hardware, including small embedded x86 CPUs, APUs, discrete GPUs, and heterogeneous servers.
MIVisionX toolkit is a set of comprehensive computer vision and machine intelligence libraries, utilities, and applications bundled into a single toolkit. AMD MIVisionX delivers highly optimized conformant open-source implementation of the <a href="https://www.khronos.org/openvx/" target="_blank">Khronos OpenVX&trade;</a> and OpenVX&trade; Extensions along with Convolution Neural Net Model Compiler & Optimizer supporting <a href="https://onnx.ai/" target="_blank">ONNX</a>, and <a href="https://www.khronos.org/nnef" target="_blank">Khronos NNEF&trade;</a> exchange formats. The toolkit allows for rapid prototyping and deployment of optimized computer vision and machine learning inference workloads on a wide range of computer hardware, including small embedded x86 CPUs, APUs, discrete GPUs, and heterogeneous servers.

#### Latest Release

Expand Down Expand Up @@ -55,7 +55,7 @@ MIVisionX toolkit is a set of comprehensive computer vision and machine intellig

<p align="center"><img width="30%" src="docs/images/OpenVX_logo.png" /></p>

[AMD OpenVX](amd_openvx#amd-openvx-amd_openvx) is a highly optimized open source implementation of the <a href="https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html" target="_blank">Khronos OpenVX&trade; 1.3</a> computer vision specification. It allows for rapid prototyping as well as fast execution on a wide range of computer hardware, including small embedded x86 CPUs and large workstation discrete GPUs.
[AMD OpenVX](amd_openvx#amd-openvx-amd_openvx) is a highly optimized conformant open source implementation of the <a href="https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html" target="_blank">Khronos OpenVX&trade; 1.3</a> computer vision specification. It allows for rapid prototyping as well as fast execution on a wide range of computer hardware, including small embedded x86 CPUs and large workstation discrete GPUs.

<a href="https://www.khronos.org/registry/OpenVX/specs/1.0.1/html/index.html" target="_blank">Khronos OpenVX&trade; 1.0.1</a> conformant implementation is available in [MIVisionX Lite](https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/tree/openvx-1.0.1)

Expand Down Expand Up @@ -127,7 +127,7 @@ MIVisionX provides you with tools for accomplishing your tasks throughout the wh

#### Windows

* Windows 10
* Windows `10` / `11`
* Windows SDK
* Visual Studio 2019 or later
* Install the latest AMD [drivers](https://www.amd.com/en/support)
Expand All @@ -149,7 +149,7 @@ MIVisionX provides you with tools for accomplishing your tasks throughout the wh
* Linux distribution
+ **Ubuntu** - `18.04` / `20.04`
+ **CentOS** - `7` / `8`
* Install [ROCm](https://rocmdocs.amd.com/en/latest/Installation_Guide/Installation-Guide.html)
* Install [ROCm](https://docs.amd.com)
* CMake 3.0 or later
* ROCm CMake, MIOpenGEMM & MIOpen for `Neural Net Extensions` ([vx_nn](amd_openvx_extensions/amd_nn#openvx-neural-network-extension-library-vx_nn))
* Qt Creator for [Cloud Inference Client](apps/cloud_inference/client_app/README.md)
Expand All @@ -172,8 +172,8 @@ For the convenience of the developer, we here provide the setup script which wil
* Linux distribution
+ Ubuntu - `18.04` / `20.04`
+ CentOS - `7` / `8`
* [ROCm supported hardware](https://github.com/RadeonOpenCompute/ROCm#hardware-and-software-support)
* [ROCm](https://rocmdocs.amd.com/en/latest/Installation_Guide/Installation-Guide.html)
* [ROCm supported hardware](https://docs.amd.com)
* [ROCm](https://docs.amd.com)

**usage:**

Expand Down Expand Up @@ -219,8 +219,8 @@ macOS [build instructions](https://github.com/GPUOpen-ProfessionalCompute-Librar

#### Using `apt-get` / `yum`

* [ROCm supported hardware](https://github.com/RadeonOpenCompute/ROCm#hardware-and-software-support)
* Install [ROCm](https://rocmdocs.amd.com/en/latest/Installation_Guide/Installation-Guide.html)
* [ROCm supported hardware](https://docs.amd.com)
* Install [ROCm](https://docs.amd.com)
* On `Ubuntu`
```
sudo apt-get install mivisionx
Expand Down Expand Up @@ -339,24 +339,24 @@ Docker files to build MIVisionX containers are [available](docker#mivisionx-dock
#### Prerequisites

* Ubuntu `18.04` / `20.04`
* [rocm supported hardware](https://rocm.github.io/hardware.html)
* [rocm supported hardware](https://docs.amd.com)

#### Workflow

* Step 1 - *Install rocm-dkms*

```
sudo apt update
sudo apt dist-upgrade
sudo apt install libnuma-dev
sudo apt update -y
sudo apt dist-upgrade -y
sudo apt install libnuma-dev wget
sudo reboot
```

```
wget -qO - http://repo.radeon.com/rocm/apt/debian/rocm.gpg.key | sudo apt-key add -
echo 'deb [arch=amd64] http://repo.radeon.com/rocm/apt/debian/ xenial main' | sudo tee /etc/apt/sources.list.d/rocm.list
sudo apt update
sudo apt install rocm-dkms
wget https://repo.radeon.com/amdgpu-install/21.50/ubuntu/focal/amdgpu-install_21.50.50000-1_all.deb
sudo apt-get install -y ./amdgpu-install_21.50.50000-1_all.deb
sudo apt-get update -y
sudo amdgpu-install -y --usecase=rocm
sudo reboot
```

Expand Down Expand Up @@ -426,12 +426,12 @@ Review all notable [changes](CHANGELOG.md#changelog) with the latest release

### Tested configurations

* Windows 10
* Windows `10` / `11`
* Linux distribution
+ Ubuntu - `18.04` / `20.04`
+ CentOS - `7` / `8`
+ SLES - `15-SP2`
* ROCm: rocm-dev - `4.5.2.40502-164`
* ROCm: rocm-core - `5.0.0.50000-49`
* rocm-cmake - [rocm-4.2.0](https://github.com/RadeonOpenCompute/rocm-cmake/releases/tag/rocm-4.2.0)
* MIOpenGEMM - [1.1.5](https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/releases/tag/1.1.5)
* MIOpen - [2.14.0](https://github.com/ROCmSoftwarePlatform/MIOpen/releases/tag/2.14.0)
Expand All @@ -440,7 +440,7 @@ Review all notable [changes](CHANGELOG.md#changelog) with the latest release
* RPP - [0.92](https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp/releases/tag/0.92)
* FFMPEG - [n4.0.4](https://github.com/FFmpeg/FFmpeg/releases/tag/n4.0.4)
* Dependencies for all the above packages
* MIVisionX Setup Script - `V2.0.0`
* MIVisionX Setup Script - `V2.1.0`

### Known issues

Expand Down
2 changes: 1 addition & 1 deletion amd_openvx/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The standard defines graph conventions and execution semantics to address the ne

OpenVX specification also defines the VXU or the immediate function library. VXU operators allow developers to use all the OpenVX operators as a directly callable C function without creating a graph first. Applications built using the VXU library do not benefit from the optimizations enabled by graph execution. The VXU library can be the simplest way to use OpenVX and is the first step in porting existing vision applications.

AMD OpenVX is a highly optimized open-source implementation of the [Khronos OpenVX 1.3](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html) computer vision specification. It allows for rapid prototyping as well as fast execution on a wide range of computer hardware, including small embedded x86 CPUs and large workstation discrete GPUs.
AMD OpenVX is a highly optimized conformant open-source implementation of the [Khronos OpenVX 1.3](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html) computer vision specification. It allows for rapid prototyping as well as fast execution on a wide range of computer hardware, including small embedded x86 CPUs and large workstation discrete GPUs.

The amd_openvx project consists of the following components:

Expand Down
2 changes: 1 addition & 1 deletion amd_openvx_extensions/amd_opencv/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ The following is a list of OpenCV functions that have been included in the vx_op
* OpenCV [3.4](https://github.com/opencv/opencv/releases/tag/3.4.0) `with`/`without` **contrib**
- OpenCV_DIR environment variable should point to OpenCV/build folder

### Build using `Visual Studio 2019` on 64-bit Windows 10
### Build using `Visual Studio 2019` on 64-bit Windows `10` / `11`

* Use amd_openvx_extensions/amd_opencv/amd_opencv.sln to build for x64 platform

Expand Down
4 changes: 2 additions & 2 deletions amd_openvx_extensions/amd_winml/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ The following is a list of WinML functions that have been included in the vx_win

### Pre-requisites

* Windows 10, [version `1809` or later](https://www.microsoft.com/software-download/windows10)
* Windows `10` / `11`, [version `1809` or later](https://www.microsoft.com/software-download/windows10)
* Windows SDK, [build `17763` or later](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk)
* Visual Studio 2019, [version `16.11.5` or later](https://developer.microsoft.com/en-us/windows/downloads)
+ Visual Studio extension for C++/WinRT
Expand All @@ -34,7 +34,7 @@ The following is a list of WinML functions that have been included in the vx_win
+ Set `OpenCV_DIR` environment variable to `OpenCV/build` folder
+ Add `%OpenCV_DIR%\x64\vc14\bin` or `%OpenCV_DIR%\x64\vc15\bin` to your `PATH`

### Build using `Visual Studio 2019` on 64-bit Windows 10
### Build using `Visual Studio 2019` on 64-bit Windows `10` / `11`

* Use `amd_openvx_extensions/amd_winml.sln` to build for x64 platform

Expand Down
4 changes: 2 additions & 2 deletions apps/mivisionx_winml_classifier/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This application is a sample for developing windows application using MIVisionX

### Pre-requisites

* Windows 10, [version `1809` or later](https://www.microsoft.com/software-download/windows10)
* Windows `10` / `11`, [version `1809` or later](https://www.microsoft.com/software-download/windows10)
* Windows SDK, build `17763` or later
* Visual Studio 2019, [version `16.11.5` or later](https://developer.microsoft.com/en-us/windows/downloads)
- Visual Studio extension for C++/WinRT
Expand All @@ -17,7 +17,7 @@ This application is a sample for developing windows application using MIVisionX
+ Set `OpenCV_DIR` environment variable to `OpenCV/build` folder
+ Add `OpenCV_DIR\x64\vc14\bin` or `OpenCV_DIR\x64\vc15\bin` to your `PATH`

### Build using `Visual Studio 2019` on 64-bit Windows 10
### Build using `Visual Studio 2019` on 64-bit Windows `10` / `11`

* Use `apps/mivisonx_winml_classifier/winml_classifier.sln` to build for x64 platform

Expand Down
2 changes: 1 addition & 1 deletion apps/mivisionx_winml_yolov2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ This application shows how to run tiny yolov2 (20 classes) with MIVisionX RunTim

## Pre-requisites

* Windows 10, [version `1809` or later](https://www.microsoft.com/software-download/windows10)
* Windows `10` / `11`, [version `1809` or later](https://www.microsoft.com/software-download/windows10)
* Windows SDK, build `17763` or later
* Visual Studio 2019, [version `16.11.5` or later](https://developer.microsoft.com/en-us/windows/downloads)

Expand Down
10 changes: 5 additions & 5 deletions docker/mivisionx-on-ubuntu18.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ WORKDIR $MIVISIONX_DEPS_ROOT
RUN apt-get update -y
# install mivisionx base dependencies - Level 1
RUN apt-get -y install gcc g++ cmake git
# install ROCm for mivisionx OpenCL dependency - Level 2
RUN apt-get -y install libnuma-dev wget sudo gnupg2 kmod python3-dev && \
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add - && \
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/debian/ ubuntu main' | sudo tee /etc/apt/sources.list.d/rocm.list && \
# install ROCm for mivisionx OpenCL/HIP dependency - Level 2
RUN apt-get -y install libnuma-dev wget sudo && \
wget https://repo.radeon.com/amdgpu-install/21.50/ubuntu/bionic/amdgpu-install_21.50.50000-1_all.deb && \
sudo apt-get -y install ./amdgpu-install_21.50.50000-1_all.deb && \
sudo apt-get update -y && \
sudo apt-get -y install rocm-dev
sudo amdgpu-install -y --usecase=rocm
# install OpenCV & FFMPEG - Level 3
RUN apt-get -y install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy \
libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev unzip && \
Expand Down
10 changes: 5 additions & 5 deletions docker/mivisionx-on-ubuntu20.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ WORKDIR $MIVISIONX_DEPS_ROOT
RUN apt-get update -y
# install mivisionx base dependencies - Level 1
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install gcc g++ cmake pkg-config git
# install ROCm for mivisionx OpenCL dependency - Level 2
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install libnuma-dev wget sudo gnupg2 kmod python3-dev && \
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add - && \
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/debian/ ubuntu main' | sudo tee /etc/apt/sources.list.d/rocm.list && \
# install ROCm for mivisionx OpenCL/HIP dependency - Level 2
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install libnuma-dev wget sudo && \
wget https://repo.radeon.com/amdgpu-install/21.50/ubuntu/focal/amdgpu-install_21.50.50000-1_all.deb && \
sudo apt-get install -y ./amdgpu-install_21.50.50000-1_all.deb && \
sudo apt-get update -y && \
sudo apt-get -y install rocm-dev
sudo amdgpu-install -y --usecase=rocm
# install OpenCV & FFMPEG - Level 3
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy \
libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev unzip && \
Expand Down
59 changes: 59 additions & 0 deletions docker/mivisionx-opencl-on-ubuntu18.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
FROM ubuntu:18.04

ENV MIVISIONX_DEPS_ROOT=/opt/mivisionx-deps
WORKDIR $MIVISIONX_DEPS_ROOT

RUN apt-get update -y
# install mivisionx base dependencies - Level 1
RUN apt-get -y install gcc g++ cmake git
# install ROCm for mivisionx OpenCL/HIP dependency - Level 2
RUN apt-get -y install libnuma-dev wget sudo && \
wget https://repo.radeon.com/amdgpu-install/21.50/ubuntu/bionic/amdgpu-install_21.50.50000-1_all.deb && \
sudo apt-get -y install ./amdgpu-install_21.50.50000-1_all.deb && \
sudo apt-get update -y && \
sudo amdgpu-install -y --usecase=rocm
# install OpenCV & FFMPEG - Level 3
RUN apt-get -y install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy \
libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev unzip && \
mkdir OpenCV && cd OpenCV && wget https://github.com/opencv/opencv/archive/4.5.5.zip && unzip 4.5.5.zip && \
mkdir build && cd build && cmake -DWITH_OPENCL=OFF ../opencv-4.5.5 && make -j8 && sudo make install && sudo ldconfig && cd
RUN apt-get -y install autoconf automake build-essential cmake git-core libass-dev libfreetype6-dev libsdl2-dev libtool libva-dev \
libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev \
nasm yasm libx264-dev libx265-dev libnuma-dev libfdk-aac-dev && \
wget https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n4.0.4.zip && unzip n4.0.4.zip && cd FFmpeg-n4.0.4/ && sudo ldconfig && \
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/" && \
./configure --enable-shared --disable-static --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libass --enable-gpl --enable-nonfree && \
make -j8 && sudo make install && cd
# install MIVisionX neural net dependency - Level 4
RUN apt-get -y install sqlite3 libsqlite3-dev libbz2-dev libssl-dev python-dev python3-dev autoconf automake libtool curl make g++ unzip && \
mkdir neuralNet && cd neuralNet && wget https://sourceforge.net/projects/half/files/half/1.12.0/half-1.12.0.zip && \
unzip half-1.12.0.zip -d half-files && sudo cp half-files/include/half.hpp /usr/local/include/ && \
wget https://boostorg.jfrog.io/artifactory/main/release/1.72.0/source/boost_1_72_0.tar.bz2 && tar xjvf boost_1_72_0.tar.bz2 && \
cd boost_1_72_0 && ./bootstrap.sh --prefix=/usr/local --with-python=python3 && \
./b2 stage -j16 threading=multi link=shared cxxflags="-std=c++11" && \
sudo ./b2 install threading=multi link=shared --with-system --with-filesystem && \
./b2 stage -j16 threading=multi link=static cxxflags="-std=c++11 -fpic" cflags="-fpic" && \
sudo ./b2 install threading=multi link=static --with-system --with-filesystem && cd ../ && \
git clone -b rocm-4.2.0 https://github.com/RadeonOpenCompute/rocm-cmake.git && cd rocm-cmake && mkdir build && cd build && \
cmake ../ && make -j8 && sudo make install && cd ../../ && \
wget https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/archive/1.1.5.zip && unzip 1.1.5.zip && \
cd MIOpenGEMM-1.1.5 && mkdir build && cd build && cmake ../ && make -j8 && sudo make install && cd ../../ && \
wget https://github.com/ROCmSoftwarePlatform/MIOpen/archive/2.14.0.zip && unzip 2.14.0.zip && \
cd MIOpen-2.14.0 && mkdir build && cd build && \
#cd MIOpen-2.14.0 && sudo cmake -P install_deps.cmake --minimum && mkdir build && cd build && \ - deps install turned off
cmake -DMIOPEN_BACKEND=OpenCL -DMIOPEN_USE_MIOPENGEMM=On ../ && make -j8 && make MIOpenDriver && sudo make install && cd ../../ && \
git clone -b v3.12.0 https://github.com/protocolbuffers/protobuf.git && cd protobuf && git submodule update --init --recursive && \
./autogen.sh && ./configure && make -j8 && make check -j8 && sudo make install && sudo ldconfig && cd
# install MIVisionX rocAL dependency - Level 5
RUN apt-get -y install libgflags-dev libgoogle-glog-dev liblmdb-dev nasm yasm libjsoncpp-dev clang && \
git clone -b 2.0.6.1 https://github.com/rrawther/libjpeg-turbo.git && cd libjpeg-turbo && mkdir build && cd build && \
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RELEASE -DENABLE_STATIC=FALSE -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/libjpeg-turbo-2.0.3 \
-DCMAKE_INSTALL_DEFAULT_LIBDIR=lib ../ && make -j4 && sudo make install && cd ../../ && \
git clone -b 0.92 https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp.git && cd rpp && mkdir build && cd build && \
cmake -DBACKEND=OCL ../ && make -j4 && sudo make install && cd

WORKDIR /workspace

# install MIVisionX
RUN git clone https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX.git && mkdir build && cd build && \
cmake -DBACKEND=OCL ../MIVisionX && make -j8 && make install
Loading

0 comments on commit cd55c23

Please sign in to comment.