Program synthesis moves programming to a higher level by coding intuitions instead of algorithm details.
It also can be seen as extanding compiling with searching, which changes the way we design program optimization passes in compiler.
This project is trying to synthesis for static locality analysis. Source Code
2. Resolving Complex Software Engineering tasks with LLMs
With the advance of language models, complex software engineering tasks described in natrual languages become addressable.
This project explores LLMs' potential to generate the entire repository from its requirement and to generate patches from issue descriptions.
Conventional compilers usually optimize cache performance by reducing the memory footprint, as it has limited or no control of the data replacements in cache.
This project is trying to enable the fine-grained replacement control by program or compiler with lease cache.
A hardware prototype of lease cache and a compiler pass to assign leases for references are designed. Source code
This project builds a compiler tool that predicts the cache performance of compiler-time enumerable loop nests statically.
The tool constructs a specialized version of the loops to sampling reuse intervals and it is implemented as a LLVM analysis pass.
This technique can also be applied to parallelized loops, such as CUDA kernels and OpenMP. Source Code
This project proposes a locality model for writebacks. As persistent memory has limited write endurance, quantify writebacks from the cache can guide the optimizations for writes.
It provides a linear-time algorithm to analyze writebacks for all all cache sizes and a dynamic programming algorithm to minimize the writebacks for co-run program based on sole-run profiling.
Source Code
This project targets on different computing devices with different architectures (CPU, GPU, MIC), optimizations to improve performance of OpenCL programs are summarized.
A performance concerned code transformation (from fine-grained program to coarse-grained program) is being studied.