An Introduction to Unified Parallel C (UPC)


Unified Parallel C (UPC) is an extension of the C programming language designed for high performance computing (HPC) on large-scale parallel machines. The language provides a uniform programming model for both shared and distributed memory hardware.

UPC follows the Partitioned Global Address Space (PGAS) programming model. PGAS aims to increase programming productivity in distributed memory architectures, where the de facto standard for parallel programming is MPI (Message Passing Interface).

This course will introduce the concepts and terminology of PGAS programming models, before providing a comprehensive introduction to programming HPC machines using UPC. After learning the language constructs to express parallelism, we will study the synchronization, data movement and collective communication primitives provided by the UPC Library. The second part of the course will be devoted to analysing a few examples focusing on performance and scalability. Each section of the course is supported by practical exercises.

Aimed at:

Anyone interested in writing parallel code.


Attendees should be able to program in C and be familiar with working in a UNIX environment (i.e., you should be able to connect to a machine remotely, use basic UNIX commands, edit a source file and understand the elementary steps in compiling object files and creating executables).


1 day.

After Course Attendees Will:

Be able to explain what are PGAS languages and why they appeared. They will also be able to parallelise an existing serial code, or write a parallel code from scratch, using UPC.

Please email us if you would like to attend this course.