[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

Thank you very much for your interest.

What kind of scientific computing work are you doing? Which languages are you using? Have you used Julia before?
Why are you interested in this workshop? Is there a particular thing you would like to learn?