CEA
HPC Calcul haute performance
HomeComputing centersSoftware for HPCResearch and developmentCollaborations
Home / Summer Schools 2013
   


Computer Science

Summer school 2013

Programming Heterogeneous

Parallel Architectures

Cadarache, from june 24 to july 5, 2013.
Logo CEA

 

Accommodation and courses take place in a castle depending of the CEA (French Alternative Energies and Atomic Energy Commission) at Cadarache, South of France, from june 24 to july 5, 2013.

Aim:

The aim of the summer school is to give a thorough introduction of tools, langages and execution models for efficient programming of heterogeneous multicore architectures with accelerators. Three lectures will describe the existing programming levels for accelerators as well as techniques for simultaneously using multicores and accelerators within a single application, while trying to maintain performance portability. All courses consist of lectures and hands-on sessions where everyone can try out the tools on several exercises using different parallel computing hardware. No preliminary knowlegde of accelerator programming is required, but basic knowledge of parallel programming is recommended.

Lectures:

* Lecture 1:

Directive-based programming
Michael WOLFE (The Portland Group, Inc.)

The lecture will introduce high-level directive-based programming for heterogeneous architectures, such as CPUs connected to GPUs or Intel Xeon Phi coprocessors. We will discuss what kinds of programs are amenable to acceleration with these architectures, and the advantages and penalties of high-level programming. We will go into details of OpenACC, and compare to OpenMP and Intel Languages Extensions for Offload, and will use the PGI compilers for demonstration.

Michael WOLFE has over 35 years of experience developing languages and compilers for high performance and parallel computers in industry and academia. He joined The Portland Group in 1996, where his responsibilities and interests include deep compiler analysis and optimizations ranging from improving the efficiency of programs on parallel clusters to designing and implementing features for high level GPU programming. He was an associate professor at the Oregon Graduate Institute from 1988 until 1996, and was a cofounder and lead compiler engineer at Kuck and Associates, Inc., prior to that. He has published one textbook, "High Performance Compilers for Parallel Computing", a monograph, "Optimizing Supercompilers for Supercomputers," and a number of technical papers, and holds one patent.

References:

Easy GPU Parallelism with OpenACC, June 11, 2012
http://www.drdobbs.com/parallel/easy-gpu-parallelism-with-openacc/240001776

The OpenACC Execution Model, August 27, 2012
http://www.drdobbs.com/parallel/the-openacc-execution-model/240006334

Creating and Using Libraries with OpenACC, October 29, 2012
http://www.drdobbs.com/parallel/creating-and-using-libraries-with-openac/240012502

The PGI OpenACC Getting Started Guide
http://www.pgroup.com/docs/openacc_gs.pdf

Tips for Maximizing Performance with OpenACC in Fortran
http://www.pgroup.com/resources/openacc_tips_fortran.htm

* Lecture 2:

Programming Massively Parallel Processors Using CUDA and C++AMP
Wen-Mei HWU (University of Illinois at Urbana-Champaign)
http://parallel.illinois.edu/people/wen-mei-hwu

Description: This course introduces the principles and basic techniques for programming a CPU+GPU heterogeneous parallel computing system. We will start with CUDA, a low-level programming interface where the programmers must explicitly specify the details in data movement, thread index to data index mapping, and use of scratchpad memory. Once the students are familiar with the details, we will also cover C++AMP, a higher-level programming interface where the compiler takes care of a good portion of the details, improving code maintainability. However, the programmer still needs to go through the same thought process in order to achieve performance goals. We will cover some important parallel computation patterns with both CUDA and C++AMP.

References:

"Programming Massively Parallel Processors - A Hands-on Approach", Kirk and Hwu, Morgan-Kaufmann Publisher, 2012.

* Lecture 3:

Implicit and task-based approaches to heterogeneous parallel programming
Josef WEIDENDORFER ( Technical University Munich)
http://www.lrr.in.tum.de/~weidendo/

After introducing general-purpose processors and their issues, the lecture will detail the design space for accelerators and why some codes are good or bad candidates for these architectures. We describe ways to manage heterogeneity, such as work partitioning, granularity, load balancing, scheduling and data transfers. We also explain how memory namespaces between devices and/or nodes can be managed before presenting some existing programming models and runtime systems that address these issues using task-based models.

References:

Barcelona Supercomputing Center: Programming with StarSS
https://pm.bsc.es/sites/default/files/tutorial_ompss_PATC_single.pdf

StarPU handbook:
http://runtime.bordeaux.inria.fr/StarPU/starpu.html

Reminder:
Summer schools are intended for researchers, engineers and PhD students.

They allow them to review the state of progress of the proposed subjects and to confront their experience.

The teaching is done in English. It is complemented by practical works, in small groups, hosted by assistants.


Registration:

If you wish to join, thank you for filling this registration form and sending it to Régis VIZET before may 10, 2013

 

Contacts:

Summer Schools secretary
Régis VIZET - CEA
tel: 01 69 26 47 45
Fax: 01 69 26 70 80


Coordinator of the computer science summer school:
Brice GOGLIN - INRIA 

 

Registration fees:
Full rate: 5000 euros
Academia/ University & Public Research rate: 2800 euros
Phd student rate: 1400 euros
(accommodation and meals included)

 

Don't forget the possibility of using your company's training budget.

Flyer