Accelerating Pythonic coupled cluster implementations: a comparison between CPUs and GPUs

Abstract

We scrutinize how to accelerate the bottleneck operations of Pythonic coupled cluster implementations performed on a NVIDIA Tesla V100S PCIe 32GB (rev 1a) Graphics Processing Unit (GPU). The NVIDIA Compute Unified Device Architecture (CUDA) API is interacted with via CuPy, an open-source library for Python, designed as a NumPy drop-in replacement for GPUs. The implementation uses the Cholesky linear algebra domain and is done in PyBEST, the Pythonic Black-box Electronic Structure Tool -- a fully-fledged modern electronic structure software package. Due to the limitations of Video Memory (VRAM), the GPU calculations must be performed batch-wise. Timing results of some contractions containing large tensors are presented. The CuPy implementation leads to factor 10 speed-up compared to calculations on 36 CPUs. Furthermore, we benchmark several Pythonic routines for time and memory requirements to identify the optimal choice of the tensor contraction operations available. Finally, we compare an example CCSD and pCCD-LCCSD calculation performed solely on CPUs to their CPU--GPU hybrid implementation. Our results indicate a significant speed-up (up to a factor of 16 regarding the bottleneck operations) when offloading specific contractions to the GPU using CuPy.

0

Turn this paper into a full lesson

ArcXiv compiles a staged curriculum from this paper: 8-12 lessons across beginner → advanced, synthesised section guides, visuals, flashcards, a quiz, exercises, and on-demand deep dives per section. Grounded in the abstract, never invented.

Discussion (0)

Sign in to join the discussion.

Loading comments…