Skip to content

Reference Implementation for stdBLAS

License

Notifications You must be signed in to change notification settings

NavalNuclearLab/stdBLAS

 
 

Repository files navigation

P1673 reference implementation

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.

Requirements

  • CMake >= 3.17 (earlier versions may work, but are not tested)
  • C++ build environment that supports C++20

Tested compilers

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.

Brief build instructions

  1. Download and install googletest (GTest)
  2. Download and install mdspan:
  3. 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.
  4. Build and install as usual
  5. If you enabled tests, use "ctest" to run them

More detailed MSVC build instructions

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.

About

Reference Implementation for stdBLAS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 97.2%
  • CMake 2.0%
  • Other 0.8%