Research Engineer (Compilation/HPC)

Contract type : Fixed-term contract

Renewable contract : Yes

Level of qualifications required : Graduate degree or equivalent

Other valued qualifications : Master or PhD

Fonction : Temporary scientific engineer

Level of experience : Up to 3 years

Context

The engineer will join the INRIA CAMUS team, located at University of Strasbourg in the ICube Laboratory, on the Illkirch Campus very close to Strasbourg.

[S]he will be participating in the MICROCARD-2 European project (microcard.eu), specifically in Work Package 4 (WP4): code optimization and hardware adaptation. The supervisors are Vincent Loechner (MCF) and Stéphane Genaud (PROF) and a postdoc will also be recruited in this project. The MICROCARD-2 EuroHPC Center of Excellence follows the MICROCARD EuroHPC project that ran from April 2021 to September 2024.

Authoring research papers will be possible in collaboration with the rest of the team.

Salary: about 2450€/month (gross), depending on experience. Max duration: 30 months.

Assignment

The engineer will participate to a high-level compiler project that builds a bridge from a model representation convenient for cardiac simulation experts to an optimized parallel code using the MLIR compiler environment of LLVM.

This compiler has been developped as part of the MICROCARD(1) European project, and it exploits both specific target architecture information an properties of the scientific problem (computation patterns, resilience to approximation) to generate efficient parallel vectorized CPU and GPU codes. Efficiency was assessed both in terms of execution time and energy consumption. Our strategy is to rely on a dedicated compiler front end and on new research extending state-of-the-art code generation and runtime techniques to statically and dynamically optimize this application.

In the MICROCARD-2 project, we will specifically focus on:

  • efficient code generation for new and future HPC processors (ARM-SVE, RISC-V, EPI family of processors and accelerators, ...)
  • low-precision optimizations: some parts of the code can use lower precision computations than the standard 'double' floating-point ; the goal is to identify and automatically generate code that takes advantage of single or even half precision floating point. Another promising path is the use of fixed-point arithmetics, that needs to be implemented and tested.
  • benchmarking: conceive, maintain, and distribute benchmarks to assess performance portability of our optimizatons on our CI/CD.

Main activities

In collaboration with the local and external members of the MICROCARD project, the main activities include:

  • participating to the development of the openCARP software, our Cardiac Electrophysiology Simulator development platform (opencarp.org);
  • developing and extending the MLIR compiler front-end to generate a code targetting heterogeneous parallel architectures, using OpenMP and GPU dialects, and domain-specific properties of the code;
  • perform non-regression tests and validate our developments in collaboration with the other european partners of the project.

Skills

  • Compilation and computer architecture
  • Parallel programming (C, MPI, OpenMP), program optimization
  • High-performance and cluster computing (vectorization, GPU, energy efficiency)
  • Basic knowledge of linear algebra
  • Maintaining open source software
  • Troubleshooting, debugging, continuous integration
  • Technical documentation

Remuneration

From 2450€ gross/month according to experience