Boost logo

Boost :

From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2024-08-07 12:57:40


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. <type_traits>) 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/numeric_limits.hpp
>
> 2) Tuple: https://github.com/boostorg/math/blob/develop/include/boost/math/tools/tuple.hpp
>
> 3) General configuration: https://github.com/boostorg/math/blob/develop/include/boost/math/tools/config.hpp#L666
>
> 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.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk