SciVis Wiki
Advertisement

Summary

We investigated complaints of poor interactivity when ParaView was run remotely between the user's home and the LANL cluster called Lobo[1]. We successfully reproduced the loss of interactivity running ParaView between a home system and Lobo by adding visual elements to the rendered scene. Initially interactivity was fine, however as visual elements were added we experienced the loss of interactivity. We determined that the loss of interactivity was independent of input data set and data set size and was not linked to a specific visualisation technique which enabled us to reproduce on UCSD cluster called Nashi using ParaView's internal sources and test recording mechanism. By instrumenting the ParaView client server image delivery sub system we confirmed that frame rates dropped dramatically as as visual elements were added into the scene. We have identified the compression scheme employed by the image delivery subsystem at the root of the remote interactivity issues. ParaView's image delivery subsystem employs a run length encoding scheme developed by Sandia labs called "Squirt". Like all run length encoding schemes Squirt is fast but doesn't deliver high compression ratios. We found that the compression ratio degraded quickly as visual elements were added into the scene. We compared Squirt compression scheme against two popular compression schemes, zlib which is used in the linux gzip tool, and szip which is employed in HDF5 library. The tests show that, at its highest setting, zlib's compression ratio's are an order of magnitude higher than Squirt's across the board, however run time is also an order of magnitude slower. However, benchmarks show that ParaView's frame rates are also an order of magnitude longer than the run times, so run time is not a significant factor here. In order to confirm the result we implemented a second suite of in-situ tests implementing zlib compression in ParaView such that when Squirt was turned off, zlib was turned on. This enabled us to benchmark ParaView suing both Squirt and Zlib side by side on real test data. The results show that in the cases where Squirt's frame rates diminish to non interactive rates, using zlib produces a speed up of a factor of 4.39 which, although modest, provides significantly better interactivity with image delivery times dropping from from on average 5.25 seconds down to 1.19 seconds per frame.

Results

A Benchmark of Squirt and Zlib Compression in ParaView

For this suite of tests we implemented zlib compression in ParaView so that a side by side comparsion of zlib and Squirt could be made under real world conditions. In these in-situ tests we seek to isolate the the compression scheme as much as possible and to stress test the algorithms in a worst case scenario. To this end in the render-server configuration dialog (Edit->Settings...->Render View->{General,Server}) we set the Remote Render Threshold to 0, disabled Image sub-sampling and set the LOD Threshold to 0. We set the Squirt compressor to loss-less mode at 24 bpp and zlib compressor to its highest setting which is also its slowest. The results summarised in the following table and histogram. For each scheme two renderings were used. The first is an outline of a two dimensional dataset. This rendering has large areas of uniform color and compresses well with both Squirt and Zlib resulting in interactive frame rates for both. The second rendering of a fractal image has a lot of color variation and is used to confound the compression schemes. It represents a worst case input that will cause Squirt compression ration to fall so low that frame rates are not interactive. In this case Squirt compression ratio drops dramatically to 2.9 and frame rates fall below interactive rates, with each frame taking on average 5.25 seconds. Zlib on the other hand delivers a 16.06 times higher compression ratio than Squirt resulting in a 4.39 times faster frame delivery rate. The speed up factor of 4.39 is a modest improvement, however zlib's average delivery rate of 1.2 seconds per frame is a significant improvement in interactivity over Squirts average delivery of 5.25 seconds per frame.

Test Results

Dataset OutlineFractal Image
SquirtCompression Ratio33.53972.93691
Avg. Seconds per Frame0.4781205.257553
ZLib-9Compression Ratio313.83847.1934
Avg. Seconds per Frame0.247824 1.197212
Avg. Speed Up1.929274.3915
Avg. Reduction Factor9.357216.0690

Squirt vs zlib sm2

Timing results for 200 frames. Squirt results are plotted in the first row, Zlib in the second. Plots in the first column show timings of the dataset outline, plots in the second column show results for the fractal image.


Input Datasets

The following images are screen shots taken from ParaView during the tests. We used a saved state file to insure the same initial conditions and a automated test script generated using ParaView's Tools->record Test feature to insure reproducability.

Images used for Frame Rate Benchmark
Outline

Dataset outline has large regions of uniform color, leading to very high compression ratio.

Fractal

Fractal Image has lots of color variation which confounds the compression algorithms.

A General Comparison of Loss-less Compression Schemes on Images rendered by ParaView

The following table sumarises the test sequence we implemented to compare Squirt the current compression algorithm used in ParaView to two potential alternatives, szip and zlib. Each scheme was tested using various compression levels. Two passes were made over each input image. The first pass the full 24 bit BMP was processed. In the second pass, Squirts level 5 color reduction algorithm was applied. This results in 10 bit color data. The reduced color data was then used as input to each of the schemes. We did this to show case Squirt at its best and to level the playing field accounting for the fact that the other schemes tested were loss-less. The purpose of the tests were to compare Squirt to various alternatives, there for we used Squirt's timing and compressed data size as a basis for relative comparisons. Collumns Relative Time Delta and Relative Compression Ratio contain the primary results, while other columns contain the raw data.

