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)