本文描述了如何將 OpenMP 迴圈指令與 Zig 編譯器整合在一起。
首先,作者討論了在 Zig 中添加 OpenMP 指令的方法,包括對 Zig 編譯器的詞法分析和語法分析的修改。作者採用了一種預處理器方法,在編譯過程中替換 OpenMP 構造。
接下來,作者探討了如何生成代碼以調用 LLVM 的 OpenMP 運行時庫。對於並行區域,作者使用函數外包的方法,並處理了共享、首次私有和減少變量。對於工作共享迴圈,作者利用 LLVM 的 OpenMP API 中的 _kmpc_for_static* 和 _kmpc_dispatch* 函數族。
最後,作者評估了 Zig 中 OpenMP 的性能,使用了 NASA 的 NAS 並行基準測試套件。結果表明,Zig 的性能與 Fortran 和 C 的參考實現相當,有時甚至更好。
總的來說,本文展示了將 OpenMP 集成到 Zig 中的方法,並證明 Zig 在 HPC 工作負載中具有良好的性能潛力。
In un'altra lingua
dal contenuto originale
arxiv.org
Approfondimenti chiave tratti da
by David Kacs, ... alle arxiv.org 10-01-2024
https://arxiv.org/pdf/2409.20148.pdfDomande più approfondite