I’ve just tagged CUDAnative 3.0 and CuArrays 2.0 (will be merged shortly), with some exciting new features:
- automatic installation of CUDA and libraries using artifacts (you still need to install the drivers though)
- full support for GPU method redefinitions
- experimental support for multitasking and multithreading
The release is technically breaking, but most end-users should not be affected.
For more details: see this blog post.
@maleadt, thanks a lot for the option to use
export JULIA_CUDA_USE_BINARYBUILDER=false, we often use containers that include CUDA, having that env-var is super helpful!
This looks awesome, thanks for you work on this!
One question about something from the post
For one, the CuArrays memory allocator is not device-aware
Can you describe more what this means? I’m mainly interested in using multiple GPUs. Previously I was doing the one-Julia-process-per-GPU approach from your documentation, but if I can switch to one-Julia-thread-per-GPU that would be great. Is this new version ready for that? (Despite pretty succesfully being able to write GPU code thanks to how easy CuArrays makes it, I’m a GPU newbie and don’t really know what the “CuArrays memory allocator” is).
Not yet, because a CuArray doesn’t currently know which device (context) it is bound to, so the allocator can give you wrong arrays when returning from the memory pool. It’s high on my TODO list though, because its the one feature holding single-process multigpu back.