Library source code organization#
The hipBLAS code is split into the following sections:
The
librarydirectory, which contains all source code for the libraryThe
clientsdirectory, which contains all test code and the code to build clientsInfrastructure
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.txtfiles 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/includedirectoryFiles in the
docsdirectory
Jenkins is used to automate continuous integration (CI) testing.
clang-format is used to format C++ code.