I want to get into that for CUDA. I've been using Vulkan via WGPU. But there, everything has to pass between CPU and GPU as byte arrays, when I've heard CUDA lets you maintain the same data structures. On the to-do list.
Would also def benefit from the larger selection of C++ libs, especially for GUI and graphics.
Given the main computation issue is doing the same operation on many values in a 3D array, using the GPU more would be great. And my current setup for that is clumsy.
I disagree on easier to share. Binaries work the same either way. Compiling from source on rust is generally install Rustc, and do `cargo b --release`. Compiling someone else's code in C++ is... complicated.
> when I've heard CUDA lets you maintain the same data structure
Yes, that's possible with a combination of:
* Unified address space for pointers (and C++ references are basically pointers)
* Paged virtual memory on GPUs
... however, remember that many/most data structures which make sense on the CPU may not make sense to use on a GPU. And - NVIDIA very often implements and promotes certain features because they sound good in marketing, not because they're actually that useful. Or because they let you make a super-slow program into a meh-speed program, not because you would use them in a really-fast program.
> Compiling from source on rust is generally install Rustc, and do `cargo b --release`.
Well, I guess you may have a point, but let me still make a couple more arguments.
First, installing Rust (and related libraries/tools/whatever) is not trivial for people who don't know rust, and some OS distributions only offer you an older version of rust using their distro-package-managers. It's more likely that a C++ environment is already set up on someone's machine... TBH, though, if the distro is older, that might not be a perfect fit for what you're building.
Second C++ package managers becoming more popular, e.g. Conan: https://conan.io/ ; and that helps for when your OS distro doesn't cover you.
> Compiling someone else's code in C++ is... complicated.
This has actually improved a whole lot over the past... say, decade or so!
* Unzip/untar
* Configure the build with CMake (cross-platform build system generator - almost ubiquitous these days in C++ projects): `cmake -B build_dir/`
* Assuming you have the dependencies set up - it should "just build": `cmake --build build_dir`
* Run the thing from the build directory or install it with `cmake --install build_dir`.
... and if you want to tweak package options more easily than via the command-line, you can use a TUI (ccmake) or GUI (cmake-gui).
The problems start when you're missing dependencies, or if the author didn't make their code platform-independent / multi-platform.
Would also def benefit from the larger selection of C++ libs, especially for GUI and graphics.
Given the main computation issue is doing the same operation on many values in a 3D array, using the GPU more would be great. And my current setup for that is clumsy.
I disagree on easier to share. Binaries work the same either way. Compiling from source on rust is generally install Rustc, and do `cargo b --release`. Compiling someone else's code in C++ is... complicated.