Parallelizing an Image Compression Toolbox MSE Project Final Presentation Hadassa Baker
Topics of Discussion Introduction Action Items Design Review Test Setting Test Results Project Evaluation Conclusion
Introduction Objective To rewrite a sequential wavelet image compression program into a parallel program in an effort to improve execution speed The Image compression toolbox Console program Compresses a RAW or a grayscale Tiff image file and writes out a compressed file Decompresses a compressed file and writes out a RAW or grayscale Tiff image file
Introduction Both the sequential program and the parallel program are written in C++ The Zthread library is used for multithreading the parallel program
Action Items Add LTL properties to the formal specification Vertical transformation can start on a section before horizontal transformation in all sections is complete [] ( q U r) #define q (V[1] == 0) #define r (H[1] == WIDTH)
Action Item Add a discussion in the Test Plan document why the planned test is sufficient.
Design Review The following four processes take place in the compression process Wavelet Transformation Optimal bit allocation Quantization Entropy encoding File I/O and the entropy encoding processes are not parallelized
Test Setting Test Environment Linux shared memory multiprocessor machine A quad PII-450 Linux machine located in the CIS department was used Test Image files Lena.raw (Width = 512, Height = 512) 1920x1080.raw (Width = 1920, Height =1080)
Test Setting Execution time was measured for compressing the test images The same test was performed on the parallel and sequential programs
Test Results Unexpected Results The execution time for the sequential program was shorter than the execution time for the parallel program As the number of threads/workers was increased in the parallel program the execution time became longer
Test Results for Lena.raw
Test Results for 1920x1080.raw
Test Results Test was repeated without the wavelet transformation process, which yielded the expected results. In the wavelet transformation process data is shared between threads, which operation must be garded with mutex. That may have resulted in unexpected delays.
Test Results Lena.raw without wavelet transformation
Test Results 1920x1080.raw without wavelet transform
Project Evaluation Lesson Learnt Formal verification of the architecture design using a tool like spin is beneficial to help prevent implementation errors that are difficult to debug If the goal is improving execution speed, avoid much data sharing between threads
Conclusion The objective of improving execution speed using parallel programming has been achieved The Zthread library makes multithreaded program easier to write in C++ A great learning experience for me.