# Julia for HPC: CSC/ENCCS collab
*Location*
- Online (Zoom)
*Schedule*
- Onboarding: 2023-10-09 for 1-2 hours
- Training: 2023-10-10 to 2023-10-13
- Sweden: 9:30-11:30 CEST, 12:30-14:30 CEST
- Finland: 10:30-12:30 EEST, 13:30-15:30 EEST
- October has lower probability for LUMI to be on maintainence break than September. Thanks for Heidi Reiman for figuring this out!
*Lecturers and support*
- Thor Wikfeldt (ENCCS)
- Jaan Tollander de Balsch (CSC)
- Yonglei Wang (ENCCS)
- Zoom host: Thor, Yonglei
*Participants*
- Sweden: 20
- Finland: 20
- Outside: 10
*Tools*
- LUMI : HPC cluster (Leonardo as backup)
- LUMI OOD : Jupyter notebook for Julia for coding and demoing (if available)
- GitHub : Training material
- Zoom : Streaming video
- HedgeDoc (https://siili.rahtiapp.fi/) : Collaborative note taking
- Excalidraw (https://excalidraw.com/) : Collaborative whiteboard and scetching
*Funding*
- EURO CC TASK 2
*Training material and content*
- https://enccs.github.io/julia-for-hpc/
- https://github.com/enccs/julia-for-hpc
- https://docs.csc.fi/apps/julia/
- https://docs.csc.fi/support/tutorials/julia/
*Notes*
- https://hackmd.io/@enccs/rk64gg3Zh
- https://wiki.eduuni.fi/calendar/spacecalendar.action?spaceKey=CSCLUSTLO
- https://www.csc.fi/asiakaskoulutus
- https://enccs.se/events/10-2023-julia-for-hpc/
*Checklist*
- [ ] Create registration form and add people the LUMI project (ENCCS)
- [ ] Install and test software for the course material
- [ ] Reserve a video conference room
- [ ] Test programming exercises on LUMI
- [ ] Test AV-tech and zoom for online presentation
- [ ] Good microphone
- [ ] Good webcam
- [ ] Prepare backups if there are problem with LUMI
- [ ] Test HedgeDoc
- [ ] Populate HedgeDoc with standard info
- [ ] Prepare post-workshop survey
- [ ] Communicate with accepted participants - installation instructions and LUMI accounts
- [ ] Explore whether we could use Leonardo as backup - are guest accounts now possible?
### Meeting 18 Sep 2023
Command Line (CL):
```
mkdir julia
cd julia
module use /appl/local/csc/modulefiles
module load julia
module load julia-amdgpu
julia
```
Julia:
```
using MPI
using AMDGPU
MPI.install_mpiexecjl()
```
then:
`exit()`
CL:
```
touch Project.toml
vi Project.toml
```
```
pwd
julia --project=/path/to/Project.toml or in my case julia --project=/users/andriiev/julia/Project.toml
```
Julia:
```
using Pkg
Pkg.instantiate()
```
- explore using VSCode with remote connection
- but also fine to just use an editor on LUMI and VSCode for all local work
- Dagger.jl
- reserves one core per node for scheduling
- we need an episode on this!
- who teaches what
- day 1 - julia-intro
- Special features: Jaan
- syntax: Yonglei
- developing in Julia: Thor
- motivation: Thor
- day 2 - julia-HPC
- motivation: Thor
- writing performant Julia: Yonglei
- multithreading: Jaan
- day 3
- distributed computing: Anastasiia
- message passing: Thor
- day 4
- running on a cluster: Jaan
- GPU programming: Thor
- summary: ?
- new episodes:
- dagger (day 3): Jaan
- interfacing to C/Fortran/Python: Yonglei and Jaan
- helpers / hedgeDoc answerers:
- Thor all days
- Yonglei all days
- Jaan all days
- we will record workshop
### Meeting 29 May 2023
Agenda
- CSC LUST calendar: https://wiki.eduuni.fi/display/CSCLUSTLO/calendars
- CSC training calendar: https://www.csc.fi/asiakaskoulutus
- Thor didn't manage to get it to work on LUMI following Jaan's protocol
- how to use rocBLAS, rocFFT etc?
- finalising dates
- 11-15/9 bad for ENCCS due to RISE event
- 19-22nd possible?
- 9:30-11:30 CEST, 12:30-14:30 CEST
- 10:30-12:30 EEST, 13:30-15:30 EEST
- **A LUMI service break is currently planned to the second half of August**. The schedule might still change, though (as nothing is certain as long as the hardware hasn't been shipped).
- We should have a backup plan in case of LUMI is not available on the course dates. In Sweden there is a KTH machine (Dardel?) that is similar to LUMI, could we think of it as a backup?
- possible to run interactively on compute node?
- Thor has problems with https://github.com/Lumi-supercomputer/utility-tools
- `srun --account=project_462000007 --partition=small --nodes=1 --cpus-per-task=1 --mem-per-cpu=1750 --time=00:15:00 --pty bash`
- lesson material
- `depends_on("PrgEnv-gnu-amd", "gcc/11", "rocm/5.2")`
- `setenv("JULIA_AMDGPU_DISABLE_ARTIFACTS", "1")`
- splitting out intro part
- first 4 episodes go into "Introduction to Julia"
- on day before the workshop we should have a LUMI onboarding session, 1-2 hours
- practicalities
- ENCCS runs registration, communications with participants etc
- ENCCS and CSC have web pages
- both do dissemination
- 20 from SE, 20 FI, 10 outside
- https://docs.lumi-supercomputer.eu/runjobs/scheduled-jobs/julia/
- consider using Jupyter if Open on Demand is ready in time
- but could also use https://github.com/Lumi-supercomputer/utility-tools if we really want Jupyter
- https://docs.lumi-supercomputer.eu/software/installing/easybuild/
---
### Meeting 6 April 2023
Notes:
- use Distributed.jl for multi-node - show one example at least
- benchmark latency, compare with MPI.jl
- use pingpong example?
- inspiration from MPI benchmark suite for C?
- is it possible to run these lessons in Jupyter Lab via Binder from the lesson website?
- wrapper in Julia to set MPI backend
- Preferences.jl
- MPIPreferences.jl
- we use LUMI during the workshop
- test GPU-aware MPI! include in lesson
- AMDGPU.jl has test suite, run it
- thoroughly check AMDGPU.jl examples
- from AMDGPU.jl README: *Julia 1.7, 1.9, and above. Julia 1.8 is not supported and should not be used with AMDGPU.jl, as Julia 1.8 cannot properly handle the code generated by AMDGPU.jl.*
d settings are in settings.sh Here you can set the timeouts, toggle if ssh to compute nodes is enabled and change the nam
- Anastasiia to test material on LUMI
- need to automate adding users via puhuri
- should lessons be converted to jupyter notebooks?
- many advantages to VS-Code with Julia extension, so don't drop it completely
- creating programs in VS is advanced in comparison to run Jupyter notebook in prepared environment, thus .ipynb provides inclusivity and increasing community.
- CSC to consider getting involved in Julia-for-HPDA lesson development
- installing Julia yourself on cluster can have issues: e.g. Plots.jl installs ~10k files
- mention this in the lesson and point to work-arounds
- centralised location vs other
- JULIA_DEPOT_PATH
- add to Profiling section, perhaps include section after parallelisation episodes to show how to profile parallel code
- include episode to interfacing to C/C++, Fortran, Python (issue #9)
- e.g. matplotlib example
- perhaps as an extra episode
- have core material, for new users
- have a route through material for more experienced users, skipping intro episodes
- figure out if ClusterManagers.jl works with multi-node
- possibly some issue with inter-node communication
- when workshop?
- September, maybe ~~4-8th~~ or 11-15th?
- CodeRefinery 19-21 and 26-29
- BioExcel 11-15th, but maybe not much overlap (summer school)
- 9:30-11:30 CEST, 12:30-14:30 CEST
- 10:30-12:30 EEST, 13:30-15:30 EEST
- 20 participants from SE, 20 from FI
- who teaches?
- Thor, Jaan, maybe others
- helpers from CSC and ENCCS, and NAISS?
- make it into a CASTIEL Twinning/Collaboration
- event pages on both ENCCS and CSC
- registration via prace-indico
- use high max-number to balance number of participants from SE and FI
- can we charge for it??
- money can not go into NCC project
- we keep workshop free
- use https://hedgedoc.org/ for workshop, hosted by CSC Rahti
- https://siili.rahtiapp.fi/
- GitHub: @jaantollander