CPU-GPU Implementation of Collision Detection for Gaming Applications

2019 COE Engineering Design Project (GK05)


Faculty Lab Coordinator

Gul Khan

Topic Category

Software Systems

Preamble

Heterogeneous computing involves CPU-GPU processing clusters and it is gaining attraction due to General-Purpose GPU (GPGPU) programming and shared memory architectures of CPU-GPU systems. GPUs (Graphics Processing Units) were originally intended for graphics processing. However, GPUs are being increasingly used for a wide range of computational-intensive Gaming applications. Current GPUs employ Single Instruction Multiple Thread (SIMT) architecture-based computing structure. 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 compute 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 portable platforms such as Smart Phones and Tablets.

Objective

CPU-GPU implementation of a computing-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 GPU boards suitable for CPU-GPU programming as well as study GPU architectures and their programming techniques.
2. Study and learn OpenCL (C based Language) for GPU and parallel programming.
4. Study and investigate collision detection application for CPU-GPU implementation.
5. Identify a suitable Game that can be implemented to demo collision detection.
6. Find the parts of collision detection or its tasks (of its task graph) that are suitable for GPU implementation.Moreover, Identify sequential tasks of collision detection for CPU implementation.
7. Partition the collision detection task graph for CPU and GPU allocation with minimum communication between CPU and GPU.
8. 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 GPU board for your Gaming project.
3. Collision detection is an interesting part of many Games and animation application suitable for CPU-GPU implementation.
4. Review and learn OpenCL (C based Language) for GPU and parallel programming.
5. Divide the collision detection application task graph into CPU and GPU implementation with minimal communication overhead between CPU and GPU.
6. Implement collision detection on target CPU-GPU system by using OpenCL environment.
7. Compare the CPU-GPU implementation of collision detection with a CPU only implementation in terms of execution time and power consumption.
8. Implement an animation or gaming application 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.
3. Study and write small OpenCL designs for CPU-GPU systems.
4. Write the single CPU code for collision detection technique as part of a animation or gaming system.
5. Write OpenCL code in terms of kernels for collision detection technique.
6. Build the task graph of a 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 gaming 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 a 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 kernel for collision detection application tasks working with Student B.
5. Develop complete OpenCL code of the collision detection application for CPU-GPU implementation by working with student B.
6. Assist Student 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 a 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. 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 CPU-GPU system.
6. Assist Student A, C and D to manage the overall project design and implementation.

Student C Responsibilities

1. Investigate and study different GPU architectures, collision detection technique and corresponding GPU platforms for target application implementation.
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 GPU programming.
4. Develop OpenCL or C code for the selected game or animation application for single CPU implementation in consultation with Student D.
5. Understand and verify the collision detection application (OpenCL) code developed by student 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 technique.
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 GPU programming.
4. Develop OpenCL code for the selected game or 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

 


GK05: CPU-GPU Implementation of Collision Detection for Gaming Applications | Gul Khan | Friday August 30th 2019 at 11:00 PM