Skip to content

Commit e7f42be

Browse files
committed
v3.1.0
1 parent 7b8b955 commit e7f42be

File tree

2 files changed

+20
-24
lines changed

2 files changed

+20
-24
lines changed

include/SZ3/api/impl/szInterp.hpp

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,8 @@ T *SZ_decompress_Interp_N(const SZ::Config &conf, char *cmpData, size_t cmpSize)
5454

5555

5656
template<class T, uint N>
57-
double do_not_use_this_interp_compress_block_test(T *data, std::vector<size_t> dims, size_t num, double eb, int interp_level,
58-
int interp_op, int direction_op,
59-
int block_size, int interp_block_size) {
57+
double do_not_use_this_interp_compress_block_test(T *data, std::vector<size_t> dims, size_t num,
58+
double eb, int interp_op, int direction_op, int block_size) {
6059

6160
// std::cout << "****************** Interp Compression ****************" << std::endl;
6261
// std::cout << "Interp Op = " << interp_op << std::endl
@@ -82,7 +81,7 @@ double do_not_use_this_interp_compress_block_test(T *data, std::vector<size_t> d
8281
SZ::Lossless_zstd(),
8382
interp_op,
8483
direction_op,
85-
interp_level
84+
-1
8685
);
8786

8887
auto cmpData = sz.compress(data1.data(), compressed_size);
@@ -137,31 +136,27 @@ char *SZ_compress_Interp_lorenzo_N(SZ::Config &conf, T *data, size_t &outSize) {
137136
// printf("Lorenzo ratio = %.2f\n", ratio);
138137

139138
double best_lorenzo_ratio = ratio, best_interp_ratio = 0;
140-
int interp_level = -1, interp_op, direction_op = 0, block_size = sampling_block, interp_block_size = sampling_block;
141139

142140
{
143141
//tune interp
144-
for (int i = 0; i < 2; i++) {
142+
for (int interp_op = 0; interp_op < 2; interp_op++) {
145143
ratio = do_not_use_this_interp_compress_block_test<T, N>(sampling_data.data(), sample_dims, sampling_num, conf.absErrorBound,
146-
interp_level,
147-
i, direction_op,
148-
block_size, interp_block_size);
144+
interp_op, conf.interp_direction_op, sampling_block);
149145
if (ratio > best_interp_ratio) {
150146
best_interp_ratio = ratio;
151-
interp_op = i;
147+
conf.interp_op = interp_op;
152148
}
153149
}
154-
std::cout << "interp select interp_op = " << interp_op << " , ratio = " << best_interp_ratio << std::endl;
150+
std::cout << "interp select interp_op = " << conf.interp_op << std::endl;
155151

156-
ratio = do_not_use_this_interp_compress_block_test<T, N>(sampling_data.data(), sample_dims, sampling_num, conf.absErrorBound, interp_level,
157-
interp_op, 5,
158-
block_size, interp_block_size);
152+
int direction_op = SZ::factorial(N) - 1;
153+
ratio = do_not_use_this_interp_compress_block_test<T, N>(sampling_data.data(), sample_dims, sampling_num, conf.absErrorBound,
154+
conf.interp_op, direction_op, sampling_block);
159155
if (ratio > best_interp_ratio * 1.02) {
160156
best_interp_ratio = ratio;
161-
direction_op = 5;
157+
conf.interp_direction_op = direction_op;
162158
}
163-
std::cout << "interp select direction_op = " << direction_op << " , ratio = " << best_interp_ratio
164-
<< std::endl;
159+
std::cout << "interp select direction_op = " << conf.interp_direction_op << std::endl;
165160
}
166161

167162
bool useInterp = !(best_lorenzo_ratio > best_interp_ratio && best_lorenzo_ratio < 80 && best_interp_ratio < 80);
@@ -171,12 +166,9 @@ char *SZ_compress_Interp_lorenzo_N(SZ::Config &conf, T *data, size_t &outSize) {
171166

172167
if (useInterp) {
173168
conf.cmprMethod = METHOD_INTERP;
174-
conf.interp_op = interp_op;
175-
conf.interp_direction_op = direction_op;
176169
double tuning_time = timer.stop();
177170
// std::cout << "Tuning time = " << tuning_time << "s" << std::endl;
178-
std::cout << "====================================== END TUNING ======================================"
179-
<< std::endl << std::endl;
171+
std::cout << "====================================== END TUNING ======================================" << std::endl;
180172
return SZ_compress_Interp_N<T, N>(conf, data, outSize);
181173
} else {
182174
//further tune lorenzo
@@ -211,8 +203,7 @@ char *SZ_compress_Interp_lorenzo_N(SZ::Config &conf, T *data, size_t &outSize) {
211203
conf = lorenzo_config;
212204
double tuning_time = timer.stop();
213205
// std::cout << "Tuning time = " << tuning_time << "s" << std::endl;
214-
std::cout << "====================================== END TUNING ======================================"
215-
<< std::endl << std::endl;
206+
std::cout << "====================================== END TUNING ======================================" << std::endl;
216207
return SZ_compress_LorenzoReg_N<T, N>(conf, data, outSize);
217208
}
218209

include/SZ3/utils/Statistic.hpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#ifndef SZ_STATISTIC_HPP
66
#define SZ_STATISTIC_HPP
7+
78
#include "Config.hpp"
89

910
namespace SZ {
@@ -18,6 +19,10 @@ namespace SZ {
1819
return max - min;
1920
}
2021

22+
int factorial(int n) {
23+
return (n == 0) || (n == 1) ? 1 : n * factorial(n - 1);
24+
}
25+
2126
template<class T>
2227
void calAbsErrorBound(SZ::Config &conf, T *data) {
2328
if (conf.errorBoundMode != ABS) {
@@ -111,7 +116,7 @@ namespace SZ {
111116
printf("Max relative error = %.2G\n", diffMax / (Max - Min));
112117
printf("Max pw relative error = %.2G\n", maxpw_relerr);
113118
printf("PSNR = %f, NRMSE= %.10G\n", psnr, nrmse);
114-
printf ("normError = %f, normErr_norm = %f\n", normErr, normErr_norm);
119+
printf("normError = %f, normErr_norm = %f\n", normErr, normErr_norm);
115120
printf("acEff=%f\n", acEff);
116121
// printf("errAutoCorr=%.10f\n", autocorrelation1DLag1<double>(diff, num_elements, diff_sum / num_elements));
117122
free(diff);

0 commit comments

Comments
 (0)