AMD's library for high peformance machine learning primitives. MIOpen supports two programming models -
- A ROCm enabled platform, more info here
- Base software stack, which includes
- OpenCL - OpenCL libraries and header files
- HIP -
- HIP and HCC libraries and header files
- clang-ocl -- required
- MIOpen relies on the miopengemm library to enable several functionalities that require GEMM. miopengemm is recommended but not required.
- ROCm cmake modules can be installed from here
Please find the install instructions on the above dependencies on their respective repositories.
Configure with cmake
First create a build directory:
mkdir build; cd build;
Next configure cmake. The preferred backend for MIOpen can be set using the
-DMIOPEN_BACKEND cmake variable.
For OpenCL, run:
cmake -DMIOPEN_BACKEND=OpenCL ..
The above assumes that OpenCL is installed in one of the standard locations. If not, then manually set these two cmake variables:
cmake -DMIOPEN_BACKEND=OpenCL -DOPENCL_LIBRARIES=<opencl-library-path> -DOPENCL_INCLUDE_DIRS<opencl-headers-path> ..
For HIP, run:
Set the C++ compiler to
cmake -DMIOPEN_BACKEND=HIP -DCMAKE_PREFIX_PATH="<hip-installed-path>;<hcc-installed-path>;<clang-ocl-installed-path>" ..
An example cmake step can be:
CXX=/opt/rocm/hcc/bin/hcc cmake -DMIOPEN_BACKEND=HIP -DCMAKE_PREFIX_PATH="/opt/rocm/hcc;/opt/rocm/hip" ..
By default the install location is set to '/opt/rocm', this can be set by using
cmake -DMIOPEN_BACKEND=OpenCL -DCMAKE_INSTALL_PREFIX=<miopen-installed-path> ..
Also, the path to database for network configs can be set using the
MIOPEN_DB_PATH variable. By default it is set to where the database files would be installed. For development purposes, setting
BUILD_DEV will set the path to the database files stored in the source directory:
cmake -DMIOPEN_BACKEND=OpenCL -DBUILD_DEV=On ..
The configuration can be changed after running cmake by using
ccmake .. OR
ccmake program is not available on windows.
Building the library
The library can be built, from the
build directory using the 'Release' configuration:
cmake --build . --config Release OR
And can be installed by using the 'install' target:
cmake --build . --config Release --target install OR
This will install the library to the
CMAKE_INSTALL_PREFIX path that was set.
Building the driver
MIOpen provides an application-driver which can be used to execute any one particular layer in isolation and measure performance and verification of the library.
The driver can be built using the
cmake --build . --config Release --target MIOpenDriver OR
Documentation on how to run the driver is here
Running the tests
The tests can be run by using the 'check' target:
cmake --build . --config Release --target check OR
A single test can be built and ran, by doing:
cmake --build . --config Release --target test_tensor ./test/test_tensor
Building the documentation
HTML and PDF documentation can be built using:
cmake --build . --config Release --target doc OR
This will build a local searchable web site inside the ./MIOpen/doc/html folder and a PDF document inside the ./MIOpen/doc/pdf folder.
Documentation is built using generated using Doxygen and should be installed separately.
Requirements for both Sphinx, Breathe, and the ReadTheDocs theme can be filled for these in the MIOpen/doc folder:
pip install -r ./requirements.txt
Depending on your setup
sudo may be required for the pip install.
Formatting the code
All the code is formatted using clang-format. To format a file, use:
clang-format-3.8 -style=file -i <path-to-source-file>
Also, githooks can be installed to format the code per-commit: