We're right in the middle of Nvidia's GPU Technology Conference, GTC, and I recently learned about something amazing: the RAPIDS software suite. RAPIDS is a set of GPU-accelerated Python libraries including CuPy, cuML, cuDF, Dask, and cuGraph, meant to replace the popular data science libraries Numpy, Scikit-Learn, Pandas, and Matplotlib. The RAPIDS libraries are mostly drop-in replacements, and support many of their competition's core function. RAPIDS is revolutionary because it uses Apache Arrow to limit the number of transfers between system and GPU memory, which is one of the primary weaknesses of GPU-acceleration due to the latency induced by the PCI-e bus.
I worked through some tutorials, and witnessed between 4x and 10,000x speedups on various tasks involving a million to a billion data points versus identical CPU-only operations. I already had experience using CuPy, but with a mere ten thousand data points I wasn't anywhere near parity with CPU code. What I didn't know is that with cuDF or Dask, you can mix datatypes and even process strings! Turing SMs are capable of processing INT32 at the same time as float32, and even some float64 with a massive performance hit if it must be done. This lets them take full advantage of RAPIDS mixed datatypes. RAPIDS even allows you to do quick and efficient K-means clustering as well as DBSCAN depending on whether or not you know how many clusters your data should fit into. Network topology problems? RAPIDS can chew 'em up and spit 'em out like nothing. the same underlying CUDA primitives can even be used to accelerate databases with BlazingSQL. You really can breath life into old hardware with only a GPU!
0 Comments
Leave a Reply. |
DanielI'm a software engineer, volunteer IT support, amateur blogger, casual gamer, and tech enthusiast. I also love cars and the great outdoors. Archives
May 2021
Categories |