Skip to main content

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}
}

Metadata

Release files for code-generation-toolkit 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for code-generation-toolkit 0.2.2
File Size Uploaded Provenance Actions
code_generation_toolkit-0.2.2.tar.gz 70.6 kB Without provenance Details for code_generation_toolkit-0.2.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for code-generation-toolkit 0.2.2
File Interpreter ABI Platform Actions
code_generation_toolkit-0.2.2-py3-none-any.whl Python 3 none any Details for code_generation_toolkit-0.2.2-py3-none-any.whl

Total release size: 132.2 kB

Release files / code_generation_toolkit-0.2.2.tar.gz

Download URL code_generation_toolkit-0.2.2.tar.gz
Size 70.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d9276da693897116b96c20919ace51ae6216535e547309f20b46371dd15a2b4d
BLAKE2b-256 checksum
How to use checksums
a5c33c2c052288f9045051ad895684f2b727c58d269fc1f5314f42d4f761a637
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.12

Release files / code_generation_toolkit-0.2.2-py3-none-any.whl

Download URL code_generation_toolkit-0.2.2-py3-none-any.whl
Size 61.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
33f1c47bb970de22121c76ca143d6d64aa2c7578fbcbaf0f86eca615633297fb
BLAKE2b-256 checksum
How to use checksums
032624efe4d7a0f87ad721aedf5947bdb97a1d8fb7959bd1bba4d24cdc8357b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.12

Security for code-generation-toolkit 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page