Massive Parallelism with GPUs in Java
summary
Shows how Java actually moves primitive arrays to GPUs with CUDA (cudamalloc, cudamemcpy, kernels) and when to prefer CUDA-for-J or JIT offload; demonstrates a failed experiment with 50,000 threads crash on a laptop and a working path using GPU kernels. Reports microbenchmarks: 40x matrix multiply and end-to-end Spark ALS speedup from 600s→40s using two Tesla GPUs, plus practical limits (PCIe transfer, device memory, no heap objects in kernels).
AI-written summary · about
chapters (36)
- 0:00Introduction
- 0:41Disclaimers
- 1:35Topics
- 2:31Where is Java used
- 3:09Bring GPUs to Java
- 3:59Floating threads
- 5:12Rememba clever
- 6:02Use cases
- 7:26Where GPUs are being used
- 8:02AI vs Poker
- 8:48What makes a GPU good
- 9:48What type of GPU
- 10:33HPC cards
- 11:30GPU
- 12:20CPU
- 12:31Good at
- 13:08Bad at
- 16:42Things to know
- 18:30Java Code
- 18:54CUDA Code
- 20:45Random Native Method
- 21:26Example
- 23:13Namemangling
- 24:03Debug
- 24:39Simple way
- 25:32Sorting numbers
- 26:32JIT compiler
- 27:41JIT print
- 29:18Benchmarks
- 30:07Advanced
- 39:22Big Data
- 42:44Spark GPU
- 45:22Machine Running Libraries
- 45:47Challenges
- 47:27Bad C code
- 47:53GPUs in Java
related talks
51mJava on the GPU Where are we now?
47mJava and GPU … are we nearly there yet?
43mHow to make your electrons do more in Java?
50mUnder the HAT: Empowering GPU Acceleration for Java
40mJava GPGPU Enablement: Are We There Yet?
40mHow to make your electrons do more in Java
44mWrite Once, Accelerate Everywhere: GPU-Ready Java with TornadoVM
51mJava at Speed: Getting the Most Out of Modern Hardware
