Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
GCC, even 13.1.0, needs TBB in order for
<execution>
features to compile. Thus, we added aLINALG_ENABLE_TBB
CMake option, and documented the option in README.md. We've tested the option using a local TBB from-source build from their main branch, with GCC 13.1.0. (You may need to set the CMake optionTBB_STRICT=OFF
, to disable warnings as errors in TBB.)Previously, stdBLAS was using the
MDSPAN_EXAMPLES_USE_EXECUTION_POLICIES
macro to protect use ofstd::execution
features in examples. We added a new macroLINALG_HAS_EXECUTION
(conditionally defined in macros.hpp) to indicate thatstd::execution
features can be used, and replaced all instances ofMDSPAN_EXAMPLES_USE_EXECUTION_POLICIES
withLINALG_HAS_EXECUTION
.While doing this, we noticed that macros.hpp was not including the CMake-generated header file
linalg_config.h
, even thoughlinalg_config.h
has a nonzero number of macro definitions in it. Thus, we made sure that macros.hpp includeslinalg_config.h
, so that macros.hpp (and thereby all stdBLAS headers) can pick up CMake options. (Otherwise, CMake options aren't very useful!)Requiring a CMake-generated header file effectively makes stdBLAS no longer a header-only library. We consider this reasonable, especially since many implementations in practice would want to link against a binary-only BLAS library. The only other option would be to require GCC users to use TBB. However, the TBB repository doesn't seem to have software releases past 2021, and it's not clear whether the main branch can be considered stable. Thus, we think conditionally disabling
<execution>
features if using GCC and TBB is not available is reasonable.These changes were copied over from PR #254 (thanks to @amklinv-nnl for implementing them!). This PR supersedes PR #254.