Project Opportunities

LLVM Compiler Enhancements

LLVM is increasingly the compiler of choice for implementing a variety of programming languages and tools. In addition to many research projects, LLVM is the basis of a variety of commercial products (it is actively used and contributed to by AMD, Apple, ARM, Facebook, Google, IBM, Intel, and more). In this project we design and prototype the implementation of a new feature that was recently added to OpenMP. OpenMP is a widely used specification that is popular for creating parallel code for deployment on many platforms, including multicore systems, shared memory systems, embedded systems, and GPUs (see

  • Please contact: Dr. Barbara Chapman and Md Abdullah Shahneous Bari (barbara.chapman at & sayket111 at

LLVM Compiler support for Fault Tolerance

Many of today’s compute clusters are large systems consisting of hundreds to thousands of compute nodes. Long-running parallel applications typically use parallel programming libraries to move data between the nodes. Since nodes may fail while a job is still active, programs must be designed so that they are able to continue despite the occurrence of faults. The most common way involves saving interim data at regular intervals (so-called checkpoints) in such a way that the code can be restarted with the most recent checkpoint after a critical failure. Since writing out data is expensive, help to optimize the use of checkpoints is valuable. The student will learn the basics of fault-tolerance and will extend an LLVM-based framework for compiler-assisted checkpointing to decide what data needs to be checkpointed.

  • Please contact: Dr. Barbara Chapman and Md Abdullah Shahneous Bari (barbara.chapman at & sayket111 at

Evaluating Performance of Alternative Python Implementations and Libraries for HPC

The goal of this project is to compare the performance of several popular Python implementations and libraries for HPC applications. Work will begin by finding a set of benchmarks representative of typical scientific applications. These benchmarks will then be evaluated using various Python tools. Possible variations include different Python implementations (e.g. CPython, Cython, PyPy), different numerical libraries (e.g. NumPy, Numba), different parallelization techniques (e.g. threading, message passing, task-based parallelism), and different paradigms (e.g. imperative, dataflow). Special attention will be paid to ease of use and performance. The outcomes of this project will be (1) a detailed description of each approach, including its usability and relative performance, and (2) a recommendation that includes the best approaches discovered.

  • Please contact: Dr. Barbara Chapman and Eric Raut (at

Evaluation of Tool Ecosystem on ARM-based High Performance Compute Cluster

The goal of this project is to explore the tool ecosystem (e.g. compilers, debuggers, profilers) that is expected on the Ookami cluster using another somewhat similar but smaller ARM processor system that will be purchased soon. You’ll use the tools to look at application (smallish scientific high performance codes, probably in mostly C/C++/Fortran) behavior and performance, how easy/useful the tools are and other things we decide on.

  • Please contact: Dr. Barbara Chapman and Tony Curtis (barbara.chapman and anthony.curtis at

Machine Learning for deblending galaxies from multiple mixture galaxies images

Research on the galaxy deblending task, i.e. obtain each single galaxy image in a cosmology image with multiple galaxies mixed with each other. Generative adversarial networks (GAN) are becoming widely used on many image-to-image translation applications, such as super resolution, de-noising, and more. In this research project, we plan to apply the modern GAN-based machine learning model to translate a multiple galaxies mixture image into a single galaxy image, with prior knowledge from physics involved. The outcome of this project can also be used to handle the general transparent object segmentation task in the field of computer vision.

  • Please contact: Dr. Yuewei Lin, Brookhaven National Lab; ywlin at

Graph convolutional neural networks for object detection

The modern deep neural network based-model has achieved great success in object detection tasks in terms of both accuracy and speed. However, such applications usually do not take the relationships between the detected objects into account. For example, in a city scenario, there is a low chance of detecting a goat, and if a goat is detected, it is probably in a posted advertisement. On the other hand, graph convolutional networks (GCN) have gained more and more attention on account of their ability to handle graph-structured data, and they are a natural choice for modeling the relationships between different objects. In this cutting-edge research project, we plan to develop an object detection model that combines CNNs and GCNs to consider independent information, context information and relationships between objects.

  • Please contact: Dr. Yuewei Lin, Brookhaven National Lab; ywlin at

Machine learning techniques in cryogenic electron microscopy (cryo-EM)

Cryo-EM is currently a widely used method for protein structure determination, which aims to determine the structure of 3D specimens from multiple 2D projections. The whole pipeline includes data simulation, particle detection/segmentation in cryo-EM images, 3D reconstruction, and etc. We have a new interdisciplinary research project in which we plan to apply modern machine/deep learning techniques to support a cryo-EM framework. There are several possible research activities related to the various areas of interest in the project that may benefit from machine learning.

  • Please contact: Dr. Yuewei Lin, Brookhaven National Lab; ywlin at

Deep Learning Techniques for Compiler Optimization

The compiler optimization space continues to grow due to the advancement of applications, increasing number of compiler optimizations, and new target architectures. Generic optimization passes in compilers cannot fully leverage newly introduced optimizations and, therefore, cannot keep up with the pace of increasing options. Machine learning techniques can help a compiler engineer overcome this problem. In this project, we will apply different deep learning techniques to various compiler back end optimizations.

  • Please contact Dr. Abid Malik, Brookhaven National Lab, amalik at