Interfacing PODIO to Julia

Description

Julia Logo

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

Julia

PODIO

HEP Software Stacks

Additional Information

Corresponding Project

Participating Organizations