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 Graphsctree: 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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.