Squirt is a run length encoding(RLE) scheme and can be set to loss-less or lossy compression. Squirt's lossy compression uses a color depth reduction technique to increase run length. Squirt's strong point is its speed, of the schemes tested it was the fastest. It's weakness is that it achieves a relatively low compression ratio. Szip is a scheme available by HDF4 and HDF5 and patented by NASA. Our tests show that for typical images rendered by paraView szip does relatively poorly compared to Squirt and Zlib. However it is intersting to note that on most challenging input used in the tests szip performs reasonably well. Zlib is public domain implementation of deflate the scheme originally used in pkzip, has fixed memory requirements independent of input data size, and essentially never inflates data. At its highest setting zlib achieved the highest compression ratios an order of magnitude higher than Squirt for all test inputs. The trade off, is as is often the case, speed as runtime for zlib compressor is an order of magnitude longer than Squirt. However our in-situ benchmarks show that compressor run time does not contribute significantly to frame rate. Decreasing the color depth of the input images further increased the compression ratio and the run time for the zlib compressor. The results suggest that it will likely be worth while to pre-process rendered images by reducing the color depth much as is done for Squirt in typical use.

Test Results

Input Dataset Case Number Scheme Name Final size Compression Ratio Relative Compression Ratio Time Delta Relative Time Delta

1_streams.bmp

24 bpp
1597995

1* Squirt-02043887.8184410.01305911
2szip-ec13203471.210280.1547990.02803522.14678
3szip-nn12614761.266770.1620230.03613112.76673
4zlib-16311325.31963.238450.01578091.20842
5zlib-25997826.6433.407720.01601511.22635
6zlib-35081931.44484.021880.01686221.29121
7zlib-54163338.38294.909280.0246461.88726
8zlib-92377967.20198.595320.19440914.8868

1_streams.bmp

10 bpp
1597995

9* Squirt-02043647.8193610.01181981
10szip-ec13202111.210410.1547960.02675292.26339
11szip-nn12699751.258290.160920.03540992.9958
12zlib-16311725.3183.237860.01575611.33302
13zlib-25999226.63683.406520.01605111.35798
14zlib-35071431.50994.029740.0169741.43606
15zlib-54150738.49944.92360.02463322.08405
16zlib-92372967.34358.612420.19378416.3948

2_streams.bmp

24 bpp
1597995

17* Squirt-04194843.8094310.01561091
18szip-ec13157571.214510.3188160.0289281.85306
19szip-nn12717091.256570.3298580.0362122.31965
20zlib-112437212.84853.372820.02137111.36898
21zlib-211723813.63043.578050.02224211.42478
22zlib-310513715.19923.989880.02619791.67818
23zlib-59080917.59734.619410.0357742.2916
24zlib-96719423.78186.242880.57377736.7548

2_streams.bmp

10 bpp
1597995

25* Squirt-04194603.8096510.01473691
26szip-ec13138541.216270.3192590.02801421.90096
27szip-nn12790241.249390.3279530.03547482.40721
28zlib-112431612.85433.374140.02136211.44956
29zlib-211722513.63193.578250.02210381.49989
30zlib-310504515.21253.993150.02604511.76734
31zlib-59076017.60684.621640.03582412.43091
32zlib-96715323.79636.246330.57476339.0017

B_highres.bmp

24 bpp
6912000

33* Squirt-023801002.9040810.06464221
34szip-ec17107164.040411.391290.06863121.06171
35szip-nn20909993.30561.138260.0797621.2339
36zlib-117118984.037621.390330.1366632.11414
37zlib-217042984.055631.396530.1389132.14895
38zlib-316930654.082541.405790.1415052.18905
39zlib-516762554.123481.419890.1796242.77874
40zlib-916528384.18191.440010.81881212.6668

B_highres.bmp

10 bpp
6912000

41* Squirt-018733683.6896110.05993491
42szip-ec17017024.061821.100880.06743221.12509
43szip-nn20777453.326680.9016350.07911591.32003
44zlib-18157018.473692.296640.1172821.95682
45zlib-27755088.912872.415670.1200612.00319
46zlib-36952759.941392.694430.1377282.29796
47zlib-560172811.48693.113310.2050563.42131
48zlib-953179512.99753.522730.85749814.3072

Input Datasets

The fololwing images were used as comand line parameters to our test code.

Input Images used for the General Comparsion
1 streams

1_streams.bmp. Image that compresses well, very interactive.

2 streams

2_streams.bmp. Image that doesn't compress well. Loss of interactivity.

B highres

B_highres.bmp. Large high res image typical of generating movies.

Special Thanks

Thanks to William Daughton of LANL for help identifying and reproducing the issue.

