[Workshop] Efficient Scientific Computing with Julia
Efficient Scientific Computing with Julia is offered as a Workshop for OIST researched and as a Special Topic course for OIST students.
Scientific computing is a cornerstone of research, many scientific projects now involve coding in some form — may it be modeling, simulations or data analysis — and doing so in a performant and reproducible manner is a requirement to contribute effectively. This course uses Julia to teach the fundamentals of best practices for reproducible code, performance analysis, and contributing to open-source. It furthermore focuses on aspects of HPC computing necessary to analysis and study large problems — in particular GPU computing.
Participants should posses some programming experience in either Julia, Python, MATLAB or C/C++. As part of the course students will design a small project, that can lead to an open-source contribution, an implementation of scientific program, or the performance improvement thereof. While the course uses Julia the knowledge should be transferable to other languages.
Aim of the workshop
To enable students to productively use Julia for their scientific computing needs, and to contribute to open-source and open-science ecosystem. At the end students should be competent in reproducible methods and software engineering best practices.
Target audience
Participants should posses some programming experience in either Julia, Python, MATLAB or C/C++
Teacher
The teacher will be Valentin Churavy, ex-OIST PhD student and current PhD student at MIT. Valentin works on distributed heterogeneous computing with Julia.
Related Skill Pill
We are organizing Skill Pill: Julia, a Skill Pill that will cover the basics of the Julia language just before the workshop, on July 11, 12 and 16, from 10AM to 12PM. This is a good opportunity to become familiar with the language before the Workshop. Valentin will also be present for the last session. Sign up if you are interested in participating. Participation in the Skill Pill is not mandatory.
Program
The program will take place over 3 full days, from July 17 to 19, from 10AM to 5:30PM.
A large portion of the workshop will involve hands-on work directed by Valentin. More details in the next section.
Wednesday July 17 | Thursday July 18 | Friday July 19 | |
---|---|---|---|
10:00 - 12:00 | Lecture: Introduction, best practices for scientific code | Lecture: Contributing to Open Source; Julia in the scientific community | Lecture: Advanced topics, depending on Student interest |
13:00 - 15:00 | Lecture: Performance analysis and performance engineering | Lecture: GPU computing | Directed self work |
15:00 - 17:30 | Directed self work | Directed self work | Directed self work, Presentation of work and assessment |
Detailed Content
-
Lecture 1: Introduction, best practices for scientific code
-
Project structure, version-control
-
reproducibility, Jupyter
-
-
Lecture 2: Performance analysis and performance engineering
-
Benchmarking and Profiling
-
Performance characteristics of programs
-
Avoiding common performance pitfalls
-
-
Session 3: Directed self work
-
Choose a project and formulate goals
-
Research on available tools and pre-existing solutions and how to integrate them
-
-
Lecture 4: Contributing to Open Source; Julia in the scientific community
-
Examples of research projects
-
Structuring a contribution
-
-
Lecture 5: GPU computing
-
What are GPUs and why are they useful for scientific workloads
-
High-level GPU programming
-
Low-level GPU codes
-
-
Session 6: Directed self work
-
Lecture 7: Advanced topics, depending on Student interest one of:
-
Distributed programming with MPI
-
Performance analysis for GPU programming
-
Shared-memory programming
-
-
Session 8: Directed self work
-
Session 9: Directed self work + presentation of work and assessment
Special Topic
OIST PhD students that attend the workshop in full and complete of the assessment at the end will be awared a credit.
More information
- Location: C700, Computer Lab, Lab 3
- What to prepare: a laptop with
- Julia 1.1 installed
- Jupyter notebook installed
- git installed
- a GitHub account
- recommended: Visual Studio Code with the Julia extension
- Drinks: There will be free coffee and tea, bring your cup!
Thank you very much for your interest.