Skip to content

Commit 6a50fd8

Browse files
perematovvolklhegner
authored
Julia-bindings proposal (#1340)
* Draft version of the Julia-bindings proposal * Spelling * added reference to LLVM * more links * Update _gsocorgs/2023/cea-irfu.md Co-authored-by: Valentin Volkl <valentin.volkl@cern.ch> * Update _gsocprojects/2023/project_HSF.md Co-authored-by: Valentin Volkl <valentin.volkl@cern.ch> * Renamed as suggested * Changed the experience required * fix typo --------- Co-authored-by: Valentin Volkl <valentin.volkl@cern.ch> Co-authored-by: hegner <benedikt.hegner@cern.ch>
1 parent 99df2e3 commit 6a50fd8

File tree

4 files changed

+67
-0
lines changed

4 files changed

+67
-0
lines changed

_gsocorgs/2023/cea-irfu.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
title: "CEA-IRFU"
3+
author: "Pere Mato"
4+
layout: default
5+
organization:
6+
logo: CEA-logo.png
7+
description: |
8+
The [IRFU](https://irfu.cea.fr), Institute for Research on the fundamental laws of the universe, of the Fundamental Research Division of the [CEA](https://www.cea.fr), brings together three scientific disciplines, astrophysics, nuclear physics and particle physics, as well as all the associated technological expertise.
9+
---
10+
11+
{% include gsoc_proposal.ext %}

_gsocprojects/2023/project_HSF.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
project: HSF
3+
title: HSF
4+
layout: default
5+
logo: hsf_logo_angled.png
6+
description: |
7+
The HEP Software Foundation encourages cooperation and common development of software in High Energy Physics. The HSF hosts a number of software projects where developers are working to solve current problems in particle physics.
8+
---
9+
10+
{% include gsoc_project.ext %}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
project: HSF
3+
title: Julia interoperating with HEP C++ libraries
4+
layout: gsoc_proposal
5+
year: 2023
6+
difficulty: high
7+
duration: 350
8+
mentor_avail: May-October
9+
organization:
10+
- CERN
11+
- CEA-IRFU
12+
---
13+
14+
## Description
15+
The [Julia](https://julialang.org) provides a combination of speed, interoperability, ease of use, and flexibility that makes it a very interesting choice for High Energy Physics (HEP) research. It can provide HEP researchers with the high-performance computing capabilities of C++, while still offering the ease of use of high-level languages, making it a powerful tool for HEP research. If the HEP community was adopting Julia as the main programming language, it could immediately benefit from the re-use of many existing software in the Julia ecosystem (more than 8000 packages) facilitated by the multi-dispatch feature of the language. But, the community has a number of key large software packages written in C++ that would need to interfaced to in order to provide the HEP specific functionality. The development effort invested in these packages is very large, counted on several hundred of person-years, and we need to preserve this investment.
16+
17+
For example, Geant4 is a widely used C++ library in HEP research for simulating the interaction of elementary particles in matter. Interfacing Julia with the Geant4 library can provide HEP researchers with a convenient way to use the capabilities of Geant4 in their Julia code. Similarly with ROOT, which is a widely used C++ data analysis framework in HEP research. These are in general large software projects with hundreds of C++ classes, unfortunately without a clear separation of a public API and its internal implementation, therefore any wrapping or binding solution based for example on [C++Wrap.jl](https://github.com/JuliaInterop/CxxWrap.jl) would need to be highly automated to generate the wrapper code of these many classes. Initial solutions for this automation exist (e.g. [WrapIt](https://github.com/grasph/wrapit/)) but would need to be fully tested and eventually extended to support all the C++ constructs used in these packages. The automation uses the [LLVM](https://llvm.org) compiler infrastructure to interpret the C++ code and generate the bindings.
18+
19+
The task of this project is the implementation, as automated as possible, of Julia bindings of common C++ HEP packages such as Geant4 and ROOT, in view to make available these packages within the Julia ecosystem and to evaluate their usability and performance. Quite deep knowledge of C++ would be beneficial for understanding the interfaces of these packages, however knowledge of particle physics is not required.
20+
21+
## Task ideas
22+
* Develop the Julia bindings for the Geant4 simulation toolkit and be able to illustrate its use with examples.
23+
* Develop the Julia bindings for the ROOT analysis framework simulation and examples.
24+
* Further develop and enhance the [WrapIt](https://github.com/grasph/wrapit) for the automatic generation of C++ to Julia bindings
25+
* Register a Julia package with the library with the wrappers and the binaries of the target C++ package to make the deployment as simple as possible.
26+
* Evaluate the performance and usability these interfaces, and their interoperability with other Julia packages.
27+
28+
## Expected results
29+
The expected result is a genuine Julia package that provides the functionality of either Geant4 or ROOT to the Julia ecosystem, and this is done in a very sustainable manner to follow the evolution of these packages with minimal effort by automating the wrapper generation as much as possible.
30+
31+
## Evaluation Task
32+
Interested students please contact [Pere](mailto:Pere.Mato@cern.ch) and [Philippe](mailto:philippe.gras@cern.ch) for more details and an evaluation task.
33+
34+
## Requirements
35+
* Good knowledge of C++ and some experience in Julia is required. Experience with some of the widely used HEP libraries (e.g. ROOT, Geant4) would be an advantage, as well as some experience of Julia packages such as C++Wrap.
36+
37+
## Mentors
38+
* **[Pere Mato](mailto:pere.mato@cern.ch)** CERN
39+
* [Philippe Gras](mailto:philippe.gras@cern.ch) CEA-IRFU
40+
41+
## Links
42+
* [Geant4](https://geant4.web.cern.ch)
43+
* [ROOT](https://root.cern.ch)
44+
* [Interoperability between Julia and other languages](https://github.com/JuliaInterop)
45+
* [LLVM](https://llvm.org)
46+

images/CEA-logo.png

8.74 KB
Loading

0 commit comments

Comments
 (0)