Three Methods for Speeding up Matrix-Vector Multiplication
Matrix-Vector Data Structure Tutorial: The multiplication of a matrix and a vector is a common operation in applications such as 3D graphics games. Multi-threading the code will help performance, both on DP Xeon processor-based systems and hyperthread technology systems. This tutorial explains you how to speed up matrix-vector multiplication with SSE instructions, threading, and data re-structuring. Learn more about hyperthread technology in this thread data structure tutorial.

by Kiefer Kuah, Intel Corp.

Speeding up matrix-vector multiplication with SSE instructions, threading, and data restructuring

Single-instruction multiple-data instructions, threading, and restructuring data are three common optimization methods. The performance impact that these methods can make on matrix-vector multiplication was investigated here. The different implementations were tested on three hardware configurations and compared to the version written in C. All three methods resulted in measurable gains. As expected, while it resulted in gains on the Hyper-Threading–technology–enabled system and the dual-processor Intel Xeon chip system, the multithreaded version did not exhibit performance benefits on the uniprocessor system.

Introduction
The multiplication of a matrix and a vector is a common operation in applications such as 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.8-GHz uniprocessor Hyper-Threading–technology–enabled Intel Pentium 4 processor system as well as on a 2.4-GHz Pentium 4 Xeon system.

Subscribers who liked this article also read:
The "Rich-Client" Advantage for .NET Web Services
by Dan Fineberg, enterprise/business marketing manager, and Gary Hayco...

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

For-loop threading methods
by Jeff Andrews, application engineer, Intel Corp. Explore differen...
Utilizing thread pools in performance-critical applications
by Blake Thompson, application engineer, Intel Corp. When using thr...
Multiple approaches to multithreaded applications
by George Walsh, freelance researcher and writer. Intel Corp. The...
Multi-Threading for Experts: Inside a Parallel Application
by Sergey N. Zheltov, project manager, and Stanislav V. Bratanov, soft...
Combining Linux Message Passing and Threading in High-Performance Computing
by Andrew Binstock, principal analyst, Pacific Data Works LLC. Intel C...

Related Jobs:

Technical Project Manager Business Systems #39250 - FL - Tampa - HSBC Bank Usa
Technical Project Manager Business Systems Here are all the details f...
Software Development Engineer #132338 - WA - Redmond - Microsoft Corporation
MSN Search - Relevance Measurement SDE Relevance measurement is a hot...
Software Development Engineer in Test #151268 - WA - Redmond - Microsoft Corporation
We're not just about scheduling projects - we're the solution for mana...
Web Developer Lead w/QA experience #780 - MD - Rockville - Management Systems Designers, Inc.
MSD is an employee-owned company of over 600 professionals who support...
Program Manager IV #765023 - CA - San Jose - Cisco Systems, Inc.
Description Environmental Regulatory Affairs Program Manager to lead...
System Engineer (III) / Analyst / Manager #362866 - MA - Boston - Zel Technologies, LLC
Individuals at this level are emerging authorities and are recogni...
Software Development Engineer in Test #151112 - WA - Redmond - Microsoft Corporation
We're not just about scheduling projects - we're the solution for mana...
Senior Software Engineer #8CD54BFEC76D5E65 - CA - Campbell - Ask Jeeves,Inc.
Title Senior Software Engineer City Campbell State CA Zip Code 9...
Software Development Engineer in Test #151266 - WA - Redmond - Microsoft Corporation
We're not just about scheduling projects - we're the solution for mana...
FI/CO Business Process Analyst #REV010704 - WA - Everett - Intermec Technologies Corporation
Job Title FI/CO Business Process Analyst Department IT - ERP Openi...