Algorithms for Compression on GPUs Anders L. V. Nicolaisen, s112346 Tecnical University of Denmark DTU Compute Supervisors: Inge Li Gørtz & Philip Bille Kongens Lyngby , August 2013 CSE-M.Sc.-2013-93 Technical University of Denmark DTU Compute Building 321, DK-2800 Kongens Lyngby, Denmark Phone +45 45253351, Fax +45 45882673
[email protected] www.compute.dtu.dk CSE-M.Sc.-2013 Abstract This project seeks to produce an algorithm for fast lossless compression of data. This is attempted by utilisation of the highly parallel graphic processor units (GPU), which has been made easier to use in the last decade through simpler access. Especially nVidia has accomplished to provide simpler programming of GPUs with their CUDA architecture. I present 4 techniques, each of which can be used to improve on existing algorithms for compression. I select the best of these through testing, and combine them into one final solution, that utilises CUDA to highly reduce the time needed to compress a file or stream of data. Lastly I compare the final solution to a simpler sequential version of the same algorithm for CPU along with another solution for the GPU. Results show an 60 time increase of throughput for some files in comparison with the sequential algorithm, and as much as a 7 time increase compared to the other GPU solution. i ii Resumé Dette projekt søger en algoritme for hurtig komprimering af data uden tab af information. Dette forsøges gjort ved hjælp af de kraftigt parallelisérbare grafikkort (GPU), som inden for det sidste årti har åbnet op for deres udnyt- telse gennem simplere adgang.