The AMD ROCm Augmentation Library (rocAL) is designed to efficiently decode and process images and videos from a variety of storage formats and modify them through a processing graph programmable by the user. rocAL currently provides C API. For more details, go to rocAL user guide page.
rocAL can be currently used to perform the following operations either with randomized or fixed parameters:
Blend | Blur (Gaussian 3x3) | Brightness | Color Temperature |
---|---|---|---|
ColorTwist | Contrast | Crop | Crop Mirror Normalization |
CropResize | Exposure Modification | Fisheye Lens | Flip (Horizontal, Vertical and Both) |
Fog | Gamma | Hue | Jitter |
Lens Correction | Pixelization | Raindrops | Random Crop |
Resize | Resize Crop Mirror | Rotation | Salt And Pepper Noise |
Saturation | Snowflakes | Vignette | Warp Affine |
Linux distribution
20.04
/ 22.04
7
8
/ 9
15-SP5
[!IMPORTANT]
gfx908
or higher GPU required
Install ROCm 6.1.0
or later with amdgpu-install: Required usecase - rocm
[!IMPORTANT]
sudo amdgpu-install --usecase=rocm
sudo apt install rocm-hip-runtime-dev
sudo apt install rpp-dev
MIVisionX Components: AMD OpenVX™ and AMD OpenVX™ Extensions: VX_RPP
and AMD Media
sudo apt install mivisionx-dev
sudo apt install rocdecode-dev
Half-precision floating-point library - Version 1.12.0
or higher
sudo apt install half
Google Protobuf - Version 3.12.4
or higher
sudo apt install libprotobuf-dev
sudo apt install liblmdb-dev
Python3 and Python3 PIP
sudo apt install python3-dev python3-pip
Python Wheel
pip3 install wheel
https://github.com/pybind/pybind11
https://github.com/libjpeg-turbo/libjpeg-turbo.git
https://github.com/Tencent/rapidjson.git
master
Optional: FFMPEG
sudo apt install ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev
Optional: OpenCV
sudo apt install libopencv-dev
[!IMPORTANT]
- Compiler features required
- OpenMP
- C++17
[!NOTE]
- All package installs are shown with the
apt
package manager. Use the appropriate package manager for your operating system.
For your convenience, we provide the setup script,rocAL-setup.py, which installs all required dependencies. Run this script only once.
python rocAL-setup.py --directory [setup directory - optional (default:~/)]
--rocm_path [ROCm Installation Path - optional (default:/opt/rocm)]
--backend [rocAL Dependency Backend - optional (default:HIP) [options:OCL/HIP]]
--ffmpeg [FFMPEG Installation - optional (default:OFF)[options:ON/OFF]]
--reinstall [Reinstall - optional (default:OFF)[options:ON/OFF]]
The installation process uses the following steps:
ROCm-supported hardware install verification
Install ROCm 6.1.0
or later with amdgpu-install with --usecase=rocm
Use either package install or source install as described below.
Install rocAL runtime, development, and test packages.
rocal
only provides the dynamic librariesrocal-dev
/rocal-devel
provides the libraries, executables, header files, and samplesrocal-test
provides ctest to verify installationUbuntu
sudo apt-get install rocal rocal-dev rocal-test
CentOS
/RedHat
sudo yum install rocal rocal-devel rocal-test
SLES
sudo zypper install rocal rocal-devel rocal-test
[!NOTE]
- Package install requires
TurboJPEG
andRapidJSON
manual installCentOS
/RedHat
/SLES
requires additionalFFMPEG Dev
package manual install
To build rocAL from source and install, follow the steps below:
git clone https://github.com/ROCm/rocAL.git
Note: rocAL has support for two GPU backends: OPENCL and HIP:
Instructions for building rocAL with the HIP GPU backend (default GPU backend):
run the setup script to install all the dependencies required by the HIP GPU backend:
cd rocAL
python rocAL-setup.py
run the below commands to build rocAL with the HIP GPU backend:
mkdir build-hip
cd build-hip
cmake ../
make -j8
sudo cmake --build . --target PyPackageInstall
sudo make install
[!NOTE]
PyPackageInstall
used for rocal_pybind installationsudo
required for pybind installation
[!IMPORTANT]
- Use
-D PYTHON_VERSION_SUGGESTED=3.x
withcmake
for using a specific Python3 version if required.- Use
-D AUDIO_SUPPORT=ON
to enable Audio features, Audio support will be enabled by default with ROCm versions > 6.2
make test
[!NOTE] To run tests with verbose option, use
make test ARGS="-VV"
.
[!NOTE]
- rocAL_pybind is not supported on OPENCL backend
- rocAL cannot be installed for both GPU backends in the same default folder (i.e., /opt/rocm/)
- if an app interested in installing rocAL with both GPU backends, then add -DCMAKE_INSTALL_PREFIX in the cmake commands to install rocAL with OPENCL and HIP backends into two separate custom folders.
/opt/rocm/bin
/opt/rocm/lib
/opt/rocm/include/rocal
/opt/rocm/share/rocal
/opt/rocm/share/doc/rocal
Test package will install ctest module to test rocAL. Follow below steps to test packge install
mkdir rocAL-test && cd rocAL-test
cmake /opt/rocm/share/rocal/test/
ctest -VV
[!NOTE]
- Make sure all rocAL required libraries are in your PATH
RHEL
/SLES
- Export FFMPEG libraries into your PATH
export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64/:/usr/local/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export PATH=$PATH:/opt/rocm/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib
Documentation
Run the steps below to build documentation locally.
cd docs
pip3 install -r sphinx/requirements.txt
python3 -m sphinx -T -E -b html -d _build/doctrees -D language=en . _build/html
doxygen .Doxyfile
Please email mivisionx.support@amd.com
for questions, and feedback on rocAL.
Please submit your feature requests, and bug reports on the GitHub issues page.
Review all notable changes with the latest release
20.04
/ 22.04
7
8
/ 9
15-SP5
6.1.0.60100-64
rpp
& rpp-dev
/rpp-devel
mivisionx
& mivisionx-dev
/mivisionx-devel
libprotobuf-dev
/protobuf-devel
https://github.com/Tencent/rapidjson
ffmpeg
dev packagelibopencv-dev
/ 4.6.0V2.6.0