Installing and building rocSOLVER#
This topic explains how to install and build the rocSOLVER library on the Linux platform.
Prerequisites#
rocSOLVER requires a ROCm-enabled platform. For more information, see the ROCm install guide.
rocSOLVER also requires a compatible version of rocBLAS installed on the system and might require rocSPARSE, depending on the build options. For more information, see rocBLAS and rocSPARSE.
In terms of compatibility, it’s best to always use rocSOLVER with the matching rocBLAS and rocSPARSE versions. For example, to install the rocSOLVER version from ROCm 6.4, ensure the ROCm 6.4 versions of rocBLAS and rocSPARSE are also installed.
Install using prebuilt packages#
If you have added the ROCm repositories to your Linux system, you can install the latest release version of rocSOLVER using a package manager. For example, use these commands on Ubuntu:
sudo apt-get update
sudo apt-get install rocsolver
Build and install from source#
The rocSOLVER source code is hosted on GitHub. Download the code and checkout the desired branch using these commands:
git clone -b <desired_branch_name> https://github.com/ROCm/rocSOLVER.git
cd rocSOLVER
To build from source, external dependencies, such as CMake and Python, are required. Additionally, if you are building the library clients (which are not built by default), LAPACK and GoogleTest are also required.
Note
The library clients, which include rocsolver-test and rocsolver-bench, provide the infrastructure for testing and benchmarking rocSOLVER. For more details, see rocSOLVER clients.
Using the install script#
The recommended method of building and installing rocSOLVER is the install.sh
script.
The help
command provides detailed information on how to use the script.
./install.sh --help
This section discusses how to use the install script for some common use cases.
The following command builds rocSOLVER and places the generated library files, such as headers and
librocsolver.so
, in the output directoryrocSOLVER/build/release/rocsolver-install
. Other output files from the configuration and build process can be found in therocSOLVER/build
androcSOLVER/build/release
directories. This command assumes that all external library dependencies have been installed and that the rocBLAS library is located at/opt/rocm/rocblas
../install.sh
The
--no-sparse
option builds rocSOLVER without rocSPARSE as a dependency. This disables the SPARSE functionality within rocSOLVER and causes all related methods to returnrocblas_status_not_implemented
../install.sh --no-sparse
Use the
-g
flag to build rocSOLVER in debug mode. In this case, the generated library files can be found atrocSOLVER/build/debug/rocsolver-install
. Other output files from the configuration and build process can be found in therocSOLVER/build
androcSOLVER/build/debug
directories../install.sh -g
Use
--lib_dir
and--build_dir
to change output directories. In this example, the installer places the headers and library files in/home/user/rocsolverlib
and the outputs from the configuration and build processes inrocSOLVER/buildoutput
androcSOLVER/buildoutput/release
. The designated output directories must be local. Otherwise, you might requiresudo
privileges. For a system-wide rocSOLVER installation, use the-i
flag, as shown below../install.sh --lib_dir /home/user/rocsolverlib --build_dir buildoutput
Use
--rocblas_dir
to change where the build system searches for the rocBLAS library. In this case, the installer looks for the rocBLAS library at/alternative/rocblas/location
. Similarly, you can use--rocsparse_dir
to specify an alternative location for the rocSPARSE library../install.sh --rocblas_dir /alternative/rocblas/location
When the
-s
flag is provided, the installer generates a static library (librocsolver.a
) instead../install.sh -s
The
-d
flag installs all the external dependencies required by the rocSOLVER library in/usr/local
. This flag only needs to be used once. Subsequent invocations ofinstall.sh
do not have to rebuild the dependencies../install.sh -d
The
-c
flag also builds the library clientsrocsolver-bench
androcsolver-test
. The binaries are located atrocSOLVER/build/release/clients/staging
. The script assumes that all external dependencies for the clients have been installed../install.sh -c
Combining the
-c
and-d
flags installs all external dependencies required by the rocSOLVER clients. The-d
flag only needs to be used once../install.sh -dc
The
-i
flag generates a prebuilt rocSOLVER package and installs it, using the relevant package manager, at the standard/opt/rocm/rocsolver
location. This is the preferred approach for installing rocSOLVER on a system because it allows the library to be safely removed using the package manager../install.sh -i
With the
-p
flag, the installer generates the rocSOLVER package but doesn’t install it../install.sh -p
When generating a package, use
--install_dir
to change the directory where the package is installed. In this case, the rocSOLVER package is installed at/package/install/path
../install.sh -i --install_dir /package/install/path
Manual building and installation#
Manual installation of all the external dependencies is a complex task. For more information on how to install each dependency, see the corresponding documentation:
After all dependencies are installed (including ROCm, rocBLAS, and rocSPARSE), you can manually build rocSOLVER by using a combination of CMake and Make commands. The CMake options provide more flexibility to modify the building and installation process. This list provides some examples of common use cases. (See the CMake documentation for more information about the options.)
This is equivalent to ./install.sh
.
mkdir -p build/release && cd build/release
cmake --toolchain=toolchain-linux.cmake -DCMAKE_INSTALL_PREFIX=rocsolver-install ../..
make install
This is equivalent to ./install.sh --lib_dir /home/user/rocsolverlib --build_dir buildoutput
.
mkdir -p buildoutput/release && cd buildoutput/release
cmake --toolchain=toolchain-linux.cmake -DCMAKE_INSTALL_PREFIX=/home/user/rocsolverlib ../..
make install
This is equivalent to ./install.sh --no-sparse
.
mkdir -p build/release && cd build/release
cmake --toolchain=toolchain-linux.cmake -DCMAKE_INSTALL_PREFIX=rocsolver-install -DBUILD_WITH_SPARSE=OFF ../..
make install
This is equivalent to ./install.sh --rocblas_dir /alternative/rocblas/location
.
mkdir -p build/release && cd build/release
cmake --toolchain=toolchain-linux.cmake -DCMAKE_INSTALL_PREFIX=rocsolver-install -Drocblas_DIR=/alternative/rocblas/location ../..
make install
This is equivalent to ./install.sh -g
.
mkdir -p build/debug && cd build/debug
cmake --toolchain=toolchain-linux.cmake -DCMAKE_INSTALL_PREFIX=rocsolver-install -DCMAKE_BUILD_TYPE=Debug ../..
make install
This is equivalent to ./install.sh -s
.
mkdir -p build/release && cd build/release
cmake --toolchain=toolchain-linux.cmake -DCMAKE_INSTALL_PREFIX=rocsolver-install -DBUILD_SHARED_LIBS=OFF ../..
make install
This is equivalent to ./install.sh -c
.
mkdir -p build/release && cd build/release
cmake --toolchain=toolchain-linux.cmake -DCMAKE_INSTALL_PREFIX=rocsolver-install -DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_BENCHMARKS=ON ../..
make install
This is equivalent to ./install.sh -p
.
mkdir -p build/release && cd build/release
cmake --toolchain=toolchain-linux.cmake -DCMAKE_INSTALL_PREFIX=rocsolver-install -DCPACK_SET_DESTDIR=OFF -DCPACK_PACKAGING_INSTALL_PREFIX=/opt/rocm ../..
make install
make package
On an Ubuntu system, this is equivalent to ./install.sh -i --install_dir /package/install/path
.
mkdir -p build/release && cd build/release
cmake --toolchain=toolchain-linux.cmake -DCMAKE_INSTALL_PREFIX=rocsolver-install -DCPACK_SET_DESTDIR=OFF -DCPACK_PACKAGING_INSTALL_PREFIX=/package/install/path ../..
make install
make package
sudo dpkg -i rocsolver[-\_]*.deb