Thematic CERN School of Computing - spring 2021

Europe/Zurich
Online event

Online event

Sebastian Lopienski (CERN) , Joelma Tolomeo (CERN) , Jarek Polok (CERN)
Description

The 8th Thematic CERN School of Computing (tCSC 2021) will take place on June 14-18, 2021 in an online format.

The theme of the School is "Scientific Software for Heterogeneous Architectures" - see the academic programme for more details.

The School is targeted at postgraduate (i.e. minimum of Bachelor degree or equivalent) students, engineers and scientists with a few years' experience in particle physics, in computing, or in related fields. We welcome applications from all countries and nationalities.

Applications are now closed

Due to the ongoing Covid-19 pandemic, this School is organised in an online format. Nevertheless, we aim at creating the usual rich, interactive learning experience, for which CERN School of Computing (CSC) is known since years. 

Important Dates

  • late March - applications open
  • Friday April 30 (midnight CEST) - deadline for application
  • Tuesday May 18 - you will be informed about the outcome of the selection by email
  • Monday June 14 to Friday June 18 - the school 

    

 

    • 09:00 09:30
      Opening Session 30m
      Speakers: Frederic Hemmer (CERN) , Sebastian Lopienski (CERN)
      • Word from the CERN IT Department Head 15m
        Speaker: Frederic Hemmer (CERN)
      • Introduction to CERN School of Computing 15m
        Speaker: Sebastian Lopienski (CERN)
    • 09:30 10:30
      Scientific and computing challenges in fundamental physics 1h

      In this introductory lecture we will review the big picture of modern science, with the emphasis on biggest questions and challenges in fundamental physics. Higgs physics, neutrino experiments, dark matter, dark energy, multi messenger astronomy, physics beyond the standard model, gravitational waves and other scientific wanders will be presented, connecting great theoretical ideas and modern experiments trying to test them. Computing is now established as the crucial part of any present and future experiments. We will review and discuss the biggest challenges in computing for the next decades, including traditional increase of data throughput, data volume and data complexity, but also other emerging concepts like quantum computing, machine learning and artificial intelligence.

      Speaker: Ivica Puljak (University of Split)
    • 10:30 10:50
      Coffee break 20m
    • 10:50 11:50
      Introduction to efficient computing 1h

      Technologies and Platforms - lecture 1

      • The evolution of computing hardware and what it means in practice
      • The seven dimensions of performance
      • Controlling and benchmarking your computer and software
      • Software that scales with the hardware
      • Advanced performance tuning in hardware
      Speaker: Andrzej Nowak
    • 11:50 12:20
      Self-presentation: 1 minute per person 30m
    • 14:00 14:30
      Self-presentation: 1 minute per person 30m
    • 14:30 14:50
      Coffee break 20m
    • 14:50 16:20
      Group assignment 1 1h 30m
    • 09:00 10:00
      Writing parallel software 1h

      Parallel and Optimised Scientific Software - lecture 1

      • Amdahl's and Gustafson's laws
      • Asynchronous execution
      • Finding concurrency, task vs. data parallelism
      • Using threading in C++ and Python, comparison with multi-process
      • Resource protection and thread safety
      • Locks, thread local storage, atomic operations
      Speaker: Danilo Piparo (CERN)
    • 10:00 11:00
      Modern programming languages for HEP 1h

      Parallel and Optimised Scientific Software - lecture 2

      • Why Python and C++ ?
      • Recent evolutions: C++ 11/14/17
      • Modern features of C++ related to performance
      • Templating versus inheritance, pros and cons of virtual inheritance
      • Python 3, and switching from Python 2
      Speaker: Sebastien Ponce (CERN)
    • 11:00 11:20
      Coffee break 20m
    • 11:20 12:20
      Optimizing existing large codebase 1h

      Parallel and Optimised Scientific Software - lecture 3

      • Measuring performance, tools and key indicators
      • Improving memory handling
      • The nightmare of thread safety
      • Code modernization and low level optimizations
      • Data structures for efficient computation in modern C++
      Speaker: Sebastien Ponce (CERN)
    • 14:00 14:05
      School photo 5m
    • 14:05 14:25
      Parallel and optimised scientific software - exercise introduction 20m

      Optimisation of an existing, production grade large codebase

      Speaker: Sebastien Ponce (CERN)
    • 14:25 17:00
      Parallel and optimised scientific software - exercise 2h 35m

      Optimisation of an existing, production grade large codebase

      Speakers: Sebastien Ponce (CERN) , Arthur Hennequin (CNRS)
    • 19:00 20:00
      Special evening talk: Future of the Universe and of Humanity 1h
      Speaker: Ivica Puljak (University of Split)
    • 09:00 10:00
      Hardware evolution and heterogeneity 1h

      Technologies and Platforms - lecture 2

      • Accelerators, co-processors, heterogeneity
      • Memory architectures, hardware caching and NUMA
      • Compute devices: CPU, GPU, FPGA, ASIC etc.
      • The role of compilers
      Speaker: Andrzej Nowak
    • 10:00 11:00
      Practical vectorization 1h

      Parallel and Optimised Scientific Software - lecture 4

      • Measuring vectorization level
      • What to expect from vectorization
      • Preparing code for vectorization
      • Vectorizing techniques in C++: intrinsics, libraries, autovectorization
      Speaker: Sebastien Ponce (CERN)
    • 11:00 11:20
      Coffee break 20m
    • 11:20 12:20
      Scientific computing on heterogeneous architectures 1h

      Programming for Heterogeneous Architectures - lecture 1

      • Introduction to heterogeneous architectures and the performance challenge
      • From general to specialized: Hardware accelerators and applications
      • Type of workloads ideal for different accelerators
      • Trade-offs between multi-core and many-core architectures
      • Implications of heterogeneous hardware on the design and architecture of scientific software
      • Embarrassingly parallel scientific applications in HPC and CERN
      Speakers: Daniel Campora (University of Maastricht) , Dorothea vom Bruch (CPPM/CNRS)
    • 14:00 15:30
      Group assignment 2 1h 30m
    • 15:30 15:50
      Coffee break 20m
    • 15:50 16:30
      Student presentations 40m
    • 16:30 17:00
      Parallel and optimised scientific software - exercise debriefing 30m

      Optimisation of an existing, production grade large codebase

      Speaker: Sebastien Ponce (CERN)
    • 09:00 10:00
      Data-oriented design 1h

      Technologies and Platforms - lecture 3

      • Hardware vectorization in detail – theory vs. practice
      • Software design for vectorization and smooth data flow
      • How can compilers and other tools help?
      Speaker: Andrzej Nowak
    • 10:00 11:00
      Programming for GPUs 1h

      Programming for Heterogeneous Architectures - lecture 2

      • From SIMD to SPMD, a programming model transition
      • Thread and memory organization
      • Basic building blocks of a GPU program
      • Debugging and profiling a GPU application
      Speakers: Daniel Campora (University of Maastricht) , Dorothea vom Bruch (CPPM/CNRS)
    • 11:00 11:20
      Coffee break 20m
    • 11:20 12:20
      Parallel cross-architecture programming 1h

      Programming for Heterogeneous Architectures - lecture 3

      • Data locality, coalesced memory accesses, tiled data processing
      • Control flow, synchronization, atomics
      • Other standards: SYCL, HIP, OpenCL
      • Middleware libraries and cross-architecture compatibility
      Speakers: Daniel Campora (University of Maastricht) , Dorothea vom Bruch (CPPM/CNRS)
    • 14:00 14:20
      Programming for heterogeneous architectures - exercise introduction 20m
      Speakers: Daniel Campora (University of Maastricht) , Dorothea vom Bruch (CPPM/CNRS)
    • 14:20 17:00
      Programming for heterogeneous architectures - exercise 2h 40m
      Speakers: Daniel Campora (University of Maastricht) , Dorothea vom Bruch (CPPM/CNRS)
    • 09:00 10:30
      Group assignment: Programming for heterogeneous architectures 1h 30m
    • 10:30 10:50
      Coffee break 20m
    • 10:50 11:50
      Design patterns and best practices 1h

      Programming for Heterogeneous Architectures - lecture 4

      • GPU streams, pipelined memory transfers
      • Good practices: single precision, branchless, avoid register spilling, convert the problem
      • Reusable parallel design patterns with real-life applications
      • Under the hood: Warps, masked execution, floating point rounding
      Speakers: Daniel Campora (University of Maastricht) , Dorothea vom Bruch (CPPM/CNRS)
    • 11:50 12:20
      Programming for heterogeneous architectures - exercise debriefing 30m
      Speakers: Daniel Campora (University of Maastricht) , Dorothea vom Bruch (CPPM/CNRS)
    • 14:00 15:00
      Summary and future technologies overview 1h

      Technologies and Platforms - lecture 4

      • Teaching program summary and wrap-up
      • Next-generation memory technologies and interconnect
      • Future computing evolution
      Speaker: Andrzej Nowak
    • 15:00 15:30
      Coffee break 30m
    • 15:40 16:20
      Exam 40m
    • 16:40 17:00
      Closing Session 20m
      Speaker: Sebastian Lopienski (CERN)