No announcement yet.

NVIDIA C++ Standard Library Now Available Via GitHub

  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Originally posted by llukas View Post
    You noticed difference that Intel MKL is binary-only library with its own API and that libcu++ implementation of C++ standard library that you can build from source yourself?
    i notice that building from source doesn't magically add support for non-novideo hardware, i.e. there's no practical difference


    • #12
      Originally posted by llukas View Post
      It seems that just by using proper C++ one is no longer locked-in to CUDA and not locked in to C-only OpenCL box?
      if you follow novideo examples, you are locked-in to cuda. to unlock yourself you have to follow
      but your standard library has to really accelerate them


      • #13
        to accelerate more than parallel extensions to standard algorithms, you have to wait for which could go in c++23


        • #14
          Could this be used with HIP on ROCm capable hardware?


          • #15
            Originally posted by trilean View Post

            But that's not a drop-in replacement standard library. What I'm talking about are low-level libraries (e.g. the C++ Standard Library or possibly gzip, zlib, ...) that are built in a way where they offload compute intensive tasks to the GPU without the application using that library having to be APU/OpenCL/... aware.
            Hi there. You need to define what you mean by "drop in".

            If you mean you can swap the DLL or .so libraries then no, it is not drop in. This is called binary compat.

            If you mean at compile time the GNU or LLVM libstdc++ is equivalent to nVidia's libstdc++ you may be correct. This is called source code compat.

            I quote from the github for the project:

            "libcu++, the NVIDIA C++ Standard Library, is the C++ Standard Library for your entire system. It provides a heterogeneous implementation of the C++ Standard Library that can be used in and between CPU and GPU code.

            If you know how to use your C++ Standard Library, then you know how to use libcu++. All you have to do is add cuda/std/ to the start of your Standard Library includes and cuda:: before any uses of std:::"

            Which is compile time thing, source code compat. If you want to be able to have a binary unaware and uncaring which libstdc++ is being dynamically linked in then that's not indicated.

            Also, nVidia has this page listing what parts of the std c++ library are actually being done on CUDA:


            We do not see stuff like vector or map or algorithm there... so IDK that it will, for example, automagically offload sorting huge vectors to a GPU.
            Last edited by hoohoo; 24 September 2020, 01:21 PM.