llvm/Polygeist — 623★ trên GitHub (C++). C/C++ frontend for MLIR. Also features polyhedral optimizations, parallel optimizations, and more!
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
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}
}
llvm/Polygeist có 623 sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/llvm/Polygeist. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
llvm/Polygeist có tag gì không?
Bản đồng bộ chưa ghi nhận topic GitHub nào cho llvm/Polygeist. GitHub topics hiển thị ở thanh bên phải trang repo — đó là nơi đáng kiểm tra nhất.
llvm/Polygeist còn đang phát triển không?
Commit gần nhất trên llvm/Polygeist là 1.2 năm trước (theo timestamp GitHub). Repo có 168 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
llvm/Polygeist là gì?
llvm/Polygeist (llvm/Polygeist) là dự án C++ trên GitHub. Theo mô tả gốc: C/C++ frontend for MLIR. Also features polyhedral optimizations, parallel optimizations, and more!
llvm/Polygeist viết bằng ngôn ngữ gì?
llvm/Polygeist chủ yếu viết bằng C++. Trường "language" của GitHub dựa trên phần lớn byte ở nhánh mặc định.
Đọc đầy đủ README ở tab phía trên.
Chưa chắc Polygeist có hợp với bạn?
Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về Polygeist.