Advanced Programming Techniques for the Earth System Science
August 28 – September 2, 2016

Hosted by:  Gran Sasso Science Institute, L’Aquila, Italygssi


computer_clusterThe school is aimed at improving personal skills for the effective exploitation of increasingly available computer power, from personal workstations up to High Performance Computing (HPC) resources, in the field of Earth System Science. Lessons and practical sessions are intended to make it more familiar the use of parallel computing, in order to allow optimal use of numerical models and  encourage their development and personalization with new features, which is often limited by technical difficulties. Moreover,  the school will provide the tools for proper sharing and integration with the scientific community, for a better diffusion and impact of your work.

The school is primarily addressed to PhD students and post-docs, but it is open to all kinds of academic and non-academic research profiles. Highly qualified international lecturers will give an overview of current computer architectures and will provide the essentials for software development using parallel programming (e.g. MPI), next-generation processors (e.g. GPU, MIC), cloud services, Earth System Modelling Framework (ESMF), and adjoint model formulation. These programming skills are suitable for a wide range of applications, from simple modules to comprehensive Earth System models. They will also provide a vision of how IT technologies will be changing over the next few years. Participants with different levels of programming skills (from newbie to expert) in Earth Science modelling may benefit from the school. The lectures will provide the background for building on this basic knowledge and move ahead toward more advanced techniques. Morning theoretical lectures will be assisted by afternoon hands-on practical sessions on the computer, in order to allow the students to make initial simple applications of the elements just learned.

imparareWhat the school aims at is improving your personal skills, regardless of your starting point:

  • If you’re a beginner in programming, after the school you should have learned, at least:
    • recommendations on good practices (how to correctly plan a program flow, how to avoid common mistakes, how to make the best out of code versioning and commenting, etc.);
    • have a vision of what high performance computing may give you for your applications, and where/how to get HPC resources and how to effectively exploit them;
    • first steps on how to make your code working in parallel, using shared (OpenMP) and distributed (MPI) memory;
    • how to get your code ready for integration with other Earth System modules;
    • how HPC will evolve over the next few years.
  • imparare2If you’re an experienced programmer, you should improve your skills and learn new tools, including:
    • optimization of parallel applications;
    • tools for the management of large data sets;
    • consolidate your parallel programming skills, and learn how to exploit relatively new tools such as MIC and GPUs;
    • how to get your code ready for integration with other Earth System modules;
    • understand and how to develop the adjoint of your models;
    • how HPC will evolve over the next few years.

The video recording of the lectures, teaching material and source codes of the practical exercises will be made available to attendants also after the school.

A Student’s poster session is also included at the end of the first day, aimed at facilitating information exchange among students and lecturers!