Compiler and Software Advancements

University of Alberta

This group of projects will explore enhancements in compiler, middleware and software technologies.


  • Dr James Miller, Professor, Faculty of Engineering – Electrical & Computer Engineering Dept
  • Dr Sarah Nadi, Assistant Professor, Faculty of Science – Computing Science
  • Dr Karim Ali, Assistant Professor, Faculty of Science – Computing Science
  • Dr J Nelson Amaral, Professor, Faculty of Science – Computing Science

** Title: Investigating Loop Transformations to Improve Performance of Applications in Heterogeneous High-Performance Computing Machines

Description: The next fastest High-Performance Computing machines are scheduled to be delivered by IBM and Nvidia and will rely on a combination of powerful CPUs and GPUs. The principal logic for this design choice is the performance/power design point that was selected for these machines. Traditional compiler-enabled loop transformations must be adapted to deliver performance in such environment. GPUs are very fast computing engines, but they do require that both the computation and the memory accesses be organized in a very well-structured manner that fits the organization of its hardware. The goal of this project is to revisit existing loop transformations to adapt them to this HPC infrastructure and to also develop new transformations that will be beneficial for these machines.

** Title: Usability Research

Description: Software development strategies is an ever-evolving topic, gone are the days of waterfall development which have been increasingly replaced by continuous development, integration and deployment. Product cycle time has been slashed from years (development of the entire product as a single monolithic process) to days (develop a small incremental addition or fix to the current, often incomplete, product). Within these upheavals, ticketing systems have become a central and essential mechanism for managing the workflow. These are accompanied with a switch in ideology from “build the product” to “service the customer”. Customers with issues produce tickets and the organizational push is now to service (solve) these tickets quickly and accurately.  This collaboration will focus on improving this process in a wide variety of scenarios.

Title: Variability aware analysis of C++ code

Description: The goal of this project is to help C++ developers with their variability implementation decisions. Specifically, in collaboration with IBM, we explore the IBM OMR project, which uses static polymorphism as its main variability implementation strategy. We develop tools to help OMR developers understand the variability in their code, and also help them decide about the best variability implementation strategy to use (e.g., static vs. dynamic polymorphism). In the context of this project, we are additionally exploring how we can implement a variability aware analysis of C++ code on top of Clang.

Title:  Improving the Inlining Algorithms in the IBM Just-in-Time (JIT) Compiler


Description: The current inliner in the JIT compiler of the IBM Java SDK depends on invocation and backedge heuristics to determine computationally intensive program points that are good candidates for inlining. However, in certain scenarios, inlining other program points may lead to significantly better optimizations. The goal of this project is to explore the parameters that define those subtle opportunities for inlining and develop program analysis techniques to automatically identify them.

Title: Validating the Correct Usage of Cryptography Libraries

Description: Empirical studies have shown that most Java and Android apps misuse cryptography libraries, causing devastating data breaches. Unfortunately, such libraries are designed with APIs that are hard to use, confusing to configure, and even set to use insecure default configurations. Since the insecure usage of cryptography libraries is the norm, approaches based on property inference and anomaly detection would not help detect such misuses, especially early in the development process.

Together with collaborators at TU Darmstadt and Paderborn University, we have developed CrySL, a domain-specific language that enables cryptography experts to specify the secure usage of the cryptography libraries. CrySL combines the generic concepts of call sequences and data-flow constraints with domain-specific constraints related to cryptography algorithms and their parameters. We have also implemented a compiler that translates a CrySL ruleset into precise on-demand static analyses that can automatically check a given Java/Android app for violations of the encoded rules.

For this project, we propose to expand the scope of CrySL to generate security checks that the IBM Just-in-Time (JIT) compiler can apply at runtime. The JIT checks can be mostly be generated by the CrySL compiler but augmented with values that are only known at runtime, improving the performance and precision of the CrySL analyses. Additionally, we plan to explore the possibility of generated automated code transformation that the JIT compiler (or ahead-of-time compiler) can apply for the uses of cryptography libraries that violate the encoded CrySL rules.

** Note: The “Usability Research” and “Investigating Loop Transformations to Improve Performance of Applications in Heterogeneous High-Performance Computing Machines” projects are funded entirely by IBM Canada.