Previous | Next --- Slide 5 of 62
Back to Lecture Thumbnails
joshcho

Are there algorithms that analyze the work to dispatch either static or dynamic assignment? Is such overhead worth it?

joshcho

(As in, are there real world systems that use such an approach?)

cassiez

For this task, although each row in the graph has varying computation cost & work load (i.e. a row with more bright pixels are more costly to work out), static assignment of rows to tasks in interleaving fashion like in the rightmost image is a good approach and shows good performance because we know some statistics about the work to be done - nearby rows have similar work load (locality), so assigning rows to tasks in interleaving fashion makes the average work load of each task similar.

qwerty

The first image is badly load balanced because the middle chunk of the image is more bright, so there is more work to do. This results in there being unequal amounts of work per thread. In our assignment, we timed each thread to compare the amount of work between them. One solution to improving load balanced is to reduce the amount of rows given in regions of the image with more bright pixels (image 2). However, the most robust solution is image 3, because even if this image was replaced by another image, it would likely still be consistent in how it distributes the workload amongst the threads.

ggomezm

I really enjoyed using Mandelbrot set for this assignment as it is easy to visualize how the work is distributed and how some tasks are doing more work than others.

Please log in to leave a comment.