Heterogeneous CPU-GPU Implementation of Gaming Applications

2022 COE Engineering Design Project (GK05)


Faculty Lab Coordinator

Gul Khan

Topic Category

Embedded Systems

Preamble

Heterogeneous computing involves CPU-GPU processing, and it is gaining attraction due to the advent of General-Purpose GPU programming and shared memory architectures of CPU-GPU systems. GPUs (Graphics Processing Units) were originally designed for graphics processing. However, they are being increasingly employed to a wide range of computational-intensive Gaming applications. Current GPUs have Single Instruction Multiple Thread (SIMT) architecture. The GPUs with the new and modified architecture are called General Purpose GPU (GPGPU). Software developers for heterogeneous systems have been seeking new ways to utilize untapped power of the GPU for various processing hungry gaming applications such as collision detection. Collision detection is one of the key tasks employed for animation and gaming applications. A collision detection algorithm must be efficient and work in real time as it executes multiple times over the course of Gaming applications. The main concern for GPU based computing is their higher power consumption that must also be considered for implementing Games for CPU-GPU platforms such as Smart Phones and Tablets.

Objective

Heterogeneous (CPU-GPU) implementation of a computational-intensive gaming application such as "object (window) collision detection" for faster execution. Implementation of an interesting Game to demonstrate fast collision detection.

Partial Specifications

1. Survey various CPU-GPU development boards suitable for CPU-GPU programming as well as study GPU architectures and their programming techniques.
2. Study and learn OpenCL (C based Language) or CUDA for GPU and parallel programming.
3. Investigate collision detection application for CPU-GPU implementation.
4. Identify a suitable Game that can be implemented to demo the collision detection.
5. Find the parts of collision detection (by using its task graph) that are suitable for GPU implementation. Moreover, Identify sequential tasks of collision detection for CPU implementation.
6. Partition the collision detection application for CPU and GPU allocation with minimal communication between CPU and GPU cores.
7. Employ your collision detection technique as part of a Game or animation for demo purposes.

Suggested Approach

1. Study and learn various GPU architectures as well as their programming details.
2. Study and select an economical and low-cost CPU-GPU development board for your Gaming project.
3. Collision detection of regular and complex image windows is an interesting part of many gaming and animation applications for CPU-GPU implementation.
4. Study and learn OpenCL (a parallel C type Language) for GPU and parallel programming.
5. Divide the collision detection application into CPU and GPU implementation with minimal CPU-GPU communication overhead.
6. Implement collision detection on the target CPU-GPU system by using OpenCL environment.
7. Compare your CPU-GPU implementation of collision detection with a CPU only implementation in terms of execution time and power consumption.
8. Implement an interesting animation or game involving collision detection for demo purposes.

Group Responsibilities

1. Investigate and study various GPU architectures.
2. Study and select a target CPU-GPU board/platform for your game implementation and demo.
3. Study and write a small application in OpenCL to learn heterogeneous programming for CPU-GPU systems.
4. Write the single CPU code for collision detection technique as part of an animation or gaming system.
5. Develop the OpenCL code in terms of kernels for a collision detection technique.
6. Build the task graph of collision detection and program the GPU with its candidate tasks as OpenCL kernels.
7. Implement the collision detection application for the selected CPU-GPU platform.
8. Compare your CPU-GPU implementation with a single CPU implementation of collision detection in terms of execution time and power consumption.
9. For verification and demo purposes implement a game or animation system involving collision detection.

Student A Responsibilities

1. Investigate and study various GPU architectures and corresponding GPU platforms for implementation.
2. Study collision detection technique as part of an animation or gaming system.
3. Select a suitable game or animation application involving collision detection for CPU-GPU implementation in consultation with other students in the group.
3. Study and practice OpenCL software development environment for GPU programming.
4. Develop OpenCL kernels for collision detection application tasks working with Student B.
5. Develop full OpenCL code of the collision detection application for CPU-GPU implementation by working with student B.
6. Collaborate with Students B and C and manage the overall project design and implementation.

Student B Responsibilities

1. Investigate and study various GPU architectures and corresponding GPU platforms for implementation.
2. Study collision detection technique as part of an animation or gaming system.
3. Select a suitable game or animation application involving collision detection for CPU-GPU implementation in consultation with the other students in the group.
3. Study and practice OpenCL software development environment for GPU programming.
4. Improve and develop OpenCL kernels for collision detection application tasks working with Student A.
5. Help student A to develop OpenCL code of collision detection for the target heterogeneous CPU-GPU system.
6. Collaborate with Students A, C and D to manage the overall project design and implementation.

Student C Responsibilities

1. Investigate and study different GPU architectures, collision detection techniques and corresponding CPU-GPU platforms targeting gaming application.
2. Select a suitable game or animation application involving collision detection for CPU-GPU implementation in consultation with the other students in the group.
3. Study and practice OpenCL software development environment for CPU-GPU programming.
4. Develop OpenCL or C code for the selected game for single CPU or GPU implementation in consultation with Student D.
5. Understand and verify the collision detection application (OpenCL) code developed by students A and B.
6. Integrate collision detection developed by student A/B into your animation or gaming application with the help of Student D.
6. For verification, compare single CPU implementation of collision detection with CPU-GPU implementation done by student A/B in terms of execution time and power consumption.
7. Assist Student A, B and D to complete the overall project on time.

Student D Responsibilities

1. Investigate and study different GPU architectures as well as collision detection techniques.
2. Select a suitable game or animation application involving collision detection for CPU-GPU implementation in consultation with the other students in the group.
3. Study and practice OpenCL or CUDA software development environment for GPU programming.
4. Develop OpenCL code for the selected game/animation application involving collision detection for CPU implementation in consultation with Student C.
5. Understand and verify the collision detection OpenCL code developed by student A and B.
6. Assist Student A, B and C to complete the overall project work on time.

Course Co-requisites

COE718, COE838

To ALL EDP Students

Due to COVID-19 pandemic, in the event University is not open for in-class/in-lab activities during the Winter term, your EDP topic specifications, requirements, implementations, and assessment methods will be adjusted by your FLCs at their discretion.

 


GK05: Heterogeneous CPU-GPU Implementation of Gaming Applications | Gul Khan | Sunday September 4th 2022 at 06:23 PM