Turns out, the #AMD #HIP ecosystem is less mature than the #NVIDIA #CUDA one it emulates (unsurprising, giving how much more recent it is), and has *obviously* been tested much less in more exotic hardware configurations and with the wide variety of software and developers the CUDA libraries have had interact with.
In the few days in which I've had the opportunity to play with it, I've already discovered two issues with it:
So, one of the reasons why we could implement the #HIP backend easily in #GPUSPH is that #AMD provides #ROCm drop-in replacement for much of the #NVIDIA #CUDA libraries, including #rocThrust, which (as I mentioned in the other thread) is a fork of #Thrust with a #HIP/#ROCm backend.
This is good as it reduces porting effort, *but* it also means you have to trust the quality of the provided implementation.
#thrust #rocthrust #CUDA #nvidia #ROCm #amd #GPUSPH #hip
The CA model is something of a weird beast. It's actually (the descendant of) my first work done converting an existing C++ code base to #CUDA. It also sports some support for multi-GPU that was developed by a #PhD student of ours when NVIDIA didn't have much support for that in the first place (andof course, by the time this student finished their work, NVIDIA released CUDA 4 which obsoleted most of it.)
Anyway, as I mentioned recently, I have a new workstation that finally allows me to test our code using all three backends (#CUDA, #ROCm/#HIP and #CPU w/ #OpeMP) thanks to having an #AMD #Ryzen processor with an integrated #GPU in addition to a discrete #NVIDIA GPU.
Of course the iGPU is massively underpowered compared to the high-end dGPU workhorse, but I would expect to outperform the CPU on most workloads.
And this is where things get interesting.
#nvidia #gpu #ryzen #amd #opemp #cpu #hip #ROCm #CUDA
So obviously I took the opportunity to install both #CUDA and #HIP/#ROCm and make sure our software still built and ran correctly.
And honestly, it's unpleasant that in 2023 you still have to do some hoop jumping for either platform.
With CUDA, the issue is always making sure that you have a supported gcc version.
With ROCm, it's easy to trip on unsupported/untested hardware to find the right combination of env vars and define to make it go.
Corporate #FLOSS at its worst: #NVIDIA controls the #Thrust library and its #CUDA, #OpenMP and #TBB backend. #AMD provides rocThrust, that is just Thrust with the CUDA part stripped an a new backend for #ROCm / #HIP. Nobody* is working on a backend for #SYCL
#Intel provides its own #oneAPI alternative as #oneDPL, which is NOT a drop-in replacement.
This is why we can't have nice things.
*there's a dead project here
https://github.com/wdmapp/syclthrust
#onedpl #oneAPI #intel #sycl #hip #ROCm #amd #tbb #OpenMP #CUDA #thrust #nvidia #floss
The most important is definitely our dependency on #Thrust in a couple of places, but the extensive use of constant and shared memory is also a problem, since the syntax for their use in #SYCL is very different from the one in #CUDA, which would pose a problem for our plans to keep the device source code unified across APIs.
Here's another interesting thing about #GPUSPH on #Android: currently, it uses the #CPU backend, because the only #GPU backends available in #GPUSPH are for #NVIDIA #CUDA and #AMD through #HIP. I've actually looked at adding #SYCL support too, but there are a few structural issues that currently prevent a solution as straightforward as the one used to implement CPU and HIP support.
#sycl #hip #amd #CUDA #nvidia #gpu #cpu #android #GPUSPH
Quantum Brilliance Launches Software Suite Enabling Exploration of Applications with Miniature Quantum Computers https://thequantuminsider.com/?p=2350993 #Quantum_Computing_Business #CUDA #Mark_Luo #NVIDIA #Qristal_SDK #Quantum_Brilliance #quantumdaily Insider Brief Quantum Brilliance announced the launch of its Qristal software suite, enabling R&D teams to explore integrating quantum systems in real-world applications. Developers and researchers can use Qristal, d develop and test novel quantu
#Quantum_Computing_Business #CUDA #Mark_Luo #NVIDIA #Qristal_SDK #Quantum_Brilliance #quantumdaily
How CUDA programming works #CUDA #Graphics #GPU @nVidia https://blog.adafruit.com/?p=535489
Tech demo video for the latest version of the #ArtificialLife simulator alien. It's open source and available at https://t.co/E1Un9uGxBc. #CUDA https://twitter.com/chrx_h/status/1401214114697990149/video/1
Last week I attended a course on #GPU computing. Specifically for #CUDA devices and its API. Here are the recorded lectures:
https://invidious.site/playlist?list=PL6jMHLEmPVLxMm_e4Vwd6-5HUOpDpYaGQ&ckattempt=1
And the course material:
https://git.cs.umu.se/mirkom/gpu_course/-/tree/fall2020
It covers different levels, with hands on exercises in #C.