Skip to main content
`Ctrl`+`K`

# Library source code organization

The hipBLAS code is split into the following sections:

- The `library` directory, which contains all source code for the library

- The `clients` directory, which contains all test code and the code to build clients

- Infrastructure

## The library directory

The `library` directory includes the following subdirectories.

### library/include

Contains C98 include files for the external API. These files include Doxygen comments that document the API.

### library/src/amd_detail

Implementation of the hipBLAS interface, which is compatible with the rocBLAS APIs.

### library/src/nvidia_detail

Implementation of the hipBLAS interface, which is compatible with the cuBLAS-v2 APIs.

### library/src/include

Internal include files for converting C++ exceptions to hipBLAS statuses.

## The clients directory

The `clients` directory includes the following subdirectories.

### clients/gtest

Code for the hipblas-test client. This client is used to test hipBLAS. For more information, see Using hipBLAS clients.

### clients/benchmarks

Code for the hipblas-bench client. This client is used to benchmark hipBLAS functions. For more information, see Using hipBLAS clients.

### clients/include

Code for testing and benchmarking individual hipBLAS functions and utility code for testing.

### clients/common

Common code used by both hipblas-bench and hipblas-test.

### clients/samples

Sample code demonstrating how to call hipBLAS functions.

## Infrastructure

The following utilities support the hipBLAS infrastructure:

- CMake is used to build and package hipBLAS. There are `CMakeLists.txt` files throughout the code.

- Doxygen, Breathe, Sphinx, and ReadTheDocs generate the documentation. The following sources supply content for the documentation:

  - Doxygen comments in the include files in the `library/include` directory

  - Files in the `docs` directory

- Jenkins is used to automate continuous integration (CI) testing.

- clang-format is used to format C++ code.