GPU Computing to Improve Game Engine Performance

Authors

  • Abu Asaduzzaman Department of EECS, Wichita State University
  • Hin Y. Lee Department of EECS, Wichita State University

DOI:

https://doi.org/10.5614/j.eng.technol.sci.2014.46.2.8

Abstract

Although the graphics processing unit (GPU) was originally designed to accelerate the image creation for output to display, today's general purpose GPU (GPGPU) computing offers unprecedented performance by offloading computing-intensive portions of the application to the GPGPU, while running the remainder of the code on the central processing unit (CPU). The highly parallel structure of a many core GPGPU can process large blocks of data faster using multithreaded concurrent processing. A game engine has many "components" and multithreading can be used to implement their parallelism. However, effective implementation of multithreading in a multicore processor has challenges, such as data and task parallelism. In this paper, we investigate the impact of using a GPGPU with a CPU to design high-performance game engines. First, we implement a separable convolution filter (heavily used in image processing) with the GPGPU. Then, we implement a multiobject interactive game console in an eight-core workstation using a multithreaded asynchronous model (MAM), a multithreaded synchronous model (MSM), and an MSM with data parallelism (MSMDP). According to the experimental results, speedup of about 61x and 5x is achieved due to GPGPU and MSMDP implementation, respectively. Therefore, GPGPU-assisted parallel computing has the potential to improve multithreaded game engine performance.

Downloads

Download data is not yet available.

References

Graphics Processing Unit, Wikipedia, https://en.wikipedia.org/ wiki/Graphics_processing_unit (1 August 2013).

Swaine, M., New Chip from Intel Gives High-Quality Displays, Intel Press, http://en.wikipedia.org/wiki/Graphics_processing_unit(1 August 2013).

CUDA,Nvidia, http://www.nvidia.com(1 August 2013).

Kruger, J. &Westermann, R., Linear Algebra Operators for GPU Implementation of Numerical Algorithms, International Conf. on Computer Graphics and Interactive Techniques, 2005.

Liepe, J., Barnes, C., Cule, E., Erguler, K., Kirk, P., Toni, T.&Stumpf, M.P., ABC-Sysbio - Approximate Bayesian Computation in Python with GPU Support, Bioinformatics Journal, 26(14), pp. 1797-1799, 2010.

Berberich, S., Video Games Starting to Get Serious, Gazette.net, http://ww2.gazette.net/stories/083107/businew11739_32356.shtml, (1 August 2013).

Waele, R.D., Gaming: Mobile and Wireless Trends for 2008, M-trends.org, http://www.m-trends.org/2008/01/mobile-and-wireless-trends-for-2008.html (1 August 2013).

Parberry, I., Intro to Bullet Physics, larc.unt.edu, http://larc.unt.edu/ian/classes/fall11/csce4215/notes/bulletphysics.pdf, (1 August 2013).

Brodkin, J., Shift to Multicore Processors Inevitable, but Enterprises Face Challenges, Network World, http://www.networkworld.com/news/2008/022708-multicore-processors.html (1 August 2013).

Schauer, B., Multicore Processors - A Necessity, ProQuest Discovery Guides, http://www.csa.com/discoveryguides/ multicore/review.pdf (1 August 2013).

Sutter, H., The Free Lunch Is Over: A Fundamental Turn toward Concurrency in Software, Dr. Dobb's Journal, 30(3), pp. 1-7, 2005.

Designing the Framework of a Parallel Game Engine (PGE), Intel, http://www.intel.com (1 August 2013).

Threading Building Blocks (TBB), Intel, http://www.threadingbuildingblocks.org/ (1 August 2013).

Rhalibi, A.E., England, D.& Costa, S., Game Engineering for a Multiprocessor Architecture, School of Computing and Mathematical Sciences, Liverpool John Moores University, 2005.

Harbour, J.S., Multi-Threaded Game Engine Design, Course Technology PTR (1st ed.), ISBN-10: 1435454170, ISBN-13: 978-1435454170, 2010.

