Portfolio Item: Multiprocessing and Parallel Systems (MSc Games Software Development)
This module is aimed at introducing us to how we can improve the performance of applications through a variety of techniques that take advantage of multiple core processors.
OpenMP
We were given an introduction on how to use OpenMP, an API for multi-platform shared-memory parallel programming in C/C++ and Fortran. Our assignment for this topic was to compare the difference in performance for a bubble sort algorithm (sorting 2,000,000 numbers) when using parallel fors or parallel sections. Our design approaches are available for download.
SIMD
We were explained the concepts of using Single Instruction Multiple Data (SIMD) by using Intel's Streaming SIMD (SSE). The assignment for this topic required us to write a SIMD version of the C++ instruction itoa which converts an integer into an ASCII character. The aim was to create a version that is 10% faster than a given assembly only version of the same function. As the function is to be used in the same sortOut program that we have been covering during this module our approach was to take four numbers at the same time. In the end we achieved a stable average of 1% increase. For reasons unknown we did have a minimum of 16% increase but it ceased to work shortly before submission. Consulting with others afterwards revealed that similar problems had occurred and are as yet unexplained.
Occam
We have been taught how to write in the occam language, the standard language of the now extinct transputer, in an effort to understand the principals in true parallelism which is being earmarked for the future in terms of optimizing performance. Our assignment (now individually allocated) is composed of two tasks:
- Simulate a car park management system with a particular focus on dealing with dual events such as two cars arriving at the same time.
- Simulate a dual pipeline processor.
Images
Other Items
- Liam Spencer CG
- Suzi Battersby
- Peoplesafe
- Sheffield Business Awards
- Star Chart
- Prototypes
- Graphics and Animation
- Architecture and Technologies for Entertainment Software
- Interaction Design for Entertainment Software
- Special Techniques for Graphics and Animation
- Management of Entertainment Software
- Integrated Development (Ark!)
- Research Based Product Development
- Lab Escape
- OpenGL Ball Physics