arrow
Return

Generating Coupled Cluster Code for Modern Distributed-Memory Tensor Software

delete2025-07-18
delete0
delete
OA
AI
J
Jan Brandejs *
J
Johann Valentin Pototschnig
T
Trond Saue
DOI:10.1021/acs.jctc.5c00219delete
deleteOriginal
deleteOriginal request for help
deleteShare
deleteSave
Abstract

Abstract

En 中文
Using GPU-based HPC platforms efficiently for coupled cluster computations is a challenge due to heterogeneous hardware structures. The constant need to adapt software to these structures and the required man-hours makes the systematization of high-performance code development desirable, even more so for higher-order coupled cluster. This is generally achieved by introducing a high-level representation of the problem, which is then translated into low-level instructions for the hardware using a compiler/translator component. Designing such software comes with another challenge: Allowing efficient implementation by capturing key symmetries of tensors while retaining abstraction from the hardware. We review ways to address these two challenges while presenting the design decisions that led us to the development of a general-order coupled cluster code generator. The systematically produced code shows excellent weak scaling behavior, running on up to 1200 GPUs using the distributed memory tensor library ExaTENSOR. We present an open-source modular tensor framework ″tenpi″ for coupled cluster code development with diagrammatic derivation, visualization module, symbolic algebra, intermediate optimization, and support for multiple tensor backends. Tenpi brings higher-order CC functionality to the massively parallel ExaCorr module of the DIRAC code for relativistic molecular calculations.
Keywords:
GPU computing
coupled cluster
high-performance computing
tensor algebra
code generation

Journal

Journal of Chemical Theory and Computation cover
Journal of Chemical Theory and Computation
IF:
5.5
Papers:
1.1W
Citations:
5.4W

Organization

U
umr 5626 cnrs - université de toulouse
Scholars:
3
Papers: 1
Citations: 0