Notes

  1. Lobo - 272 compute nodes, 4,352 CPU, 38 TFLOPS system. Quad-core, quad-socket AMD Opteron w/ Infiniband.
  2. Nashi - 22 compute nodes, 88 CPU, 264 G Ram, Dual-core, dual-socket AMD Opteron w/ Infiniband.
  3. http://www.zlib.net/
  4. http://www.hdfgroup.org/doc_resource/SZIP/


bzip


Input Dataset Case Number Scheme Name Final size Compression Ratio Relative Compression Ratio Time Delta Relative Time Delta

1_streams.bmp

24 bpp
1597995

1* Squirt-02043887.8184410.01298691
2bzip21798388.861411.36561.0849183.5389
3szip-ec13203471.210280.1547990.0282962.17881
4szip-nn12614761.266770.1620230.03711892.85818
5zlib-16311325.31963.238450.01601821.23341
6zlib-25997826.6433.407720.0162471.25103
7zlib-35081931.44484.021880.01695391.30547
8zlib-54163338.38294.909280.02495691.9217
9zlib-92377967.20198.595320.19839515.2766

1_streams.bmp

10 bpp
1597995

10* Squirt-02043647.8193610.01158791
11bzip21803788.595411.33031.0603291.5027
12szip-ec13202111.210410.1547960.02721192.34831
13szip-nn12699751.258290.160920.03546193.06026
14zlib-16311725.3183.237860.01590111.37222
15zlib-25999226.63683.406520.0160221.38265
16zlib-35071431.50994.029740.01695011.46275
17zlib-54150738.49944.92360.02477812.13828
18zlib-92372967.34358.612420.19493916.8227

2_streams.bmp

24 bpp
1597995

19* Squirt-04194843.8094310.01461981
20bzip25479329.16427.65581.1430178.1825
21szip-ec13157571.214510.3188160.02804591.91835
22szip-nn12717091.256570.3298580.0364432.49271
23zlib-112437212.84853.372820.02141811.465
24zlib-211723813.63043.578050.0222021.51862
25zlib-310513715.19923.989880.0263961.8055
26zlib-59080917.59734.619410.03581382.44967
27zlib-96719423.78186.242880.57658639.4386

2_streams.bmp

10 bpp
1597995

28* Squirt-04194603.8096510.01486421
29bzip25425529.45347.731271.1506677.4113
30szip-ec13138541.216270.3192590.02805111.88716
31szip-nn12790241.249390.3279530.03569292.40127
32zlib-112431612.85433.374140.02139091.43909
33zlib-211722513.63193.578250.02220511.49386
34zlib-310504515.21253.993150.0261551.7596
35zlib-59076017.60684.621640.03580592.40887
36zlib-96715323.79636.246330.5771138.8255

3_streams.bmp

24 bpp
2274972

37* Squirt-011214962.0285210.02385621
38bzip24032905.641032.780871.3765357.7014
39szip-ec18770471.2120.5974790.03961991.66078
40szip-nn18173191.251830.6171160.05003912.09753
41zlib-15910323.849151.897520.0498252.08856
42zlib-25814803.912381.928690.05153012.16003
43zlib-35611394.05421.998610.05611712.35231
44zlib-55476134.154342.047970.07315613.06655
45zlib-95285764.303962.121730.1806127.57088

3_streams.bmp

10 bpp
2274972

46* Squirt-05929363.8367910.02011991
47bzip211755619.35225.043861.4249770.824
48szip-ec18763001.212480.3160130.0387541.92615
49szip-nn18243091.247030.325020.04979112.47472
50zlib-12440649.321212.429430.03615811.79713
51zlib-22347409.691452.525930.03839611.90836
52zlib-321153510.75462.803020.04579312.27601
53zlib-518052712.60183.284470.0639883.18033
54zlib-915177714.98893.906630.38298419.0351

B_highres.bmp

24 bpp
6912000

55* Squirt-023801002.9040810.06511
56bzip212145405.691041.959670.4868077.47784
57szip-ec17107164.040411.391290.06869911.05529
58szip-nn20909993.30561.138260.0799881.2287
59zlib-117118984.037621.390330.1368322.10188
60zlib-217042984.055631.396530.1390352.13572
61zlib-316930654.082541.405790.1418392.17878
62zlib-516762554.123481.419890.1800282.76541
63zlib-916528384.18191.440010.82165612.6215

B_highres.bmp

10 bpp
6912000

64* Squirt-018733683.6896110.06008511
65bzip236138519.12645.183860.4000096.65738
66szip-ec17017024.061821.100880.0676011.12509
67szip-nn20777453.326680.9016350.07944111.32214
68zlib-18157018.473692.296640.1160611.93161
69zlib-27755088.912872.415670.120582.00682
70zlib-36952759.941392.694430.13822.30007
71zlib-560172811.48693.113310.2044293.40233
72zlib-953179512.99753.522730.85913914.2987

Advertisement