Lake, A. &Gabb, H., Threading 3D Game Engine Basics, Gamasutra, 2005, http://www.gamasutra.com/view/feature/2463/threading_3d_game_engine basics.php (1 August 2013).

Vries, A.D., Multithreaded Renderloop, slapware.eu, http://blog. slapware.eu/game-engine/programming/multithreaded-renderloop-part1/ (1 August 2013).

Leonard, T., Dragged Kicking and Screaming: Source Multicore, Valve Corporation, GDC 2007, pp. 8-13, 2007.

Gasior, G., Valve's Source Engine Goes Multi-Core, techreport, 2006, http://techreport.com/review/11237/valve-source-engine-goes-multi-core (1 August 2013).

Aaltonen, S. &Ilvessuo, A., Tech Interview: Trials HD, Richard Leadbetter, Eurogamer, 2009, http://www.eurogamer.net/articles/digitalfoundry-tech-interview- trials-hd (1 August 2013).

Gadd, K., Threading and Your Game Loop, #Alt-DevBlogADay, http://www.altdevblogaday.com/2011/07/03/threading-and-your-game-loop/ (1 August 2013).

NVIDIA Developer Zone: CUDA Samples, http://docs.nvidia.com/cuda/cuda-samples/ (1 August 2013).

Owens, J.D., Houston, M., Luebke, D., Green, S., Stone, J.E. & Phillips, J.C., GPU Computing: Graphics Processing Units--Powerful, Programmable, and Highly Parallel--Are Increasingly Targeting General-Purpose Computing Applications, in: the Proceedings of the IEEE, 96(5), pp. 879-899, 2008.

Govindaraju, N.K., Henson, M., Lin, M.C., &Manocha, D., Interactive Visibility Ordering of Geometric Primitives in Complex Environments, in: Proc. 2005 Symp. Interact. 3D Graph. Games, pp. 49-56,2005.

Ooste, J.V., 3D Game Engine Programming: Helping You Build Your Dream Game Engine, 2011, http://3dgep.com/?p=1821 2011 (1 August 2013).

Guevara, M., Gregg, C., Hazelwood, K., &Skadron, K.,Enabling Task Parallelism in the CUDA Scheduler, in PEMA. 978-1-4244-6443-2/10/ IEEE, 2009.

Baumstark, L.Jr. & Wills, L., Exposing Data-Level Parallelism in Sequential Image Processing Algorithms, in Proceedings of the Ninth Working Conference on Reverse Engineering (WCRE'02), 1095-1350/02 IEEE, 2002.

Domino Research: Using Data-Parallel SIMD Architecture in Video Games and Supercomputers, IBM, http://domino.research.ibm.com/comm/research.nsf/ pages/r.arch.simd.html (1 August 2013).

Mnkknen, V., Multithreaded Game Engine Architectures, Gamasutra, 2006, http://www.gamasutra.com/view/feature/130247/multithreaded_game_engine_.php?page=3 (1 August 2013).

Kriemann, R., Implementation and Usage of a Thread Pool based on POSIX Threads in MPI MIS Leipzig, Report 2/2003, 2004.

Cronin, E., Kurc, A.R., Filstrup, B., &Jamin, S., An Efficient Synchronization Mechanism for Mirrored Game Architectures (Extended Version), Kluwer Academic Publishers, 2003.

Davies, L., Examples of Multi-Threading in Games, Intel, 2006.

An Introduction to Edge Detection: The Sobel Edge Detector, Generation5, http://www.generation5.org/content/2002/im01.asp (1 August 2013).

OGRE - Open Source 3D Graphics Engine, www.ogre3d.org/ (1 August 2013).

Game Physics Simulation, bulletphysics.com/ (1 August 2013).

Recastnavigation: Navigation-Mesh Construction Toolset for Games, code.google.com/p/recastnavigation/ (1 August 2013).

Object Oriented Input System, sourceforge.net/projects/wgois/ (1 August 2013).

TinyThread++ - Portable thread library for C++,www.tinythreadpp.bitsnbites.eu/"Z (1 August 2013).

Downloads

Published

2014-07-01

Issue

Section

Articles