Tömörítési algoritmusok GPU megvalósításának vizsgálata

OData támogatás
Konzulens:
Szántó Péter
Méréstechnika és Információs Rendszerek Tanszék

Diplomatervemben először röviden áttekintettem a manapság általános célú számítások végzésére széles körben használt NVIDIA GPU architektúrák alapvető tulajdonságait, úgy, mint a GPU általános felépítése, a streaming multiprocesszorok felépítése, a CUDA szálhierarchia, és a CUDA memóriahierarchia. Megvizsgáltam két a PC-s környezetben széles körűen használt tömörítő szoftver algoritmusait teljesítmény szempontjából, az LZSS, DEFLATE, LZMA, és BZIP2 algoritmusokat, valamint egy olyan speciális algoritmust, amely hangfájlok veszteségmentes tömörítését végzi, a FLAC enkódert. Az algoritmusokon a CUDA implementáció viszonyait vizsgáltam meg a szótárméret drasztikus csökkentésével, illetve a fájl 10, 100, 1000, és 10000 darabra osztásával. A kapcsolódó irodalomban megvizsgáltam az LZSS tömörítési algoritmus kétféle GPU megvalósítását, és ezek tulajdonságait, és tömörítési eredményeiket összehasonlítva a DEFLATE és a BZIP2 algoritmusokkal. Elsőként implementáltam egy kizárólag globális memóriát használó CUDA LZSS kernelt, de mivel ez nem váltotta be a hozzá fűzött reményeket, ezért a GZIP-ben használt DEFLATE algoritmus implementációjával foglalkoztam a továbbiakban. Bemutattam a PC-n használatos DEFLATE lépéseinek általam megtett egyszerűsítéseit, valamint az egyes lépések CUDA gyorsításának lehetőségeit. A kernelek futási idő, és tömörítési hatékonyság eredményeit összehasonlítottam a 7-Zip DEFLATE algoritmusának eredményeivel.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.