Learning How to program on HPC cluster (part I: Scientific software, interpreted languages, compilers, (c)make)

Europe/Brussels
SUD05 (Louvain-La-Neuve)

SUD05

Louvain-La-Neuve

Place Croix du Sud 2, 1348 Louvain-la-Neuve Belgium
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
46 / 50
    • 09:30 10:45
      Introduction to scientific software development and deployment 1h 15m

      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)
    • 11:00 12:30
      Introduction to scripting and interpreted languages (Python, R, Octave, Julia) 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.

      Speaker: Damien François (UCLouvain/CISM)
    • 13:30 15:00
      Make/CMake 1h 30m

      Learn about automating the compiling of your code, linking libraries and handling code projects consisting of several files.

      Content:
      - Writing a minimal makefile for small projects
      - Understanding more advanced makefile to compile a software yourself
      - Automate the writing of makefiles through CMake for medium to large projects
      - Using CMake to handle librairies, environment variables, and parametrize your code at compile-time

      Prerequisite:
      - Basic knowledge about compilers
      - Basic knowledge about compiled languages
      - Being familiar with Linux
      - Being familiar with a text editor

      Target audience: Anyone needing to compile code themselves.

      Speaker: Nicolas Potvin (ULB département informatique)
    • 15:15 16:30
      How to speed up your code at low cost? 1h 15m

      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)