This is a reference implementation of P1673, "A free function linear algebra interface based on the BLAS." You can find the latest revision of P1673 at wg21.link/p1673.
- CMake >= 3.17 (earlier versions may work, but are not tested)
- C++ build environment that supports C++20
We run github's automated tests on every pull request. Automated tests use "ubuntu-latest", which presumably defaults to a fairly new GCC.
Before we started requiring concepts, MSVC 2019 16.7.0 was able to build and run tests and examples as of 2021/05/27. We will start testing on MSVC 2019 16.10 soon, which claims full support for C++20.
- Download and install googletest (GTest)
- Download and install mdspan:
- git@github.com:kokkos/mdspan.git
- Run CMake, pointing it to your googletest and mdspan install locations
- If you want to build tests, set LINALG_ENABLE_TESTS=ON
- If you want to build examples, set LINALG_ENABLE_EXAMPLES=ON
- If you have a BLAS installation, set LINALG_ENABLE_BLAS=ON. BLAS support is currently experimental.
- Build and install as usual
- If you enabled tests, use "ctest" to run them
Be sure to build mdspan and googletest in the Release configuration before installing.
The following CMake options are known to work:
- mdspan_DIR=${MDSPAN_INSTALL_DIR}\lib\cmake\mdspan (where MDSPAN_INSTALL_DIR is the path to your mdspan installation)
- GTEST_INCLUDE_DIR=${GTEST_INSTALL_DIR}\include (where GTEST_INSTALL_DIR is the path to your googletest installation)
- GTEST_LIBRARY=${GTEST_INSTALL_DIR}\lib\gtest.lib
- GTEST_MAIN_LIBRARY=${GTEST_INSTALL_DIR}\lib\gtest_main.lib
When building tests, for all CMAKE_CXX_FLAGS_* options, you might need to change "/MD" to "/MT", depending on how googletest was built.