Skip to content

tfalders/hipSOLVER

 
 

Repository files navigation

hipSOLVER

hipSOLVER is a LAPACK marshalling library, with multiple supported backends. It sits between the application and a 'worker' LAPACK library, marshalling inputs into the backend library and marshalling results back to the application. hipSOLVER exports an interface that does not require the client to change, regardless of the chosen backend. Currently, hipSOLVER supports rocSOLVER and cuSOLVER as backends.

Documentation

Note

The published hipSOLVER documentation is available at hipSOLVER in an organized, easy-to-read format, with search and a table of contents. The documentation source files reside in the hipSOLVER/docs folder of this repository. As with all ROCm projects, the documentation is open source. For more information, see Contribute to ROCm documentation.

How to build 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

Quickstart Build

To download the hipSOLVER source code, clone this repository with the command:

git clone https://github.com/ROCm/hipSOLVER.git

hipSOLVER requires either cuSOLVER or rocSOLVER + SuiteSparse to be installed on the system. Once these are installed, the following commands will build hipSOLVER and install to /opt/rocm:

cd hipSOLVER
./install.sh -i

Once installed, hipSOLVER can be used just like any other library with a C API. The header file will need to be included in the user code, and the hipSOLVER library will become a link-time and run-time dependency for the user application.

For more information on building and installing hipSOLVER, see the hipSOLVER install guide.

Building hipSOLVER for the NVIDIA CUDA platform

For the purpose of porting an application from NVIDIA CUDA to ROCm, it's possible to build hipSOLVER to run on NVIDIA hardware. To build the library on a NVIDIA CUDA-enabled machine, with CUDA cuSOLVER as the backend, run the following install command. The NVIDIA CUDA backend has a dependency on cuSOLVER. Consult the hipSOLVER install guide for more information.

./install.sh --cuda

Note

Running hipSOLVER on NVIDIA hardware is for development purposes only.

Using the hipSOLVER Interface

The hipSOLVER interface is compatible with the rocSOLVER and cuSOLVER-v11 APIs. Porting a CUDA application that originally calls the cuSOLVER API to an application calling the hipSOLVER API should be fairly straightforward (see porting a cuSOLVER application to hipSOLVER). For example, the hipSOLVER SGEQRF interface is

hipsolverStatus_t
hipsolverSgeqrf_bufferSize(hipsolverHandle_t handle,
                           int m,
                           int n,
                           float* A,
                           int lda,
                           int* lwork);
hipsolverStatus_t
hipsolverSgeqrf(hipsolverHandle_t handle,
                int               m,
                int               n,
                float*            A,
                int               lda,
                float*            tau,
                float*            work,
                int               lwork,
                int*              devInfo);

Supported Functionality

For a complete listing of all supported functions, see the hipSOLVER user guide and/or API documentation.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 79.9%
  • C 9.5%
  • Fortran 7.9%
  • CMake 1.2%
  • Shell 0.6%
  • Python 0.5%
  • Groovy 0.4%