Ignore:
Timestamp:
09/28/18 16:32:55 (6 years ago)
Author:
Hal Finkel <hfinkel@…>
Branches:
master, pympi
Children:
e6aa0eb
Parents:
abca157
git-author:
Hal Finkel <hfinkel@…> (09/28/18 16:32:55)
git-committer:
Hal Finkel <hfinkel@…> (09/28/18 16:32:55)
Message:

importing new SZ files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • thirdparty/SZ/sz/src/sz.c

    r2c47b73 r9ee2ce3  
    2323#include "Huffman.h" 
    2424#include "conf.h" 
     25#include "utility.h" 
    2526//#include "CurveFillingCompressStorage.h" 
    2627 
     
    3637 
    3738sz_exedata *exe_params = NULL; 
     39 
     40int sz_with_regression = SZ_WITH_LINEAR_REGRESSION; //SZ_NO_REGRESSION 
    3841 
    3942/*following global variables are desgined for time-series based compression*/ 
     
    7073int SZ_Init_Params(sz_params *params) 
    7174{ 
    72         int x = 1; 
    73         char *y = (char*)&x; 
    74         int endianType = BIG_ENDIAN_SYSTEM; 
    75         if(*y==1) endianType = LITTLE_ENDIAN_SYSTEM; 
    76  
    77         sysEndianType = endianType; 
    78         exe_params->SZ_SIZE_TYPE = sizeof(size_t); 
    79  
    80         // set default values 
    81         if(params->max_quant_intervals > 0)  
     75        SZ_Init(NULL); 
     76 
     77        if(params->losslessCompressor!=GZIP_COMPRESSOR && params->losslessCompressor!=ZSTD_COMPRESSOR) 
     78                params->losslessCompressor = ZSTD_COMPRESSOR; 
     79 
     80        if(params->max_quant_intervals > 0) 
    8281                params->maxRangeRadius = params->max_quant_intervals/2; 
    83         else 
    84                 params->max_quant_intervals = params->maxRangeRadius*2; 
    85  
    86         exe_params->intvCapacity = params->maxRangeRadius*2; 
    87         exe_params->intvRadius = params->maxRangeRadius; 
    88  
    89         if(params->quantization_intervals>0) 
    90         { 
    91                 updateQuantizationInfo(params->quantization_intervals); 
    92                 exe_params->optQuantMode = 0; 
    93         } 
    94         else 
    95                 exe_params->optQuantMode = 1; 
    96  
     82                 
     83        memcpy(confparams_cpr, params, sizeof(sz_params)); 
    9784 
    9885        if(params->quantization_intervals%2!=0) 
     
    10188                return SZ_NSCS; 
    10289        } 
    103  
    104         confparams_cpr = (sz_params*)malloc(sizeof(sz_params)); 
    105         memcpy(confparams_cpr, params, sizeof(sz_params));       
    10690 
    10791        return SZ_SCES; 
     
    536520        //confparams_dec->szMode = (sameRByte & 0x06)>>1; 
    537521        isLossless = (sameRByte & 0x10)>>4; 
     522         
     523        int isRandomAccess = (sameRByte >> 7) & 0x01; 
     524         
     525        if(exe_params==NULL) 
     526        { 
     527                exe_params = (sz_exedata *)malloc(sizeof(struct sz_exedata)); 
     528                memset(exe_params, 0, sizeof(struct sz_exedata)); 
     529        } 
    538530        exe_params->SZ_SIZE_TYPE = ((sameRByte & 0x40)>>6)==1?8:4; 
    539531         
     
    548540        dataSeriesLength = bytesToSize(&(bytes[index]));// 4 or 8        
    549541        index += exe_params->SZ_SIZE_TYPE; 
    550         index += 4; //max_quant_intervals 
    551          
     542        //index += 4; //max_quant_intervals 
     543 
    552544        sz_metadata* metadata = (sz_metadata*)malloc(sizeof(struct sz_metadata)); 
    553545         
     
    565557        if(isConstant==0 && isLossless==0) 
    566558        { 
    567                 int radExpoL = 0, segmentL = 0, pwrErrBoundBytesL = 0; 
    568                 if(metadata->conf_params->errorBoundMode >= PW_REL) 
     559                if(isRandomAccess==1) 
    569560                { 
    570                         radExpoL = 1; 
    571                         segmentL = exe_params->SZ_SIZE_TYPE; 
    572                         pwrErrBoundBytesL = 4; 
     561                        unsigned char* raBytes = &(bytes[index]); 
     562                        defactoNBBins = bytesToInt_bigEndian(raBytes + sizeof(int) + sizeof(double)); 
    573563                } 
    574                  
    575                 int offset_typearray = 3 + 1 + MetaDataByteLength + exe_params->SZ_SIZE_TYPE + 4 + radExpoL + segmentL + pwrErrBoundBytesL + 4 + 4 + 1 + 8  
    576                                 + exe_params->SZ_SIZE_TYPE + exe_params->SZ_SIZE_TYPE + exe_params->SZ_SIZE_TYPE; 
    577                 size_t nodeCount = bytesToInt_bigEndian(bytes+offset_typearray); 
    578                 defactoNBBins = (nodeCount+1)/2; 
    579         } 
     564                else 
     565                { 
     566                        int radExpoL = 0, segmentL = 0, pwrErrBoundBytesL = 0; 
     567                        if(metadata->conf_params->errorBoundMode >= PW_REL) 
     568                        { 
     569                                radExpoL = 1; 
     570                                segmentL = exe_params->SZ_SIZE_TYPE; 
     571                                pwrErrBoundBytesL = 4; 
     572                        } 
     573                         
     574                        int offset_typearray = 3 + 1 + MetaDataByteLength + exe_params->SZ_SIZE_TYPE + 4 + radExpoL + segmentL + pwrErrBoundBytesL + 4 + (4 + params->dataType*4) + 1 + 8  
     575                                        + exe_params->SZ_SIZE_TYPE + exe_params->SZ_SIZE_TYPE + exe_params->SZ_SIZE_TYPE + 4; 
     576                        defactoNBBins = bytesToInt_bigEndian(bytes+offset_typearray);                    
     577                } 
     578 
     579        }        
    580580         
    581581        metadata->defactoNBBins = defactoNBBins; 
     
    778778        } 
    779779        return totalSize; 
    780 } 
    781  
    782 int isZlibFormat(unsigned char magic1, unsigned char magic2) 
    783 { 
    784         if(magic1==104&&magic2==5) //DC+BS 
    785                 return 1; 
    786         if(magic1==104&&magic2==129) //DC+DC 
    787                 return 1; 
    788         if(magic1==104&&magic2==222) //DC+BC 
    789                 return 1; 
    790         if(magic1==120&&magic2==1) //BC+BS 
    791                 return 1; 
    792         if(magic1==120&&magic2==156) //BC+DC 
    793                 return 1; 
    794         if(magic1==120&&magic2==218) //BC+BS 
    795                 return 1; 
    796         return 0; 
    797780} 
    798781 
Note: See TracChangeset for help on using the changeset viewer.