Today's computers are all Multicores. With parallelization techniques, one can convert sequential code into multi-threaded or vectorized code to simultaneously use multiple processors' power in a modern shared-memory Architecture.
Our Goal:
Our objective with the iCetus tool is to engage users in the optimization process, tailoring their involvement to their preferences and expertise. iCetus facilitates the application of automated parallelization, manual optimizations, and LLM-suggested optimizations. The effectiveness and correctness of these optimizations can be confirmed using the CaRV method and tool.
Utilizing default or customized parallelization options enables running Cetus on the entire codebase, ensuring that parallelization is applied across the entire application. This approach also provides detailed insights into how the compiler analyzes and transforms the code, and the impact of these techniques on the overall codebase.
On the other hand, the CaRV tool is particularly advantageous for targeted optimization efforts focused on specific code sections. It is recommended when particular segments of the code require optimization, allowing for optimization and rapid validation of these segments independently of the rest of the code. This targeted approach helps to quickly iterate and refine optimizations in critical areas, ensuring optimal performance.
iCetus can be used for self-paced learning of different
parallelization techniques.
Integrated Tools and Techniques in iCetus:
Cetus, the Compiler Engine
The underneath compiler infrastructure used in this project is Cetus. Cetus is a source-to-source compiler research infrastructure supported by the National Science Foundation (NSF). Cetus assists domain experts and researchers in efficiently parallelizing their existing C/C++ applications using OpenMP parallel programming model. It represents one of several software infrastructures that support research and development of program analysis, optimization, and translation techniques.
CaRV, Accelerating Program Optimization through Capture, Replay, and Validate
The CaRV tool enables users to experiment quickly with large applications, comparing individual program sections before and after optimizations in terms of efficiency and accuracy. Using language-level checkpointing techniques, CaRV captures the necessary data for replaying the experimental section as a separate execution unit after the code optimization and validating the optimization against the original program. The tool reduces the amount of time and resources spent on experimentation with long-running programs, making program optimization more efficient and cost-effective.
GPT (Generative Pre-trained Transformer)
Large Language Models (LLMs), such as GPT-4, have shown considerable proficiency in offering optimization suggestions to users. To leverage the capabilities of LLMs in providing actionable optimization advice at various stages of the development process, we have integrated GPT-4 into the iCetus project.