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...
Preparing for Hyper-Threading and Dual Core Technologies
Intel continuously improves the performance and functionality of its m...
Primer: Developing Multithreaded Applications
This 106-page paper is a must-have reference for developing efficient ...
Multi-Threading for Experts: Inside a Parallel Application
by Sergey N. Zheltov, project manager, and Stanislav V. Bratanov, soft...

Related Jobs:

Hardware Engineer - CA - Milpitas - Sigma Designs, Inc.
Responsible for the analysis, design, programming and debugging of fir...
GSM/Dual Mode System Architect #784 - CA - Milpitas - PalmOne, Inc.
GSM/Dual Mode System Architect Job code: 784 Job Category: Engineeri...
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 #136721 - WA - Redmond - Microsoft Corporation
Do you want to be at the forefront of revolution that is happening in ...
Software Development Engineer #139657 - CA - Mountain View - Microsoft Corporation
Are you passionate about TV and embedded technology? Do you love tinke...
Software Development Engineer #136749 - WA - Redmond - Microsoft Corporation
Do you want to be at the forefront of revolution that is happening in ...
Software Development Engineer #132822 - CA - Mountain View - Microsoft Corporation
Microsoft TV Foundation Edition is inventing the future of digital tel...
Software Engineer - CO - Boulder - CDM Optics, Inc.
CDM Optics is seeking an experienced C++ developer with 1-3 years prof...
Software Development Engineer #136752 - WA - Redmond - Microsoft Corporation
Do you want to be at the forefront of revolution that is happening in ...
Software Development Engineer #132895 - WA - Redmond - Microsoft Corporation
Is harnessing 500GFlops/sec of processing power and pushing 50GB/s of ...