Introduction

Matrix and vector transformations are important for graphical rendering. Rendering applications want relatively high framerates (at least 30 fps in most circumstances), and this limits the number of operations that can be performed between each frame during realtime image rendering. Matrix operations take many serial instructions to complete, and thus are generally very time consuming. This is where SIMD (Single Instruction Multiple Data) instructions come in handy. These allow vector arithmetic at no extra cost in time. Because matrices and vectors contain many elemental numbers yet are considered a single entity, they lend themselves well to SIMD instructions. Intel's SSE instruction set (PIII and above) operates on up to four 32-bit floats simultaneously, allowing 3 or 4 dimensional vectors to be treated as a single structure mathematically (i.e. one can do additions and multiplications on all dimensions at once with no increase in time requried). For gaphical rendering where 3 and 4 dimensional vectors and matrices are often used, there is a lot of potential for speedup through the use of such an instruction set.

In this project we implemented mathematical libraries for matrix and vector transformations using the SSE instruction set and compared them to existing SISD libraries for the same purpose.

Our information on the SSE instruction set comes from www.tommensani.com.

Back to main.