Learning How to program on HPC cluster (part I)

Europe/Brussels
MERCATOR 02 (Louvain-La-Neuve)

MERCATOR 02

Louvain-La-Neuve

Place Louis Pasteur
Description

In this session, we will cover the various tool and technique that will allow you to write more efficient code and how to optimize your code.

Contents:

  • Introduction to scientific software development and deployment
  • Introduction to scripting and interpreted languages (Python, R, Octave)
  • How to speed up you code at low cost?

Prerequisite:

  • Being able to use SSH with private keys 
  • Basic usage of GNU commands (cp, ls, cd,...)

Type: Lecture/Hands-on
Target audience: Rookie
Must: This session is a must-have for anyone.

Registration
Registration
44 / 50
    • 09:30 10:15
      Introduction to scientific software development and deployment 45m

      Often, the workflow for researchers is to acquire a piece of software, and either modify it, or wrap it in scripts, or simply install it on the clusters, or all of that at the same time, on many clusters. This session will introduce to the tools that can make this whole process easier.

      Contents:

      • Programming paradigms
      • Types of languages and the choice of the language.
      • Tools for deploying software 
      • The programmer's toolkit 
      • Writing comments and elements of style

      Prerequisite:

      • Being familiar with a text editor 
      • Mastering the Linux command line and the GNU utilities (mkdir, cp, scp, etc.)

      Type: Lecture
      Target audience: Rookie programmers
      Must: This session is a nice-to-have.

      Speaker: Damien François (UCLouvain/CISM)
    • 10:30 12:00
      Introduction to scripting and interpreted languages (Python, R, Octave) 1h 30m

      Interpreted languages are often thought as less performance-oriented than compiled languages. Yet, they are often much easier to use and the time spent developing code is much lower than with compiled languages, and many tools are available to make them nearly as performant as compiled languages.

      Contents:

      • Use cases, strengths and weaknesses
      • The trilogy: Octave, R, Python
      • Compiling and linking the interpreter
      • Installing additional libraries
      • Using compiled code inside interpreted code
      • Compiling interpreted code

      Prerequisite:

      • Have a basic understanding of procedural programming (conditionals, loops, etc.) 
      • Being able to use SSH with private keys 
      • Being familiar with a text editor 
      • Mastering the Linux command line and the GNU utilities (mkdir, cp, scp, etc.)

      Type: Hands-on
      Target audience: Rookie programmers
      Must: This session is a nice-to-have.

    • 14:00 17:00
      How to speed up your code at low cost? 3h

      The choice of the compiler (many clusters have several, a.o. gcc, intel, etc.) is important, as is the choice of the compiling options. This sessions reviews the strengths and weaknesses of the compilers and their optimal use. 

      Contents:

      • The GCC Compiler and its options
      • Intel Compiler Studio
      • The different levels of code optimization
      • Using external libraries
      • Using configure and make
      • Downloading and compiling source code
      • Using linear algebra, signal processing libraries, etc.(BLAS, MKL, ACML, etc.)

      Prerequisite:

      • Being able to use SSH with private keys 
      • Being familiar with a text editor 
      • Mastering the Linux command line and the GNU utilities (mkdir, cp, scp, etc.)
      • Passive knowledge of C or Fortran

      Type: Hands-on
      Target audience: Rookie programmers
      Must: This session is a must for anyone who needs to compile software from sources.

      Speaker: Bernard Van Renterghem (UCL CISM)