CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡Lossless ¡ ¡ ¡GPGPUs ¡ Data ¡ ¡Comp mpression ¡ ¡on ¡ Adnan ¡Ozsoy ¡ ¡ School ¡of ¡Informa-cs ¡and ¡Compu-ng ¡ Indiana ¡University, ¡Bloomington, ¡USA ¡ ¡ Hace>epe ¡University, ¡TURKEY ¡ 1 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs "If you were plowing a field, which would you rather use: Two strong oxen or 1024 chickens?" ¡ ¡ ¡ ¡ Seymour Cray, Father of the Supercomputer 2 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Era ¡of ¡heterogeneous ¡compu-ng ¡ • General ¡Purpose ¡Graphics ¡Processing ¡Units ¡(GPGPUs) ¡ • CPU ¡/ ¡GPU ¡ • World’s ¡fastest ¡supercomputers ¡ • TITAN, ¡Tianhe-‑1A, ¡Nebulae, ¡Tsubame ¡2.0, ¡…etc. ¡ 3 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • General ¡Purpose ¡Graphic ¡Processing ¡Units ¡in ¡HPC ¡ • The ¡common ¡paralleliza-on ¡approach ¡applied ¡ ¡ • Parallelize ¡the ¡best ¡known ¡sequen-al ¡algorithm ¡ • Op-mize ¡for ¡GPUs. ¡ ¡ • Problem : ¡ ¡ • Solu-ons ¡only ¡limited ¡to ¡a ¡single ¡applica-on ¡ • Directly ¡apply ¡CPU ¡solu-on ¡to ¡GPU ¡ • Not ¡fully ¡u-lize ¡the ¡resources ¡on ¡a ¡GPU. ¡ • GPU ¡has ¡different ¡architecture ¡than ¡CPU ¡ 4 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Problem : ¡ ¡ • Scaling ¡data ¡usage ¡in ¡applica-ons ¡with ¡ BIG ¡data ¡ • Reduce ¡storage ¡requirements ¡ • Improve ¡data ¡communica-on ¡performance ¡ • Data ¡compression ¡ ¡ • Trade ¡off ¡in ¡increasing ¡running ¡-me ¡ • GPGPUs ¡ • Solu6on : ¡ • CULZSS ¡-‑ ¡Parallel ¡Streaming ¡Compression ¡on ¡GPGPUs ¡ • Lempel-‑Ziv-‑Storer-‑Szymanski ¡(LZSS) ¡Algorithm ¡ • CULZSS-‑Bit ¡– ¡Improvement ¡over ¡the ¡algorithm ¡ ¡ 5 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Lempel-‑Ziv-‑Storer-‑Szymanski ¡(LZSS) ¡Algorithm ¡ • A ¡variant ¡of ¡LZ77 ¡ ¡ ¡ • Dic-onary ¡encoding ¡ ¡ • Sliding ¡history ¡buffer ¡ • Uncoded ¡lookahead ¡buffer ¡ • Visited ¡and ¡ ¡upcoming ¡data ¡ • Finding ¡the ¡max ¡substring ¡match ¡ 6 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • LZSS ¡Algorithm ¡ • 2 ¡stages ¡– ¡Matching ¡and ¡Encoding ¡ • Example: ¡ ¡ 7 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • LZSS ¡Algorithm ¡ Finding ¡matching ¡informa-on ¡ a ¡b ¡c ¡a ¡b ¡d ¡a ¡a ¡b ¡d ¡a ¡b ¡c ¡d ¡d ¡– ¡a ¡b ¡c ¡d ¡e ¡... ¡ ¡ 8 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • LZSS ¡Algorithm ¡ Finding ¡matching ¡informa-on ¡ a ¡b ¡c ¡a ¡b ¡d ¡a ¡a ¡b ¡d ¡a ¡b ¡c ¡d ¡d ¡– ¡a ¡b ¡c ¡d ¡e ¡.. ¡ 0 ¡1 ¡2 ¡3 ¡4 ¡5 ¡6 ¡7 ¡8 ¡9 ¡10 ¡… ¡ ¡ ¡ ¡ ¡ ¡4 ¡match ¡– ¡posi-on ¡10 ¡ 9 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • LZSS ¡Algorithm ¡ Encoding ¡informa-on ¡ a ¡b ¡c ¡a ¡b ¡d ¡a ¡a ¡b ¡d ¡a ¡b ¡c ¡d ¡d ¡– ¡a ¡b ¡c ¡d ¡e ¡.. ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡(4,10) ¡ ¡ à ¡ ¡write ¡to ¡file ¡ b ¡d ¡a ¡a ¡b ¡d ¡a ¡b ¡c ¡d ¡d ¡a ¡b ¡c ¡d ¡– ¡e ¡.. ¡ ¡ 10 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Observa-ons ¡on ¡Longest ¡Prefix ¡Match ¡ Longest ¡Prefix ¡matching ¡ a ¡b ¡c ¡a ¡b ¡d ¡a ¡a ¡b ¡c... ¡ a ¡b ¡c ¡a ¡b ¡d ¡a ¡a ¡b ¡c... ¡ a ¡b ¡a ¡ ¡ ¡ a ¡ b ¡ c ¡ a ¡ b ¡ d ¡ a ¡ a ¡ b ¡ c ¡ a ¡ 1 ¡ 0 ¡ 0 ¡ 1 ¡ 0 ¡ 0 ¡ 1 ¡ 1 ¡ 0 ¡ 0 ¡ b ¡ 0 ¡ 1 ¡ 0 ¡ 0 ¡ 1 ¡ 0 ¡ 0 ¡ 0 ¡ 1 ¡ 0 ¡ a ¡ 1 ¡ 0 ¡ 0 ¡ 1 ¡ 0 ¡ 0 ¡ 1 ¡ 1 ¡ 0 ¡ 0 ¡ 11 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Observa-ons ¡on ¡LPM ¡ • Matching ¡informa-on ¡of ¡every ¡element ¡required ¡ ¡ • Binary ¡matrix ¡ ¡ ¡ a ¡ b ¡ c ¡ a ¡ b ¡ d ¡ a ¡ a ¡ b ¡ c ¡ a ¡ 1 ¡ 0 ¡ 0 ¡ 1 ¡ 0 ¡ 0 ¡ 1 ¡ 1 ¡ 0 ¡ 0 ¡ b ¡ 0 ¡ 1 ¡ 0 ¡ 0 ¡ 1 ¡ 0 ¡ 0 ¡ 0 ¡ 1 ¡ 0 ¡ a ¡ 1 ¡ 0 ¡ 0 ¡ 1 ¡ 0 ¡ 0 ¡ 1 ¡ 1 ¡ 0 ¡ 0 ¡ 12 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Observa-ons ¡on ¡LPM ¡ • Core ¡regular ¡problem ¡ • Matching ¡informa-on ¡of ¡every ¡element ¡required ¡ ¡ • Binary ¡matrix ¡ Word ¡Size ¡ • Bit ¡parallelism ¡ • Bits ¡packed ¡into ¡a ¡word ¡ a ¡ ¡1001001.. ¡ • Using ¡bit ¡opera-ons ¡on ¡words ¡ ¡ a ¡ ¡ ¡1001001.. ¡ ¡ ¡ ¡ ¡ ¡abcabda.. ¡ 13 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Observa-ons ¡on ¡LPM ¡ • Matching ¡informa-on ¡of ¡every ¡element ¡required ¡ ¡ • Binary ¡matrix ¡ • Bit ¡parallelism ¡ • Pre-‑compute ¡matching ¡data ¡for ¡given ¡query ¡string ¡ • Alphabet-‑strings ¡ ¡ ¡ char ¡a ¡ char ¡b ¡ char ¡c ¡ char ¡d ¡ a ¡ 1 ¡ 0 ¡ 0 ¡ 0 ¡ b ¡ 0 ¡ 1 ¡ 0 ¡ 0 ¡ a ¡ 1 ¡ 0 ¡ 0 ¡ 0 ¡ 14 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Bit ¡Vector ¡Approach ¡ • Matching ¡informa-on ¡of ¡every ¡element ¡required ¡ ¡ • Binary ¡matrix ¡ • Bit ¡parallelism ¡ • Pre-‑compute ¡matching ¡data ¡for ¡given ¡query ¡string ¡ • Alphabet-‑strings ¡ • Combining ¡all ¡of ¡these ¡ à ¡Bit-‑Vector ¡Approach ¡ 15 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Bit ¡Vector ¡Approach ¡ • Very ¡Suitable ¡GPGPU ¡ ¡ • Less ¡code ¡divergence ¡ • Reuse ¡of ¡data ¡– ¡fast ¡lookup ¡memory ¡ 16 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Shij-‑Or ¡Algorithm ¡(Exact ¡Matching) ¡ 17 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Shij-‑Or ¡ 18 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Bit-‑vector ¡Longest ¡Prefix ¡Match ¡ 19 ¡
CULZSS-‑ -‑Bit: ¡ ¡A ¡ ¡Bit-‑ -‑Vector ¡ ¡Algorithm ¡ m ¡for ¡ ¡ ¡ ¡ Lossless ¡ ¡Data ¡ ¡Comp mpression ¡ ¡on ¡ ¡GPGPUs • Bit-‑vector ¡Longest ¡Prefix ¡Match ¡ 20 ¡
Recommend
More recommend