On 8/7/24 15:47, Matt Borland via Boost wrote:
By popular demand Boost.Math has begun adding support for CUDA (NVCC and NVRTC) and SYCL. Unfortunately to use all of these platforms you can not really use std:: as CUDA has utilities (e.g.
) in cuda::std::, containers (e.g. tuple) in thrust:: and mathematical functions in the global namespace. There are also completely missing features like <limits>. To work with this we have started creating new headers that implement these features and workarounds such as: 1) limits: https://github.com/boostorg/math/blob/develop/include/boost/math/tools/numer...
2) Tuple: https://github.com/boostorg/math/blob/develop/include/boost/math/tools/tuple...
3) General configuration: https://github.com/boostorg/math/blob/develop/include/boost/math/tools/confi...
Now in the code base for example instead of using std::pair you use boost::math::pair which aliases to either thrust::pair or std::pair depending on context.
As we continue to build out this support we know we are going to create more headers for compatibility, and feature completeness. I thought these could be useful to other libraries so I asked John Maddock about adding copies of them to Boost.Config. He said that's not an unreasonable home for them, but I should consult the ML. My questions then are:
1) Would these utilities be useful to you? 2) If yes, do you think that Boost.Config is the right home for them?
I think, such utilities should be in a separate new module. Boost.Config should be lightweight as it is a dependency of virtually every Boost library, and the tools you describe seem to be fairly specialized.