Matrix Vector Multiplication and Multi-threading Benefits
Intel Core 2 Extreme Quad Core Computer Processor Multithreaded Matrix Multiplication Performance: Dual-core and Quad-core processors are fast becoming the staple in desktop and mobile computing. In this article, performance data comparing single-threaded and multi-threaded matrix-vector multiplication are presented. In addition to multi-threading the routine, it was also optimized using Single Instruction Multiple Data (SIMD) instructions. The different implementations were tested on an Intel Core 2 Extreme quad-core processor, QX6700.

by Kiefer Kuah

Dual-core and Quad-core processors are fast becoming the staple in desktop and mobile computing. In this article, performance data comparing single-threaded and multi-threaded matrix-vector multiplication are presented. In addition to multi-threading the routine, it was also optimized using Single Instruction Multiple Data (SIMD) instructions. The different implementations were tested on an Intel® Core™ 2 Extreme quad-core processor, QX6700. Measurable speedups were observed; the highest speedup was 20.8x. Next, the impact of increasing the data set to sizes beyond the last level cache was also characterized.

Introduction

The multiplication of a matrix and a vector is a common operation in applications such as in the skinning and physics code of 3D graphics games. We investigated a few ways to write the code for this operation and assess the performance of each version on a 2.66GHz Intel® Core™ 2 Extreme quad-core processors.

Six different versions of the code were written. The first version was written using C++ code. It involved two nested loops, iterating through each element of the data sets. This version would be used as the reference by which the performance of other versions would be measured. This version was then multithreaded using Windows* threading functions.

The SIMD versions were written in assembly and they operated on 4 floating point data in each loop. One version assumed that the data was in the array of structure (AOS) format while the other assumed the data was in the structure of array (SOA) format. Figure 2 shows an example of the structure of array construct. Two other versions were subsequently derived from these SIMD versions by converting them to multi-threaded code.


If you're interested in this topic, these articles may be helpful:

Impact of thread priority on .NET applications and hyper-threading enabled processors
by Eric L. Blair. Intel Corp. Intel processors that support Hyper-T...
Discussion Forum: Threading on Intel® Parallel Architectures
With the introduction of the Pentium® 4 3.06 GHz processor, and Hy...
Multi-Threading for Experts: Inside a Parallel Application
by Sergey N. Zheltov, project manager, and Stanislav V. Bratanov, soft...
Primer: Developing Multithreaded Applications
This 106-page paper is a must-have reference for developing efficient ...
Preparing for Hyper-Threading and Dual Core Technologies
Subscribe to Intel Software Dispatch and see the complete article I...

Related Jobs:

Software Development Engineer #136721 - WA - Redmond - Microsoft Corporation
Do you want to be at the forefront of revolution that is happening in ...
Software Development Engineer #136752 - WA - Redmond - Microsoft Corporation
Do you want to be at the forefront of revolution that is happening in ...
Help Desk Task Manager #R-280-05 - DC - Washington - McDonald Bradley, Inc.
R-280-05 Help Desk Task Manager Sep 20, 2005 Washington,District of ...
IVR Software Developer 2 #2068SD - TX - Austin - S1 Corporation
SUMMARY We seek a talented, experienced Visual Basic/ASP Software De...
Software Engineer - CO - Boulder - CDM Optics, Inc.
CDM Optics is seeking an experienced C++ developer with 1-3 years prof...
Point of Sale (POS) Help Desk Analyst - NY - New York City - Barnes & Noble College Bookstore, Inc.
Provide Point of Sale (POS) hardware and software support to all store...
Software Development Engineer #132822 - CA - Mountain View - Microsoft Corporation
Microsoft TV Foundation Edition is inventing the future of digital tel...
Program Manager #132896 - WA - Redmond - Microsoft Corporation
Do you have a passion for technology and a strong interest operating s...
Software Development Engineer #136725 - WA - Redmond - Microsoft Corporation
Are you looking to make an impact on the core of the next generation o...
Software Development Engineer #132025 - WA - Redmond - Microsoft Corporation
Do you want to be at the forefront of revolution that is happening in ...