Short course/CPD

Small Scale Parallel Programming

 

Course date: Please enquire

Course overview

This Small Scale Parallel Programming short course (continuing professional development) aims to explore the different parallel processing techniques now available on small scale computer systems, such as multi-core desktop computers. Subjects include; Parallel and Multi-Threaded Programming, Inter-Process Communication & Synchronisation, OpenMP, Stream Processing (GPGPU and SSE), Parallelisation methods.

Software developers can no longer rely on increased CPU speed to deliver extra performance in their applications. Instead, increasing exploitation of the additional processing cores within a CPU will be needed to discriminate software products in terms of performance and functionality. This course aims to explore the different parallel processing techniques now available on small scale computer systems, such as multi-core desktop computers.

 
Location

Cranfield University is located at the very heart of the UK – within the innovation triangle between London and the cities of Oxford and Cambridge.

Our central location provides easy access from the M1, excellent main line rail service as well as proximity to key international airports. Set in rolling countryside, Cranfield offers a rich, rural landscape complemented by thriving towns and picturesque villages.

  • Road: We are just 10 minutes from Junctions 13 & 14 of the M1 motorway. There is free parking on campus. 
  • Rail: Milton Keynes or Bedford 
  • Air: London Luton (22 miles), Heathrow (50 miles) or Birmingham (70 miles).

View our location maps.

Course fee:

£1000

Accommodation fee:

£425

How to register

 

Further information

For more information on this course or booking details please contact:
Academic Operations Unit
T: + 44 (0) 1234 754192
E: shortcourse@cranfield.ac.uk

Course Booking Conditions

Course description

Who should attend

Software Developers and Engineers with any of the following requirements:

  • looking to introduce multi-threaded programming into their applications
  • working on large data sets
  • wishing to increase the performance of their existing source code
  • an interest in expanding their skill set to include concurrent programming.

Course content

Introduction to Parallel Architectures

  • Flynn’s Taxonomy
  • Shared and Distributed Memory Systems
  • Advantages of Multiple Cores
  • Shared Memory Hardware Architectures

Parallel Program Design for Shared Memory Applications

  • Methodical Approach to Designing Parallel Algorithms
  • Partitioning and Decomposition
  • Communication
  • Agglomeration
  • Mapping
  • Amdahl’s Law

Multi-threaded Programming

  • Processes and Threads
  • Thread Safety
  • Thread Synchronisation
  • Thread Liveness

Programming Using Multi-Threaded Libraries

  • Overview of API libraries
  • Multi-threaded APIs: Win32 threads
  • Creating multi-threaded MFC applications

Parallel Programming Using OpenMP

  • Programming Model and Usage
  • Data Sharing
  • Work Sharing Constructs
  • Synchronisation Constructs

Debugging and Optimisation

Stream Computing and SIMD Architectures

  • What is Stream Processing?
  • SIMD Architecture
  • SIMD Example - GPU Hardware Architectures
  • Developing General Purpose GPU Applications

The course consists of a number of classroom based sessions as well as practical lab based sessions in which students are encouraged to implement the main themes of the course.

The course assumes a working knowledge of C/C++ and Microsoft Visual Studio, although facilities exist for those wishing to implement the examples in Fortran and Linux.

Outcomes

On completion delegates will be able to demonstrate:

  • An overview of parallel processing using multi-core hardware
  • A systematic application of the techniques employed in multi-threaded processing,
  • Identification of the most common difficulties associated with parallel programming, such as race conditions and dead-locking.
  • Application of the domain decomposition approach to shared memory parallel processing and be able to implement a solution using the OpenMP library.
  • Use and critical evaluation of automated tools for the design of source code and debugging of multi-threaded programs

 

Quick navigation:

 
Print this page Bookmark page Send to a friend