ECE 614 SIMD Lab Assignments


2005w updated 2005-1-19
More updates will follow

For the parallel programming assignments, submit parallel and sequential versions of the code, demonstrate that they work, and compare the runtimes or simulated runtimes.

If you use division, provide your own division code.

Your instructor will support the C-RAM tools in ~elliott/CCC and Atsana tools.
You may use any other SIMD programming environment that you are willing to support.

Of course, with the permission of your instructor, you can work on a harder problem than shown.

You are required to submit at least 4 lab assignments (bonus for a fifth - half marks), at least three of which must contain SIMD programming.
 
 

Lab 1. Simple SIMD Programmin

On a SIMD simulator, implement and time each of these
a. Find sums of columns of a matrix
b. Find the sum of a vector
c. Find the running sum of a vector:
int j, a[N];  for(j=1;j<N;j++) a[j] = a[j] + a[j-1];

Lab 2. Video

On SIMD hardware, rapidly fill a graphics frame buffer with an interesting fill pattern.

Lab 3.  Sorting

Write a sort program that makes use of a SIMD machine.

Lab 4. 2D Image processing

Implement sharpen, blur and emboss image processing operations on a SIMD machine.  All of these are variations on convolution. 

Lab 5.  Machine vision

Find a bitmap of an object in a frame buffer.  Make allowances for inexact matches.  Don't worry about rotation and scaling for this assignment.

Lab 6. Find a Bug

Find a bug in your instructors code, fix it, and prepare a test case that verifies correct operation.

Lab 7. Invent a SIMD Architectural Feature

Invent a SIMD architectural feature and calculate its performance advantage on an application of your choice.  

Lab 8. Shared Memory MIMD Parallel Programming

Write a sort program that makes use of shared memory.

See Paul for accounts on the 6-processor Sunfire 880.

Of course, with the permission of your instructor, you can work on a harder problem.

Lab 9. Distributed MIMD Programming

Write a sort program that makes use of multiple processors connected by a network.

See your instructor for accounts.  More information on hardware and MPI is available from:
http://www.ualberta.ca/CNS/RESEARCH/FarmRack/mainRACK.html

Of course, with the permission of your instructor, you can work on a harder problem.