Interfacing PODIO to Julia
Description
Currently in high-energy physics (HEP) there are two main languages used: C++ for numerically intensive code, where execution speed is paramount; and Python, for interactivity and ease of development (often used as ‘glue’ between high-performance code modules). Recently there has been increasing interest in Julia as an alternative/additional language for HEP. This could offer the convenience features of Python, but the optimal runtime speed of C++ (Julia in HEP Paper, Julia HEP Github).
In order to continue this investigation, this project will interface the data model library PODIO with Julia. This will allow to read existing data files into a Julia program.
PODIO
PODIO is a data-model library based on the idea of representing information as plain-old-data (PODs) instead of using a deep object-oriented model. This allows for better performance and interoperability. Data models are defined by a dedicated YAML-syntax and the corresponding code is auto-generated. So far both C++ and Python are supported.
Task ideas and expected results
The task is to create a code generator to add support for Julia as end-user language, and to carry out some basic performance checks to compare the different language interfaces.
Skills
Some prior experience with Julia would be highly desirable, but programming skills in C++ and Python should enable the candidate to learn Julia sufficiently quickly for the project.
Evaluation Task
The evaluation task comprises of manually translating a simple data model into a Julia representation. For details please contact the mentors.
If the candidate has prior experience in Julia they may submit this work as part of their evaluation.
Mentors
- Benedikt Hegner (CERN)
- Thomas Madlener (DESY)
Links
Julia
- Julia Programming Language
- Julia in HEP Github
- S&C Roundtable Meeting on Programming Languages
- HSF Julia Mini-Workshop
PODIO
HEP Software Stacks
Additional Information
- Difficulty level (low / medium / high): medium
- Duration: 175 hours
- Mentor availability: June-September