Ignore:
Timestamp:
Aug 10, 2018, 3:07:59 AM (11 months ago)
Author:
xwa163
Message:

lz4_grep: some bug fixing and refactor

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/lz4/lz4_base_generator.cpp

    r6137 r6143  
    1313#include <kernels/lz4/decompression/lz4_twist_decompression.h>
    1414#include <kernels/lz4/decompression/lz4_bitstream_decompression.h>
    15 #include <kernels/lz4/decompression/lz4_parallel_bytestream_decompression.h>
    1615
    1716
     
    132131
    133132    StreamSetBuffer * const decompressionBitStream = mPxDriver.addBuffer<StaticBuffer>(b, b->getStreamSetTy(8, 1),
    134                                                                                        this->getDefaultBufferBlocks());
     133                                                                                       this->getDefaultBufferBlocks(), 1);
    135134
    136135    Kernel * unSwizzleK2 = mPxDriver.addKernelInstance<SwizzleGenerator>(b, 8, 1, 2);
     
    147146}
    148147
    149 parabix::StreamSetBuffer *LZ4BaseGenerator::parallelByteStreamDecompression(
    150         parabix::StreamSetBuffer *compressedByteStream,
    151         bool enableGather, bool enableScatter,
    152         int minParallelLevel) {
    153     auto & iBuilder = mPxDriver.getBuilder();
    154     LZ4BlockInfo blockInfo = this->getBlockInfo(compressedByteStream);
    155     StreamSetBuffer *const decompressionByteStream
    156             = mPxDriver.addBuffer<StaticBuffer>(iBuilder,
    157                                                 iBuilder->getStreamSetTy(1, 8),
    158                                                 this->getDefaultBufferBlocks(), 1);
    159 
    160     Kernel *lz4AioK
    161             = mPxDriver.addKernelInstance<LZ4ParallelByteStreamDecompressionKernel>(iBuilder, mLz4BlockSize,
    162                                                                                     enableGather, enableScatter,
    163                                                                                     minParallelLevel);
    164     lz4AioK->setInitialArguments({mFileSize});
    165     mPxDriver.makeKernelCall(
    166             lz4AioK,
    167             {
    168                     compressedByteStream,
    169 
    170                     blockInfo.isCompress,
    171                     blockInfo.blockStart,
    172                     blockInfo.blockEnd
    173             }, {
    174                     decompressionByteStream
    175             });
    176 
    177     return decompressionByteStream;
    178 }
    179 
    180148std::vector<StreamSetBuffer*> LZ4BaseGenerator::convertCompressedBitsStreamWithBitStreamAioApproach(
    181149        parabix::StreamSetBuffer* compressedByteStream,
     
    185153
    186154    LZ4BlockInfo blockInfo = this->getBlockInfo(compressedByteStream);
    187 
    188     unsigned numOfStreams = compressedBitStreams[0]->getNumOfStreams();
    189 
    190     // 1, 2, 4, 8
    191 
    192     if (numOfStreams <= 2) {
    193         StreamSetBuffer* twistedCharClasses = mPxDriver.addBuffer<StaticBuffer>(b, b->getStreamSetTy(1, 2),
    194                                                                                    this->getDefaultBufferBlocks());
    195         kernel::Kernel* twistK = mPxDriver.addKernelInstance<kernel::TwistByPDEPKernel>(b, numOfStreams, 2);
    196         mPxDriver.makeKernelCall(twistK, {compressedBitStreams[0]}, {twistedCharClasses});
    197 
    198         StreamSetBuffer* uncompressedTwistedCharClasses = mPxDriver.addBuffer<StaticBuffer>(b, b->getStreamSetTy(1, 2),
    199                                                                                                this->getDefaultBufferBlocks());
    200         Kernel* lz4I4AioK = mPxDriver.addKernelInstance<LZ4TwistDecompressionKernel>(b, 2);
    201         lz4I4AioK->setInitialArguments({mFileSize});
    202         mPxDriver.makeKernelCall(lz4I4AioK, {
    203                 compressedByteStream,
    204 
    205                 blockInfo.isCompress,
    206                 blockInfo.blockStart,
    207                 blockInfo.blockEnd,
    208 
    209                 twistedCharClasses
    210         }, {
    211                                             uncompressedTwistedCharClasses
    212                                     });
    213 
    214         StreamSetBuffer* untwistedCharClasses = mPxDriver.addBuffer<StaticBuffer>(b, b->getStreamSetTy(numOfStreams),
    215                                                                                      this->getDefaultBufferBlocks());
    216         kernel::Kernel* untwistK = mPxDriver.addKernelInstance<kernel::UntwistByPEXTKernel>(b, numOfStreams, 2);
    217         mPxDriver.makeKernelCall(untwistK, {uncompressedTwistedCharClasses}, {untwistedCharClasses});
    218         return {untwistedCharClasses};
    219     }
    220 
    221     if (numOfStreams <= 4) {
    222         StreamSetBuffer* twistedCharClasses = mPxDriver.addBuffer<StaticBuffer>(b, b->getStreamSetTy(1, 4),
    223                                                                                    this->getDefaultBufferBlocks());
    224         kernel::Kernel* twistK = mPxDriver.addKernelInstance<kernel::TwistByPDEPKernel>(b, numOfStreams, 4);
    225         mPxDriver.makeKernelCall(twistK, {compressedBitStreams[0]}, {twistedCharClasses});
    226 
    227 
    228         StreamSetBuffer* uncompressedTwistedCharClasses = mPxDriver.addBuffer<StaticBuffer>(b, b->getStreamSetTy(1, 4),
    229                                                                                                this->getDefaultBufferBlocks());
    230 
    231         Kernel* lz4I4AioK = mPxDriver.addKernelInstance<LZ4TwistDecompressionKernel>(b, 4);
    232         lz4I4AioK->setInitialArguments({mFileSize});
    233         mPxDriver.makeKernelCall(lz4I4AioK, {
    234                 compressedByteStream,
    235 
    236                 blockInfo.isCompress,
    237                 blockInfo.blockStart,
    238                 blockInfo.blockEnd,
    239 
    240                 twistedCharClasses
    241         }, {
    242                                             uncompressedTwistedCharClasses
    243                                     });
    244 
    245         StreamSetBuffer* untwistedCharClasses = mPxDriver.addBuffer<StaticBuffer>(b, b->getStreamSetTy(numOfStreams),
    246                                                                                      this->getDefaultBufferBlocks());
    247         kernel::Kernel* untwistK = mPxDriver.addKernelInstance<kernel::UntwistByPEXTKernel>(b, numOfStreams, 4);
    248         mPxDriver.makeKernelCall(untwistK, {uncompressedTwistedCharClasses}, {untwistedCharClasses});
    249         return {untwistedCharClasses};
    250     }
    251155
    252156    std::vector<StreamSetBuffer *> inputStreams = {
     
    266170        inputStreams.push_back(compressedBitStreams[i]);
    267171        outputStream.push_back(mPxDriver.addBuffer<StaticBuffer>(b, b->getStreamSetTy(numOfStreams, 1),
    268                                                                  this->getDefaultBufferBlocks()));
     172                                                                 this->getDefaultBufferBlocks(), 1));
    269173    }
    270174
Note: See TracChangeset for help on using the changeset viewer.