llvm/Polygeist is one of the open-source repositories TopGit tracks, currently at 623 stars, written primarily in C++. C/C++ frontend for MLIR. Also features polyhedral optimizations, parallel optimizations, and more!
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
To enable compilation to cuda add -DMLIR_ENABLE_CUDA_RUNNER=1 and remove -DLLVM_TARGETS_TO_BUILD="host" from the cmake arguments. (You may need to specify CUDACXX, CUDA_PATH, and/or -DCMAKE_CUDA_COMPILER)
To enable the ROCM backend add -DMLIR_ENABLE_ROCM_RUNNER=1 and remove -DLLVM_TARGETS_TO_BUILD="host" from the cmake arguments. (You may need to specify -DHIP_CLANG_INCLUDE_PATH, and/or ROCM_PATH)
For ISL-enabled polymer, polly must be added to the LLVM_ENABLE_PROJECTS variable.
For faster compilation we recommend using -DLLVM_USE_LINKER=lld.
For faster compilation we recommend using -DPOLYGEIST_USE_LINKER=lld.
GPU backends
To enable the CUDA backend add -DPOLYGEIST_ENABLE_CUDA=1
To enable the ROCM backend add -DPOLYGEIST_ENABLE_ROCM=1
Polymer
To enable polymer, add -DPOLYGEIST_ENABLE_POLYMER=1
There are two configurations of polymer that can be built - one with Pluto and one with ISL.
Pluto
Add -DPOLYGEIST_POLYMER_ENABLE_PLUTO=1
This will cause the cmake invokation to pull and build the dependencies for polymer. To specify a custom directory for the dependencies, specify -DPOLYMER_DEP_DIR=<absolute-dir>. The dependencies will be build using the tools/polymer/build_polymer_deps.sh.
To run the polymer pluto tests, use ninja check-polymer.
ISL
Add -DPOLYGEIST_POLYMER_ENABLE_ISL=1
This requires an llvm-project build with polly enabled as a subproject.
Option 2: Using unified LLVM, MLIR, Clang, and Polygeist build
Polygeist can also be built as an external LLVM project using LLVM_EXTERNAL_PROJECTS.
ninja check-polygeist-opt runs the tests in Polygeist/test/polygeist-optninja check-cgeist runs the tests in Polygeist/tools/cgeist/Test
Citing Polygeist
If you use Polygeist, please consider citing the relevant publications:
@inproceedings{polygeistPACT,
title = {Polygeist: Raising C to Polyhedral MLIR},
author = {Moses, William S. and Chelini, Lorenzo and Zhao, Ruizhe and Zinenko, Oleksandr},
booktitle = {Proceedings of the ACM International Conference on Parallel Architectures and Compilation Techniques},
numpages = {12},
location = {Virtual Event},
series = {PACT '21},
publisher = {Association for Computing Machinery},
year = {2021},
address = {New York, NY, USA},
keywords = {Polygeist, MLIR, Polyhedral, LLVM, Compiler, C++, Pluto, Polly, OpenScop, Parallel, OpenMP, Affine, Raising, Transformation, Splitting, Automatic-Parallelization, Reduction, Polybench},
}
@inproceedings{10.1145/3572848.3577475,
author = {Moses, William S. and Ivanov, Ivan R. and Domke, Jens and Endo, Toshio and Doerfert, Johannes and Zinenko, Oleksandr},
title = {High-Performance GPU-to-CPU Transpilation and Optimization via High-Level Parallel Constructs},
year = {2023},
isbn = {9798400700156},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3572848.3577475},
doi = {10.1145/3572848.3577475},
booktitle = {Proceedings of the 28th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming},
pages = {119–134},
numpages = {16},
keywords = {MLIR, polygeist, CUDA, barrier synchronization},
location = {Montreal, QC, Canada},
series = {PPoPP '23}
}
@inproceedings{10444828,
author = {Ivanov, Ivan R. and Zinenko, Oleksandr and Domke, Jens and Endo, Toshio and Moses, William S.},
booktitle = {2024 IEEE/ACM International Symposium on Code Generation and Optimization (CGO)},
title = {Retargeting and Respecializing GPU Workloads for Performance Portability},
year = {2024},
volume = {},
issn = {},
pages = {119-132},
doi = {10.1109/CGO57630.2024.10444828},
url = {https://doi.ieeecomputersociety.org/10.1109/CGO57630.2024.10444828},
publisher = {IEEE Computer Society},
address = {Los Alamitos, CA, USA},
month = {mar}
}
TopGit's last sync did not record any GitHub topics for llvm/Polygeist. GitHub topics appear in the right sidebar of a repository page; that's the authoritative place to check.
How active is development on llvm/Polygeist?
The most recent commit recorded on llvm/Polygeist was 1.2 years ago, based on the GitHub push timestamp. The repository has 168 forks — one of the better signals of community interest.
How many stars does llvm/Polygeist have?
llvm/Polygeist has 623 GitHub stars — refresh the page for the live number, or check github.com/llvm/Polygeist. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What is llvm/Polygeist?
llvm/Polygeist (llvm/Polygeist) is a C++ project on GitHub. From the project's own README: C/C++ frontend for MLIR. Also features polyhedral optimizations, parallel optimizations, and more!
What language is llvm/Polygeist written in?
llvm/Polygeist is written primarily in C++. GitHub's language field is based on the largest share of bytes in the default branch.
Read full README in the tab above.
Curious whether Polygeist is right for you?
Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about Polygeist.