174 views
owned this note
# Discussion: JuilaHEP 2023 Workshop
## Interoperation with existing software
* Examples:
* ROOT (selection of functionality: read any TH back)
* Minuit (individually wrapped)
* FastJet
* Geant4
* Pythia8 (not https://github.com/Keno/Pythia.jl)
* Sherpa?
* more?
* sometimes straight-forward (thanks to WrapIt and CxxWrap.jl), sometimes not (ROOT)
* is the lack of work on Cxx.jl an issue? not actionable.
* extenting WrapIt to work with templates
* wrap only what you need
* writing RNTuples is very important
* psychological impact: `add Geant4` feels like being at home
* auto-wrapping is possible, deploying too
## Data analysis
* writing R files (RNTuple) -> Arrow.jl is already there
* reading HEPMC3 (JuliaHEP/LHEF.jl is done)
* reading (top level) ROOT histograms
* statistical data standards (maybe HS3 as a starting point) -> wait to converge and adopt
* histogram standards (check boost-hist)
* HistFactory Model support
## Sampling from distributions
* separate meeting with Oliver
## Julia libraries for HEP (general)
* what is needed?
* LorentzVector interfaces (FourMomentumBase.jl, similar to StaticArraysBase.jl)
* PDG data
* Histograms
* plotting (Makie.jl, Plots.jl, RecipesBase.jl)
* we should provide recipes for Plots, Makie and PGFPlots?
## ML in HEP
* AD applications:
* diffable particle simulation (maybe for parameter optimization)
* maybe [Geant4](https://indico.cern.ch/event/1307331/contributions/5594500/attachments/2723273/4731860/MNovak_on_Geant4_and_DP.pdf) (stand alone implementation, source code pending)
* diffable Histograms (maybe hard, also unclear benefit right now )
* normalising flows
* [MLJ.jl](https://alan-turing-institute.github.io/MLJ.jl/dev/) is worth trying (if it has all the tools needed)
* are data file formats backends (e.g. RNTuple) available in Flux or MLJ?
* Julia's ML frameworks seem to be ready to be used in HEP
* Some worked examples/tutorials to show this
## HPC in HEP
* Which tooling is needed (more robust Julia)
* single node is fine
* multi-node seems complicated
* When we should stop to reinvent the wheel (check ClusterManagers.jl, [RemoteREPL.jl](https://github.com/c42f/RemoteREPL.jl/), need [robust_pmap](https://invenia.github.io/Parallelism.jl/dev/#Parallelism.robust_pmap-Tuple{Function,%20Vararg{Any,%20N}%20where%20N}))
* is [CUDA.jl](https://github.com/JuliaGPU/CUDA.jl)/[AMDGPU.jl](https://github.com/JuliaGPU/AMDGPU.jl)/[oneAPI.jl](https://github.com/JuliaGPU/oneAPI.jl)/[Metal.jl](https://github.com/JuliaGPU/Metal.jl) ready? -> Tutorial
* long-term support level for [KernelAbstractions.jl] (we should monitoring this)(https://github.com/JuliaGPU/KernelAbstractions.jl)
* https://github.com/google/jax/discussions/11078#discussioncomment-3051481
* training:
* make it fast in one thread, then on one node, than out of it
* writing tutorials is necessary
* distributed data analysis
* Data analysis on GPU (data transfer is a huge problem, is it?)
## Workflows in Julia
* snakemake equivalent? -> for now we are fine with this
* xyzpy equivalent?
## Documentation & training
* tutorials on the JuliaHEP website and HSF website
* JuliaHEP primer
## Feedback on the Workshop
* monthly JuliaHEP community call
* next workshop at CERN, maybe with a hackathon (at the ideasquare)