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).
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 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



