Skip to main content

CG-Kit: Code Generation tool-Kit for algorithmic and performance portability

Project description

CG-Kit: Code Generation tool-Kit for algorithmic and performance portability

The development of CG-Kit addresses the shifting landscape of high-performance computing (HPC) platforms and the algorithmic complexities of large-scale scientific applications. The key challenges that CG-Kit aims to solve include handling a large code base in Fortran and/or C/C++, subdivision of code into large numbers of units supporting a wide range of physics and numerical methods, different parallelization techniques for distributed and shared memory systems and accelerator devices, and heterogeneity of computing platforms requiring coexisting variants of parallel algorithms. CG-Kit tackles the challenges by providing users with the ability to express their desired control flow and computation-to-resource map in the form a pseudocode-like recipe. It consists of standalone tools that can be combined into highly specific and effective portability and maintainability toolchains.

Algorithmic variants are different realizations of numerical algorithms that lead to the same solution outcome but differ in the details of algorithm design and/or the implementation of how the solution is obtained. The need for variants arises from differences in hardware architecture, and maintaining all variants explicitly is challenging. CG-Kit introduces a feasible way of handling variants and thereby achieves algorithmic portability, where algorithms are adapted to hardware platforms.

Tools

  • cflow: Control Flow Graphs
  • ctree: Source Code Trees

Install

Install the latest version of CG-Kit:

python -m pip install code-generation-toolkit

License

Released under the GNU General Public License v3.0.

Citation

Paper on arxiv:

@Article{RudiLeeChadhaEtAl24,
  title={{CG}-{K}it: Code Generation Toolkit for Performant and Maintainable
         Variants of Source Code Applied to {F}lash-{X} Hydrodynamics
         Simulations},
  author={Rudi, Johann and Lee, Youngjun and Chadha, Aidan H and Wahib, Mohamed
          and Weide, Klaus and O'Neal, Jared P and Dubey, Anshu},
  year={2024},
  note={arXiv preprint arXiv:2401.03378}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

code_generation_toolkit-0.2.2.tar.gz (70.6 kB view details)

Uploaded Source

Built Distribution

code_generation_toolkit-0.2.2-py3-none-any.whl (61.6 kB view details)

Uploaded Python 3

File details

Details for the file code_generation_toolkit-0.2.2.tar.gz.

File metadata

File hashes

Hashes for code_generation_toolkit-0.2.2.tar.gz
Algorithm Hash digest
SHA256 d9276da693897116b96c20919ace51ae6216535e547309f20b46371dd15a2b4d
MD5 e87d01e226900015389e04dc669e9161
BLAKE2b-256 a5c33c2c052288f9045051ad895684f2b727c58d269fc1f5314f42d4f761a637

See more details on using hashes here.

File details

Details for the file code_generation_toolkit-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for code_generation_toolkit-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 33f1c47bb970de22121c76ca143d6d64aa2c7578fbcbaf0f86eca615633297fb
MD5 35540695762c065a26700f35bdc9fcd2
BLAKE2b-256 032624efe4d7a0f87ad721aedf5947bdb97a1d8fb7959bd1bba4d24cdc8357b1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page