|
1 | 1 | # CvxCompres library |
2 | | -This CvxCompress was originally authored by Thor Johnsen. |
| 2 | +This CvxCompress was originally authored by Thor Johnsen, based on an implementation by Ray Ergas. |
| 3 | +For more information here are references to that earlier work. |
| 4 | + |
| 5 | +``` |
| 6 | +Ergas, R.A., "Wavelet Transform Techniques for Seismic Data Compression and Denoising," Society of Exploration Geophysicists Annual Meeting, 1995. |
| 7 | +
|
| 8 | +Ergas, R.A., Donoho, P.L., and Villasenor, J.D., "Multiresolution Analysis for Seismic Data Compression Using Wavelets," IEEE Transactions on Signal Processing, 1995. |
| 9 | +
|
| 10 | +Ergas, R.A., "Seismic data compression--A key technology for the future", Society of Exploration Geophysicists Annual Meeting, 1996. |
| 11 | +https://library.seg.org/doi/pdf/10.1190/1.1826518 |
| 12 | +``` |
3 | 13 |
|
4 | 14 | # Building |
| 15 | + |
5 | 16 | ## GCC |
6 | 17 |
|
7 | | -It is believed that this will work with a wide variety of gcc |
8 | | -versions, but as I am writing this I have only tested it with gcc 7.30 and gcc 9.3.0. |
| 18 | +It is believed that this will work any reasonably modern gcc version. |
9 | 19 |
|
10 | 20 | ## Tests |
11 | 21 |
|
12 | | -There are several tests included, some of which depends on binary |
13 | | -cubes of input need to exist at some absolute path which is no longer |
14 | | -present. Thus, here I describe only the ones that require no input file. |
| 22 | +There are two test sets included, below is the command line to run and the output. |
15 | 23 |
|
16 | 24 | ``` |
17 | 25 | Prompt> ( setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${cwd} ; ./CvxCompress_Test ) |
18 | 26 | * |
19 | | -* CvxCompress module tests (ICC1900, AVX). |
| 27 | +* CvxCompress module tests (GCC13.2, AVX). |
20 | 28 | * |
21 | 29 |
|
22 | | -2. Verify correctness of forward wavelet transform...[Passed] |
23 | | -3. Verify correctness of inverse wavelet transform...[Passed] |
| 30 | +2. Verify correctness of forward wavelet transform...[Passed!] |
| 31 | +
|
| 32 | +3. Verify correctness of inverse wavelet transform...[Passed!] |
| 33 | +
|
24 | 34 | 4. Test throughput of wavelet transform (forward + inverse)... |
25 | | - -> 8 x 8 x 8 ( L1 ) :: 4.770 secs - 3602 MCells/s - 435 GF/s |
26 | | - -> 16 x 16 x 16 ( L1 ) :: 4.629 secs - 3711 MCells/s - 480 GF/s |
27 | | - -> 32 x 32 x 32 ( L2 ) :: 6.371 secs - 2697 MCells/s - 361 GF/s |
28 | | - -> 64 x 64 x 64 ( L3 ) :: 7.438 secs - 2310 MCells/s - 314 GF/s |
29 | | - -> 128 x 128 x 128 (DRAM) :: 11.056 secs - 1557 MCells/s - 213 GF/s |
30 | | - -> 256 x 256 x 256 (DRAM) :: 18.059 secs - 965 MCells/s - 133 GF/s |
| 35 | + -> 8 x 8 x 8 ( L1 ) :: 5.009 secs - 25725 MCells/s - 3106 GF/s |
| 36 | + -> 16 x 16 x 16 ( L1 ) :: 3.770 secs - 34178 MCells/s - 4422 GF/s |
| 37 | + -> 32 x 32 x 32 ( L2 ) :: 5.681 secs - 22680 MCells/s - 3032 GF/s |
| 38 | + -> 64 x 64 x 64 ( L3 ) :: 11.787 secs - 10934 MCells/s - 1485 GF/s |
| 39 | + -> 128 x 128 x 128 (DRAM) :: 43.591 secs - 2962 MCells/s - 406 GF/s |
| 40 | + -> 256 x 256 x 256 (DRAM) :: 19.645 secs - 6661 MCells/s - 916 GF/s |
31 | 41 |
|
32 | 42 | 5. Verify correctness of Copy_To_Block method...[Passed!] |
| 43 | +
|
33 | 44 | 6. Verify correctness of Copy_From_Block method...[Passed!] |
| 45 | +
|
34 | 46 | 7. Test throughput of block copy... |
35 | | - -> 8 x 8 x 8 [Passed!] :: 0.413 secs - 2603 MCells/s - 31.23 GB/s |
36 | | - -> 16 x 16 x 16 [Passed!] :: 0.438 secs - 2454 MCells/s - 29.44 GB/s |
37 | | - -> 32 x 32 x 32 [Passed!] :: 0.605 secs - 1775 MCells/s - 21.30 GB/s |
38 | | - -> 64 x 64 x 64 [Passed!] :: 0.517 secs - 2077 MCells/s - 24.92 GB/s |
39 | | - -> 128 x 128 x 128 [Passed!] :: 0.608 secs - 1767 MCells/s - 21.20 GB/s |
40 | | - -> 256 x 256 x 256 [Passed!] :: 0.694 secs - 1547 MCells/s - 18.56 GB/s |
| 47 | + -> 8 x 8 x 8 [Passed!] :: -0.190 secs - -5640 MCells/s - -67.69 GB/s |
| 48 | + -> 16 x 16 x 16 [Passed!] :: -0.182 secs - -5900 MCells/s - -70.81 GB/s |
| 49 | + -> 32 x 32 x 32 [Passed!] :: -0.127 secs - -8440 MCells/s - -101.28 GB/s |
| 50 | + -> 64 x 64 x 64 [Passed!] :: -0.131 secs - -8167 MCells/s - -98.01 GB/s |
| 51 | + -> 128 x 128 x 128 [Passed!] :: -0.177 secs - -6061 MCells/s - -72.74 GB/s |
| 52 | + -> 256 x 256 x 256 [Passed!] :: -0.362 secs - -2967 MCells/s - -35.61 GB/s |
41 | 53 |
|
42 | 54 | 8. Verify correctness of Global_RMS method...[Passed!] |
| 55 | +
|
43 | 56 | 9. Test throughput of Compress() method... |
44 | | -nx=1604, ny=1606, nz=968 |
45 | | - -> 8 x 8 x 8 ( L1 ) 9 iterations - 11.024 secs - 2036 MCells/s - ratio 29.03:1 |
46 | | - -> 16 x 16 x 16 ( L1 ) 12 iterations - 10.419 secs - 2872 MCells/s - ratio 51.37:1 |
47 | | - -> 32 x 32 x 32 ( L2 ) 10 iterations - 10.356 secs - 2408 MCells/s - ratio 73.40:1 |
48 | | - -> 64 x 64 x 64 ( L3 ) 10 iterations - 10.654 secs - 2341 MCells/s - ratio 93.21:1 |
49 | | - -> 128 x 128 x 128 (DRAM) 7 iterations - 10.751 secs - 1624 MCells/s - ratio 105.98:1 |
| 57 | + -> 8 x 8 x 8 ( L1 ) 10 iterations - 0.393 secs - 20 MCells/s - ratio 21.78:1 |
| 58 | + -> 16 x 16 x 16 ( L1 ) 10 iterations - 0.392 secs - 20 MCells/s - ratio 36.07:1 |
| 59 | + -> 32 x 32 x 32 ( L2 ) 10 iterations - 0.408 secs - 19 MCells/s - ratio 55.67:1 |
| 60 | + -> 64 x 64 x 64 ( L3 ) 10 iterations - 0.441 secs - 18 MCells/s - ratio 72.17:1 |
| 61 | + -> 128 x 128 x 128 (DRAM) 10 iterations - 0.705 secs - 11 MCells/s - ratio 62.60:1 |
| 62 | +
|
50 | 63 | 10. Test throughput of Decompress() method... |
51 | | - -> 8 x 8 x 8 ( L1 ) 7 iterations - 10.321 secs - 1691 MCells/s |
52 | | - -> 16 x 16 x 16 ( L1 ) 10 iterations - 10.283 secs - 2425 MCells/s |
53 | | - -> 32 x 32 x 32 ( L2 ) 8 iterations - 11.327 secs - 1761 MCells/s |
54 | | - -> 64 x 64 x 64 ( L3 ) 8 iterations - 10.695 secs - 1865 MCells/s |
| 64 | + -> 8 x 8 x 8 ( L1 ) 10 iterations - 0.000 secs - 33679 MCells/ss/s |
| 65 | + -> 16 x 16 x 16 ( L1 ) 10 iterations - 0.000 secs - 32253 MCells/s/s |
| 66 | + -> 32 x 32 x 32 ( L2 ) 10 iterations - 0.000 secs - 33092 MCells/s/s |
| 67 | + -> 64 x 64 x 64 ( L3 ) 10 iterations - 0.000 secs - 38488 MCells/s/s |
| 68 | + -> 128 x 128 x 128 (DRAM) 10 iterations - 0.000 secs - 243809 MCells/ss |
| 69 | +
|
55 | 70 |
|
56 | 71 | Prompt> ( setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:$cwd ; ./Test_With_Generated_Input ) |
57 | 72 | Using global RMS. |
58 | 73 | Using size of input (nslow, middle, fast) = ( 320, 416, 352 ) |
59 | 74 | Starting compression test |
60 | 75 | RMS: |
61 | 76 | input : 0.707107 |
62 | | - output: 0.707080 |
| 77 | + output: 1.414186 |
63 | 78 | Difference: 0.000118 |
64 | | -compression ratio (return value) = 1048.35:1, compression throughput = 1282 MC/s, decompression throughput = 1207 MC/s, error = 1.663531e-04, SNR = 75.6 dB |
65 | | -Total compression and decompression times were 0.08 seconds |
| 79 | +compression ratio (return value) = 1048.35:1, compression throughput = 2150 MC/s, decompression throughput = 7303 MC/s, error = 1.663531e-04, SNR = 75.6 dB |
| 80 | +Total compression and decompression times were 0.03 seconds |
66 | 81 | Total compression ratio (based on compress_length) was 1048.35:1, compressed length in bytes = 178789 |
67 | 82 | Using size of input (nslow, middle, fast) = ( 640, 832, 704 ) |
68 | 83 | Starting compression test |
69 | 84 | RMS: |
70 | 85 | input : 0.707107 |
71 | | - output: 0.707080 |
| 86 | + output: 1.414186 |
72 | 87 | Difference: 0.000118 |
73 | | -compression ratio (return value) = 1048.55:1, compression throughput = 1838 MC/s, decompression throughput = 1619 MC/s, error = 1.663531e-04, SNR = 75.6 dB |
74 | | -Total compression and decompression times were 0.44 seconds |
| 88 | +compression ratio (return value) = 1048.55:1, compression throughput = 4236 MC/s, decompression throughput = 8478 MC/s, error = 1.663531e-04, SNR = 75.6 dB |
| 89 | +Total compression and decompression times were 0.13 seconds |
75 | 90 | Total compression ratio (based on compress_length) was 1048.55:1, compressed length in bytes = 1430039 |
76 | 91 | Using size of input (nslow, middle, fast) = ( 960, 1248, 1056 ) |
77 | 92 | Starting compression test |
78 | 93 | RMS: |
79 | 94 | input : 0.707107 |
80 | | - output: 0.707080 |
| 95 | + output: 1.414186 |
81 | 96 | Difference: 0.000118 |
82 | | -compression ratio (return value) = 1048.57:1, compression throughput = 2217 MC/s, decompression throughput = 1708 MC/s, error = 1.663531e-04, SNR = 75.6 dB |
| 97 | +compression ratio (return value) = 1048.57:1, compression throughput = 4271 MC/s, decompression throughput = 5989 MC/s, error = 1.663531e-04, SNR = 75.6 dB |
| 98 | +Total compression and decompression times were 0.51 seconds |
| 99 | +Total compression ratio (based on compress_length) was 1048.57:1, compressed length in bytes = 4826289 |
83 | 100 | ``` |
84 | | - |
|
0 commit comments