Short course/CPD
General Purpose GPU Programming
Course date: Please enquire
Course overview

The aim of this course is to introduce the programming techniques required to develop general purpose software applications for GPU hardware. Using NVIDIA's CUDA framework, the course will focus on the solution to common problems encountered whilst developing numerical applications on the GPU. This will include an introduction to the programming techniques required to take advantage of the architecture, as well as more advanced optimisation methodologies needed to get the most out of the platform.
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:
£827
Accommodation fee:
£257
Accommodation is on a full-board basis from the evening before the course commences until the afternoon of the last day. The course fee includes a course dinner for all participants and refreshments and lunch during the day. The accommodation fee includes all other meals. Details of arrangements will be in the delegate information pack.
Speakers
Course Director
Stuart Barnes
Applied Mathematics and Computing Group
T: +44 (0) 1234 750111 ext. 5162
F: +44 (0) 1234 754797
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
Objectives
At the end of the course, delegates will be able to:
- identify the key programming methods and use the tools needed to develop software for the GPU platform
- understand how the GPU hardware architecture differs from more traditional CPU architectures, and how this impacts on the approach to developing software for the platform
- analyse the impact of the hardware architecture on the execution of the CUDA application, and implement solutions that will optimize performance.
Course arrangements
The course will be delivered as a mix of classroom and practical lab based sessions. The focus of the course will be to implement applications on actual GPU based hardware.

Who should attend?
This course will be of interest to software developers who wish to implement high performance applications using the GPU platform, particularly in the area of numerical computing, such as finance and engineering.
Delegates will be expected to be familiar with software development using the C programming language. An understanding of multi-threaded programming would be useful but is not necessary, as the basics will be covered on the course.
Topics
CUDA Programming Model
- Stream computing and SIMD platforms
- Threads and thread hierarchy
- Memory hierarchy
- Synchronisation
- Host and device interactions
GPU Device Architecture
- Streaming multiprocessors and scalar processors
- On-chip memory: registers and local shared memory
- Execution model: warps, scheduling and divergence
- Device memory and latency
Performance Optimisation
- Instruction performance
- Memory access patterns
- Global memory coalescence
- Local memory bank conflicts
- Optimisation strategies



