Parallelizing Game Hardware Architectures

Submit New Article

September 29, 2010 9:00 PM PDT


University of Southern California overhauls game-design courses with the Intel Academic Community


Introduction
The University of Southern California Viterbi School of Engineering revamped its Game Hardware Architectures courses in order to introduce students to parallel computing and multi-core threading concepts. Jose Villeta updated his undergraduate and graduate-level courses in just a few weeks using resources from Intel, including: software development tools, game demos to demonstrate parallelism, and of course, multi-core computers. These changes had a significant impact on his students’ ability to conceptualize the impact of parallel programming on game production.

USC GamePipe Laboratory
In 2005, the University of Southern California (USC) Viterbi School of Engineering launched the USC GamePipe Laboratory within its Computer Science Department. Its mission is to conduct research, development, and education to address the challenges of the game production process. In the last five years, the GamePipe Laboratory has radically transformed the field of game production, dramatically shortening the game production timeline, developing supporting technologies for increased game complexity, and increasing game innovation. Through the USC GamePipe Laboratory, USC offers both undergraduate and graduate degrees in computer science (games), and teaches students to be strong programmers and system developers, skilled in game design and experienced in game development. The lab’s Game Engineering curriculum covers video game programming, parallel programming on consoles and graphics processing units, and programming game engines, all of which are straightforward software development courses and all important for game development. USC students have gone on to land positions at Electronic Arts, Disney, Pixar, Activision, and other entertainment leaders.

“The goal of the USC GamePipe Laboratory is to provide the game industry the strongest technical graduates of any games program in the world,” says Michael Zyda, Director of the USC GamePipe Laboratory. “Our plan is to take over the game industry from the bottom with the unsurpassed technical and creative talent that only a school like USC can provide.” USC offers a Game Hardware Architectures course taken by all undergraduate and many graduate students in the Games Program. This course familiarizes students with the architectural principles underlying modern game console and PC hardware design. Recently, Jose Villeta, a lecturer in the GamePipe Laboratory, used hardware and software resources provided by the Intel Academic Community to modernize this course by including parallel programming content. “The gaming industry told us it wanted strong programmers with multiple courses in C++, its primary development language,” Villeta says. “We reworked our first programming courses in C++ and used Intel game-oriented examples and exercises. The game focus helps motivate students and gets them excited about programming.”

Intel Parallel Courseware
In the new undergraduate-level Game Hardware Architectures course, two-thirds of the content is dedicated to CPU parallel programming, with modules pulled from Intel-developed courses, including: Introduction to Parallel Programming, Game-Threading Methodologies, and Parallel Architecture for Games. Villeta also used Intel-provided lab assignments and demos. Additionally, the USC GamePipe Laboratory was fully rebuilt from the ground up, with help from Intel and USC Department of Computer Science lab resources. Half of the lab’s PCs were fitted with the latest Intel® Core™ i7 processors, NVIDIA* video cards running the 64-bit Windows 7* operating system, and Microsoft Visual Studio 2008*, provided by Microsoft. The remaining computers in the USC GamePipe Laboratory* are slated for replacement in the coming academic year.

Intel provided new multi-core software profiling tools and compilers, including Intel® Parallel Studio, Intel® VTune™ Performance Analyzer, Intel® Thread Profiler, Intel® C++ Compilers, and Intel® Threading Building Blocks (Intel® TBB) for parallel programming, profiling, and tuning. The lab was fitted with an Intel-provided multi-core server with Intel® Xeon® processors running the Windows Server 2008 R2* operating system. “The courseware that Intel provided came with Microsoft Office PowerPoint* slides, hands-on workshops, and assignments,” Villeta says. “I used these materials as-is, which saved me a huge amount of time and gave our students access to very sophisticated demos and applications.”

Rich, Visual Demos
The first release of the Games Hardware Architectures course had a large enrollment of 44 students, most of them master's degree students, some senior undergrads, and a few PhD students. “We had a great progression with students learning how to program with OpenMP and Intel TBB, and to profile with the latest Intel tools including Intel Parallel Studio, VTune, and Intel Thread Profiler,” Villeta says. “Using Intel game demos like Smoke, Horsepower, PetMe, Ticker Tape, and Destroy Castle was a great way for students to get a more visual presentation demonstrating task parallelism. They really appreciated this approach.” The final student projects, which concluded the semester, really demonstrated the value of the course changes. They included topics such as OpenMP versus Intel TBB versus Software Transaction Memory parallel project, PlayStation 3 Parallel Cluster for Raytracing,* XNA* game parallel projects, NVIDIA CUDA GPU Parallel* projects, and AI Behaviors* and Algorithms Parallel* game projects. At the end of the semester, the students gained enough multi-core architecture knowledge and hands-on parallel programming experience to apply to game engine development work and to be able to parallelize any serial programming application that they would encounter in the future. Villeta has also updated a second course that he teaches at USC, Game Engine Development, which familiarizes students with the principles of developing game engines targeted at modern PC and game console hardware. He’s anticipating similar success and looks forward to sharing his experience with others.

Jose Villeta
Jose VilletaJose Villeta is a lecturer for EE-452 Game Hardware Architectures and CSCI-522 Game Engine Development at USC and was recently awarded the prestigious Intel® Black Belt Software Developer award for his leadership in promoting parallel computing education. He is also Director of Technology at Disney Interactive Studios, where he oversees development of top Disney video game titles. Prior to joining Disney, he worked as Studio Technical Director at Heavy Iron Studios, where he oversaw programming teams and development efforts. He has over 16 years of game industry experience. Villeta has a Bachelor of Science Degree from M.I.T. and a Master of Science Degree from George Washington University.


Professor Michael Zyda
Michael ZydaMichael Zyda is the Founding Director of the USC GamePipe Laboratory and a Professor of Engineering Practice in the USC Department of Computer Science. At the USC Viterbi School of Engineering, he founded the Games cross-disciplinary degree programs and dramatically increased the incoming undergraduate enrollment of the Computer Science Department. Professor Zyda’s research interests include computer graphics, large-scale, networked 3D virtual environments, agent-based simulation, modeling human and organizational behavior, interactive computer-generated story, computer-generated characters, video production, entertainment/defense collaboration, modeling and simulation, and serious and entertainment games.