Checks

During its development Rat-vcpkg needed to check for some features when defining ports for Project-Rat C++ libraries thus the appearance of the rat-vcpkg/checks subdirectory.

It is mainly for repository development purposes.

Caution

The rat-vcpkg/checks subdirectory is rather unmaintained and only serves for ponctual testing to see if anything broke after updating ports or packages.

It is not a real tests directory so to speak.

Checks for Armadillo

The Armadillo library implements LAPACK systems for LU decomposition and some checks are here to ensure their use.

Note

This repository could be enhanced in times to come to make use of SuperLU repository for more efficient LU decomposition within Armadillo.

A superlu port used to be provided but has been abandonned for now.

Checks for CUDA

The NVIDIA CUDA toolkit can get finicky at times. Some checks are here to ensure the compiled CUDA/C++ code can interact with the NVIDIA drivers installed on the systems. If not, Rat (in its MLFMM part) will not be able to use CUDA, so no GPU acceleration, which would be a shame.

The scripts checks for calls to the getDeviceCount CUDA method, required by Rat-MLFMM to start CUDA interaction. If this fails, an error code should be returned.

With some research, the user should be able to pinpoint the error message corresponding to the error code and thus take action to fix the problem. It usually boils down to updating the NVIDIA drivers on the system.

Checks for OpenBLAS single-threaded

Rat using POSIX threads, it needs OpenBLAS to be used with one single thread. This should be ensured with the vcpkg port defined by this repository. Nonetheless a check is available to ensure the OpenBLAS instance used only uses one single thread.

Some environment variable such as OPENBLAS_NUM_THREADS can also dictate the number of threads used depending on the compilation process.

Note

The base installation sequence for compiling Rat on Windows in Rat-Docs seems to use the vcpkg default OpenBLAS port, but I did not have such success when trying it on my part, so Rat-vcpkg ships its own port.