Re: OpenExr 2.3 - slower write speeds for Uncompressed and Zip1
Tony Micilotta <[email protected]> Thu, 04 Apr 2019 13:22:15 +0100
| Newsgroups | gmane.comp.video.openexr.devel |
|---|---|
| Message-ID | <[email protected]> |
> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. --B_3637228935_1391026131 Content-type: multipart/alternative; boundary="B_3637228935_173687618" --B_3637228935_173687618 Content-type: text/plain; charset="UTF-8" Content-transfer-encoding: quoted-printable Hi Peter and Nick, =20 Thank you for the suggestions and performance findings. We rebuilt with ILM= BASE_FORCE_CXX03 defined, however the write speed changes remain unchanged .= We=E2=80=99ll look at your suggestions too Peter and will also take a peak with v= tune. =20 Regards, Tony =20 =20 From: Peter Hillman <[email protected]> Date: Wednesday, 3 April 2019 at 07:30 To: Nick Porcino <[email protected]>, Tony Micilotta <tony.micilotta@foun= dry.com>, "[email protected]" <[email protected]> Subject: Re: [Openexr-devel] OpenExr 2.3 - slower write speeds for Uncompre= ssed and Zip1 =20 I've just been running tests myself along the same lines.=20 I tried comparing writing various schemes with EXR-2.2.1, EXR-2.3.0 and EXR= -2.3.0 using an IlmBase build with ILMBASE_FORCE_CXX03 (passing --enable-std= cxx=3D03 to ./configure) This attempts to use the API in a similar way to the Nuke exrWriter example= (my code attached) =20 Conclusions: =20 I don't think ILMBASE_FORCE_CXX03 has a difference in my test. I find no reliable speed difference between 2.2.1 and 2.3.0 where no thread= pool is used (so running the attached test using testEXR zips none 1 /tmp/te= st.exr) or the number of threads is close to the number of CPU cores regardl= ess of compression scheme (e.g. with 4 cores try testEXR zips 4 20 /tmp/test= .exr) . I did manage to make 2.3.0 go slower than 2.2.1, by running testEXR zips 10= 0 10 /tmp/test.exr which means there are 100 threads allocated, but only a (= random?) 10 of those have anything to do each time, since only 10 scanlines = are written at once, and those 10 are fighting for (in my case) 4 cores. Bot= h 2.2.1 and 2.3.0 run slower with excessive threadpools, but the effect is s= ignificantly more in 2.3.0. =20 I wonder if somehow Nuke's other threads are interfering with EXRs threadpo= ol operation in 2.3.0 in a way they aren't in 2.2.1? It might be interesting= to implement a test like the attached as a self-contained method triggered = from a button press in a Nuke node, so it runs within Nuke's existing framew= ork but doesn't use any Nuke functionality at all, and see if there's a diff= erence between that and running the function as a standalone binary outside = of Nuke. =20 I'm intrigued that, according to the graph, the compression schemes that wr= ite single scanlines at once have slowed down, and the ones that write many = scanlines at once have sped up. Schemes that write multiple scanlines per bl= ock have lower overhead through IlmThread. In my case I didn't see any signi= ficant speedups with 2.3.0 in any scheme. =20 Peter =20 From: Openexr-devel <[email protected]> = on behalf of Nick Porcino <[email protected]> Sent: Wednesday, 3 April 2019 5:05 PM To: Tony Micilotta; [email protected] Subject: Re: [Openexr-devel] OpenExr 2.3 - slower write speeds for Uncompre= ssed and Zip1=20 =20 =20 One of the big differences between 2.2 and 2.3 is that we moved from pthrea= d to std::thread, and made a number of corrections for thread safety. =20 e.g. =20 https://github.com/openexr/openexr/commit/eea1e607177e339e05daa1a2ec969a9dd= 12f2497 =20 https://github.com/openexr/openexr/commit/bf0cb8cdce32fce36017107c9982e1e5d= b2fb3fa =20 The old pthread/windows native implementation can be re-enabled by setting = the preprocessor define ILMBASE_FORCE_CXX03. I am wondering if you might be = able to benchmark against that version of the code as an experiment to get m= ore information? =20 =20 From: Openexr-devel <[email protected]> = on behalf of Tony Micilotta <[email protected]> Sent: Monday, April 1, 2019 8:27:29 AM To: [email protected] Subject: [Openexr-devel] OpenExr 2.3 - slower write speeds for Uncompressed= and Zip1=20 =20 Hi, =20 At Foundry we=E2=80=99ve started testing the read performance of OpenExr 2.3 with= Boost 1.66 as we move Nuke towards conforming to VFX Reference Platform 201= 9. Although the release notes don=E2=80=99t mention any changes to file writing, w= e have charted (see graphic below) OpenExr 2.3 write performance against Ope= nExr 2.2 as we noticed a slowdown in our playback cache generation which use= s OpenExr. =20 From Nuke, a checkerboard/colourwheel combination is generated and animated= over 100 frames in order to eliminate file reading from the measurements. T= hese 100 frames are written to disk using each compression type, and the tim= ings are averaged over 10 test runs. Certain compression types show an impro= vement which is great, however we=E2=80=99re concerned that Uncompressed and Zip1 = are 13% and 9% slower respectively: =20 =20 Have you benchmarked this on your side too, and have you noticed similar me= trics? =20 Regards, Tony =20 =20 Tony Micilotta Senior Technical Product Manager - Nuke Family Tel: +44 (0)20 7479 4350 Web: www.foundry.com The Foundry Visionmongers Ltd. - Registered in England and Wales No: 4642= 027 - Address: 5 Golden Square, London, W1F 9HT - VAT No: 672742224 =20 --B_3637228935_173687618 Content-type: text/html; charset="UTF-8" Content-transfer-encoding: quoted-printable <html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-microsof= t-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" xmlns:m= =3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http://www.w3.org= /TR/REC-html40"><head><meta http-equiv=3DContent-Type content=3D"text/html; char= set=3Dutf-8"><meta name=3DGenerator content=3D"Microsoft Word 15 (filtered medium)= "><!--[if !mso]><style>v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style><![endif]--><style><!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;} @font-face {font-family:"Helvetica Neue"; panose-1:2 0 5 3 0 0 0 2 0 4;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm; margin-bottom:.0001pt; font-size:11.0pt; font-family:"Calibri",sans-serif;} a:link, span.MsoHyperlink {mso-style-priority:99; color:blue; text-decoration:underline;} a:visited, span.MsoHyperlinkFollowed {mso-style-priority:99; color:purple; text-decoration:underline;} p.msonormal0, li.msonormal0, div.msonormal0 {mso-style-name:msonormal; margin:0cm; margin-bottom:.0001pt; font-size:11.0pt; font-family:"Calibri",sans-serif;} p.xmsonormal, li.xmsonormal, div.xmsonormal {mso-style-name:x_msonormal; margin:0cm; margin-bottom:.0001pt; font-size:11.0pt; font-family:"Calibri",sans-serif;} span.xblob-code-inner {mso-style-name:x_blob-code-inner;} span.EmailStyle21 {mso-style-type:personal-reply; font-family:"Calibri",sans-serif; color:windowtext;} .MsoChpDefault {mso-style-type:export-only; font-size:10.0pt;} @page WordSection1 {size:612.0pt 792.0pt; margin:72.0pt 72.0pt 72.0pt 72.0pt;} div.WordSection1 {page:WordSection1;} --></style><!--[if gte mso 9]><xml> <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" /> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext=3D"edit"> <o:idmap v:ext=3D"edit" data=3D"1" /> </o:shapelayout></xml><![endif]--></head><body lang=3DEN-GB link=3Dblue vlink=3Dp= urple><div class=3DWordSection1><p class=3DMsoNormal>Hi Peter and Nick,<o:p></o:= p></p><p class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>Thank you f= or the suggestions and performance findings. We rebuilt with <span class=3Dxbl= ob-code-inner>ILMBASE_FORCE_CXX03 defined, however the write speed changes r= emain unchanged . We=E2=80=99ll look at your suggestions too Peter and will also t= ake a peak with vtune.<o:p></o:p></span></p><p class=3DMsoNormal><span class=3Dx= blob-code-inner><o:p> </o:p></span></p><p class=3DMsoNormal><span class=3Dx= blob-code-inner>Regards,<o:p></o:p></span></p><p class=3DMsoNormal><span class= =3Dxblob-code-inner>Tony<o:p></o:p></span></p><p class=3DMsoNormal><span class=3Dx= blob-code-inner> </span><o:p></o:p></p><p class=3DMsoNormal><o:p> </o:p><= /p><div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm = 0cm 0cm'><p class=3DMsoNormal><b><span style=3D'font-size:12.0pt;color:black'>Fr= om: </span></b><span style=3D'font-size:12.0pt;color:black'>Peter Hillman <= [email protected]><br><b>Date: </b>Wednesday, 3 April 2019 at 07:30<br>= <b>To: </b>Nick Porcino <[email protected]>, Tony Micilotta <tony= [email protected]>, "[email protected]" <openexr= [email protected]><br><b>Subject: </b>Re: [Openexr-devel] OpenExr 2.3 - s= lower write speeds for Uncompressed and Zip1<o:p></o:p></span></p></div><div= ><p class=3DMsoNormal><o:p> </o:p></p></div><div><p class=3DMsoNormal><span= style=3D'font-size:12.0pt;color:black'>I've just been running tests myself al= ong the same lines. <o:p></o:p></span></p></div><div><p class=3DMsoNormal><spa= n style=3D'font-size:12.0pt;color:black'>I tried comparing writing various sch= emes with EXR-2.2.1, EXR-2.3.0 and EXR-2.3.0 using an IlmBase build with ILM= BASE_FORCE_CXX03 (passing --enable-stdcxx=3D03 to ./configure)<o:p></o:p></spa= n></p></div><div><p class=3DMsoNormal><span style=3D'font-size:12.0pt;color:blac= k'>This attempts to use the API in a similar way to the Nuke exrWriter examp= le (my code attached)<o:p></o:p></span></p></div><div><p class=3DMsoNormal><sp= an style=3D'font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><d= iv><p class=3DMsoNormal><span style=3D'font-size:12.0pt;color:black'>Conclusions= :<o:p></o:p></span></p></div><div><p class=3DMsoNormal><span style=3D'font-size:= 12.0pt;color:black'><o:p> </o:p></span></p></div><div><p class=3DMsoNorma= l><span style=3D'font-size:12.0pt;color:black'>I don't think ILMBASE_FORCE_CXX= 03 has a difference in my test.<o:p></o:p></span></p></div><div><p class=3DMso= Normal><span style=3D'font-size:12.0pt;color:black'>I find no reliable speed d= ifference between 2.2.1 and 2.3.0 where no threadpool is used (so running th= e attached test using <b>testEXR zips none 1 /tmp/test.exr</b>) or the numbe= r of threads is close to the number of CPU cores regardless of compression s= cheme (e.g. with 4 cores try <b>testEXR zips 4 20 /tmp/test.exr</b>) .<o:p><= /o:p></span></p></div><div><p class=3DMsoNormal><span style=3D'font-size:12.0pt;= color:black'>I <i>did</i> manage to make 2.3.0 go slower than 2.2.1, by runn= ing <b>testEXR zips 100 10 /tmp/test.exr</b> which means there are 100 threa= ds allocated, but only a (random?) 10 of those have anything to do each time= , since only 10 scanlines are written at once, and those 10 are fighting for= (in my case) 4 cores. Both 2.2.1 and 2.3.0 run slower with excessive thread= pools, but the effect is significantly more in 2.3.0.<o:p></o:p></span></p><= /div><div><p class=3DMsoNormal><span style=3D'font-size:12.0pt;color:black'><o:p= > </o:p></span></p></div><div><p class=3DMsoNormal><span style=3D'font-size= :12.0pt;color:black'>I wonder if somehow Nuke's other threads are interferin= g with EXRs threadpool operation in 2.3.0 in a way they aren't in 2.2.1? It = might be interesting to implement a test like the attached as a self-contain= ed method triggered from a button press in a Nuke node, so it runs within Nu= ke's existing framework but doesn't use any Nuke functionality at all, and s= ee if there's a difference between that and running the function as a standa= lone binary outside of Nuke.<o:p></o:p></span></p></div><div><p class=3DMsoNor= mal><span style=3D'font-size:12.0pt;color:black'><o:p> </o:p></span></p><= /div><div><p class=3DMsoNormal><span style=3D'font-size:12.0pt;color:black'>I'm = intrigued that, according to the graph, the compression schemes that write s= ingle scanlines at once have slowed down, and the ones that write many scanl= ines at once have sped up. Schemes that write multiple scanlines per block h= ave lower overhead through IlmThread. In my case I didn't see any significan= t speedups with 2.3.0 in any scheme.<o:p></o:p></span></p></div><div><p clas= s=3DMsoNormal><span style=3D'font-size:12.0pt;color:black'><o:p> </o:p></sp= an></p></div><div><div><p class=3DMsoNormal><span style=3D'font-size:12.0pt;colo= r:black'>Peter<o:p></o:p></span></p></div><div><p class=3DMsoNormal><span styl= e=3D'font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><div clas= s=3DMsoNormal align=3Dcenter style=3D'text-align:center'><hr size=3D2 width=3D"98%" al= ign=3Dcenter></div><div id=3DdivRplyFwdMsg><p class=3DMsoNormal><b><span style=3D'co= lor:black'>From:</span></b><span style=3D'color:black'> Openexr-devel <open= [email protected]> on behalf of Nick Porci= no <[email protected]><br><b>Sent:</b> Wednesday, 3 April 2019 5:05 = PM<br><b>To:</b> Tony Micilotta; [email protected]<br><b>Subject:</b>= Re: [Openexr-devel] OpenExr 2.3 - slower write speeds for Uncompressed and = Zip1</span> <o:p></o:p></p><div><p class=3DMsoNormal> <o:p></o:p></p></di= v></div><p class=3DMsoNormal><o:p> </o:p></p><div><div><div><p class=3Dxmso= normal>One of the big differences between 2.2 and 2.3 is that we moved from = pthread to std::thread, and made a number of corrections for thread safety.<= o:p></o:p></p><p class=3Dxmsonormal> <o:p></o:p></p><p class=3Dxmsonormal>e= .g.<o:p></o:p></p><p class=3Dxmsonormal> <o:p></o:p></p><p class=3Dxmsonorm= al><a href=3D"https://github.com/openexr/openexr/commit/eea1e607177e339e05daa1= a2ec969a9dd12f2497">https://github.com/openexr/openexr/commit/eea1e607177e33= 9e05daa1a2ec969a9dd12f2497</a><o:p></o:p></p><p class=3Dxmsonormal> <o:p>= </o:p></p><p class=3Dxmsonormal>https://github.com/openexr/openexr/commit/bf0c= b8cdce32fce36017107c9982e1e5db2fb3fa<o:p></o:p></p><p class=3Dxmsonormal> = ;<o:p></o:p></p><p class=3Dxmsonormal>The old pthread/windows native implement= ation can be re-enabled by setting the preprocessor define <span class=3Dxblob= -code-inner>ILMBASE_FORCE_CXX03. I am wondering if you might be able to benc= hmark against that version of the code as an experiment to get more informat= ion?</span><o:p></o:p></p><p class=3Dxmsonormal> <o:p></o:p></p><p class=3D= xmsonormal> <o:p></o:p></p></div><div class=3DMsoNormal align=3Dcenter styl= e=3D'text-align:center'><hr size=3D2 width=3D"98%" align=3Dcenter></div><div id=3D"x_d= ivRplyFwdMsg"><p class=3DMsoNormal><b><span style=3D'color:black'>From:</span></= b><span style=3D'color:black'> Openexr-devel <openexr-devel-bounces+meshula= [email protected]> on behalf of Tony Micilotta <tony.micilotta@f= oundry.com><br><b>Sent:</b> Monday, April 1, 2019 8:27:29 AM<br><b>To:</b= > [email protected]<br><b>Subject:</b> [Openexr-devel] OpenExr 2.3 - = slower write speeds for Uncompressed and Zip1</span> <o:p></o:p></p><div><p = class=3DMsoNormal> <o:p></o:p></p></div></div><div><div><p class=3Dxmsonorm= al>Hi,<o:p></o:p></p><p class=3Dxmsonormal> <o:p></o:p></p><p class=3Dxmson= ormal>At Foundry we=E2=80=99ve started testing the read performance of OpenExr 2.3= with Boost 1.66 as we move Nuke towards conforming to VFX Reference Platfor= m 2019. Although the release notes don=E2=80=99t mention any changes to file writi= ng, we have charted (see graphic below) OpenExr 2.3 write performance agains= t OpenExr 2.2 as we noticed a slowdown in our playback cache generation whic= h uses OpenExr.<o:p></o:p></p><p class=3Dxmsonormal> <o:p></o:p></p><p cl= ass=3Dxmsonormal>From Nuke, a checkerboard/colourwheel combination is generate= d and animated over 100 frames in order to eliminate file reading from the m= easurements. These 100 frames are written to disk using each compression typ= e, and the timings are averaged over 10 test runs. Certain compression types= show an improvement which is great, however we=E2=80=99re concerned that Uncompre= ssed and Zip1 are 13% and 9% slower respectively:<o:p></o:p></p><p class=3Dxms= onormal> <o:p></o:p></p><p class=3Dxmsonormal><img border=3D0 width=3D598 hei= ght=3D370 style=3D'width:6.2291in;height:3.8541in' id=3D"x_Picture_x0020_1" src=3D"c= id:[email protected]" alt=3D"/var/folders/40/8tkm41ts6pl0g3qvshsr= rnpc0001xc/T/com.microsoft.Outlook/Content.MSO/515C417.tmp"><o:p></o:p></p><= p class=3Dxmsonormal> <o:p></o:p></p><p class=3Dxmsonormal>Have you benchma= rked this on your side too, and have you noticed similar metrics?<o:p></o:p>= </p><p class=3Dxmsonormal> <o:p></o:p></p><p class=3Dxmsonormal>Regards,<o:= p></o:p></p><p class=3Dxmsonormal>Tony<o:p></o:p></p><p class=3Dxmsonormal> = ;<o:p></o:p></p><p class=3Dxmsonormal> <o:p></o:p></p><p style=3D'backgroun= d:white'><b><span style=3D'font-size:9.0pt;font-family:"Helvetica Neue";color:= #888888'><br>Tony Micilotta</span></b><o:p></o:p></p><p style=3D'background:wh= ite;font-variant-ligatures:normal;font-variant-caps:normal;orphans:2;text-al= ign:start;widows:2;text-decoration-style:initial;text-decoration-color:initi= al;word-spacing:0px'><span style=3D'font-size:9.0pt;font-family:"Helvetica Neu= e";color:#888888'>Senior Technical Product Manager - Nuke Family</span><o:p>= </o:p></p><p style=3D'background:white;font-variant-ligatures:normal;font-vari= ant-caps:normal;orphans:2;text-align:start;widows:2;text-decoration-style:in= itial;text-decoration-color:initial;word-spacing:0px'><span style=3D'font-size= :9.5pt;font-family:"Helvetica Neue";color:#888888'><img border=3D0 width=3D150 h= eight=3D25 style=3D'width:1.5625in;height:.2604in' id=3D"x_Picture_x0020_3" src=3D"c= id:[email protected]" alt=3D"https://lh6.googleusercontent.com/x8= JxqXcMjULW_8dLygamrZxWcjpFchCVThRNxLrFSEsE_i1aMPBED6FYrUWu6lT54vMN4z1x3D59uP= xzh1ughmlVxH5-6yflHx_SZlGAUZV3NA3FatIrHplrrBasCyGa3MhHz8Ti"></span><o:p></o:= p></p><p style=3D'background:white;font-variant-ligatures:normal;font-variant-= caps:normal;orphans:2;text-align:start;widows:2;text-decoration-style:initia= l;text-decoration-color:initial;word-spacing:0px'><b><span style=3D'font-size:= 9.0pt;font-family:"Helvetica Neue";color:#888888'>Tel</span></b><span style=3D= 'font-size:9.0pt;font-family:"Helvetica Neue";color:#888888'>: </span><span = style=3D'font-size:9.0pt;font-family:"Helvetica Neue";color:#1155CC'>+44 (0)20= 7479 4350</span><o:p></o:p></p><p style=3D'background:white;font-variant-liga= tures:normal;font-variant-caps:normal;orphans:2;text-align:start;widows:2;te= xt-decoration-style:initial;text-decoration-color:initial;word-spacing:0px'>= <b><span style=3D'font-size:9.0pt;font-family:"Helvetica Neue";color:#888888'>= Web: </span></b><span style=3D'font-size:12.0pt;font-family:"Arial",sans-serif= ;color:#222222'><a href=3D"https://www.foundry.com/" target=3D"_blank"><span sty= le=3D'font-size:9.0pt;font-family:"Helvetica Neue";color:#1155CC'>www.foundry.= com</span></a></span><o:p></o:p></p><p class=3Dxmsonormal><span style=3D'font-fa= mily:"Arial",sans-serif;color:#222222'><br></span><span style=3D'font-size:8.0= pt;font-family:"Helvetica Neue";color:#999999;background:white'>The Foundry = Visionmongers Ltd. - Registered in England and Wales No: 4642027= - Address: 5 Golden Square, London, W1F 9HT - VAT N= o: 672742224</span><o:p></o:p></p><p class=3Dxmsonormal> <o:p></o:p></p><= /div></div></div></div></div></div></body></html> --B_3637228935_173687618-- --B_3637228935_1391026131 Content-type: image/png; name="image001.png"; x-mac-creator="4F50494D"; x-mac-type="504E4766" Content-ID: <[email protected]> Content-disposition: inline; filename="image001.png" Content-transfer-encoding: base64 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 F5e3RjSRtz87JCNnbZc5Qy6VtNQU+W3f1bmQv5rSXL7feUruHfWdvDOqqRQrkiRLV/4oVSqm SPqLm03ZVwZeYtZt+9g3MvvJS+TCtBLSuucqeWPopfLul0fkf35zgew9fEbuf+6HfDuQgGVj XO/YsUPmzJkj6enpojNZ48aNk8qVK0v9+vWlXbt2NmqiKAIIIBAbAvoNtCde8sbzheqmlZDR Pep59vlCXu3RwIBlZXZH2/HYnbWkY6tKcjozW75Yf1ye+sc2Gd+rgVxzaTkpkpwkmWezZfLb e8wlOC/M7vja2Pf2mtLlxqpm1urZ13fIsw/WlzZXVJBeEzaadviWd0Y2keqVi8uWvael1gXF Zfq7e+Xl93L/4sqnE66Qr747Lo9N2SxfTGoum/ecki4jv5P3nmkq8/59ULq3rya/7rUqaLcT sGx8IjRU6dShfpOQBQEEEEgEAa89X0hD1vynGicCvWNttDu7M/Du2vKHay+Qf39z1IQLXdpf nSr331LdBK2iRZJkUp+Gcuh4lrR/fI0nZncCQ+TyF1vIoWNnpcuIb+WvD9U392Ll/SalznTp OCpWNEl2HTwjtz65Lpe3ztyN6H6h/OHJdbL70Bl595mmUiIlWc6dy5HVm0/IlY3KyvLvjpt/ 1WPT7lPmUmHgQsBybAhTEQIIIBB/Aolw/0789VruFtmd3dHZmiLJIkczsuTHjCyZvGCPCVuB y2cTr5CdB87I/z79rSdmdwLH6bhHGkirxj9PhOj9UjkicvVDK3Nt/9/TG0mDGiXl2IlzUq1S iqzbekL+9MwGf5mZAy6WWlWKy/X9v/G/9sz99WTDjpNSu2oJ+e3lFeTnO7VEftdvtSwc1VRu GbiWgBXvHybahwACCDglQMBySjJ69diZ3fn9ryrLkHvryPGT5+TLb4+bIKGzNtf2/uVS2B+u rSyDutQx9zi99ekhT8zu5DdO61UrIa8PuVS27zstdzz1ba4O+HJyc/l41VFz+fu9Mc2kQpmi 0vqRX0KYXh78+oefpO/fNp3Xcfq39746LLddd4F8sOKIDJy+VRaNbiodnyBgRW+U884IIIBA jAkQsGKsw/LZXDuzOz3/UEP+dHOavLb0gPnmnc7a3NCiogyYtkU+/PpHU7veg7TrUKbcP/aX S2LRnt3Jb5zqzetVKhQzM1M683RFwzLyUKcaMmDqZhOI9LVuz34v0x69SBpfWFp+1fPnEKnt 1Xv97hn1nSkTuEzpd5HUvKC4uQerd+ca0mnQOvnLH2tJSrFkeXhc7pvduUQY+58dWoAAAgi4 JkDAco02YhXbmd3x/Ybep2uOSb9Jm0S/CahBYszrO2TesoOiAUMvqeW9Z8nXmGjN7gS28elu F8qvm5aXU2fOyePTtvgfoTC8a11pf00lmbZor7k8+Ksm5eTw8SwpU7KIfLb2mAz5+1bTDP0N wTppJaRNv9zfPNSb+fXS4hMvbTWXTD8ed7lk5+TIidPZ8vs8lwe1HgJWxIY4b4QAAgjEnkB+ B2erX9PP21qrD3/U9SL5Ff/Y6xV7W2x3dufNp5vITyfPmXuK9Ft4v25SzjyeYOh9deV3V1SQ Vz/YL0WKJEnbKyuaYPLC/F1mg6I5u5M3YH269pi5fJd30Uug73x+yP+yXu7Uy5yBi97gnp2d 45+x8/1Nx6/e1D7jX/ssdQAByxIThRBAAIHEFAg8cOX3cMbRs3f4YVLLFg36oMZgjwfwwlf8 f9h1SgbG8aMo7M7uHD+RJb061zA3uVcqV8zM1uiTyh+9o5Z5+KZvOZed4795PNqzO8y0Wt8/ ee6ncqxvOiURQACB+BEIPHDl93DGdo+v8TdWn52U34Mauz6zIejDH73wAMd4fxRFuLM7OlP5 +dpj5jEFoZZoz+4QsEL10C9/J2BZt6IkAggg4JpA4IHLysMZAzfE96BGfc5QsIc/Pv9wg6g/ wDHeD87x3j4dc4nQRqc+5AQspySpBwEEECiEQOCBK9TDGQPfJu+DGoM9/FG/fRbtBzjG+8E5 3ttHwLL3ASdg2fOiNAIIREFAf0Zm1Ozt5iGF0V6aXFhaBt5dx/GfkQk8OId6OGOgQd4HNRb0 8EcvfsU/2v3p5A3SBKzo9KaTfehkCwhYTmpSFwIIuCKg9xat9UC48jXO9xV7JxsbeHAO9XDG vJcH83tQY0EPf/TCV/ydtCtMXU4enAlYhemJ8Nd1sg/D34rz1yRgOalJXQgg4IpAoh24/vO3 K/J9OGPgAxyP/JRV4IMa8z780dcxXvmKv9WBEuyRE/pNyl83q5DrUQDB6ozUoygSbZxa7UO3 yxGw3BamfgQQiFuBRDtw6TOR8ns4Y+ADHKct3JPvgxqDPfxRB4dXvuJf0GMmAgdxsEdOvNj/ Imlct7QcPn5WLqhQTCa+uVvmfHTAtG9CrwZStGiy+W28vYczpXSJZKmammJ+IHjtlvMvMTt5 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 090uNOX0MqDe 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 jTwsCEiHAAAAAElFTkSuQmCCAA== --B_3637228935_1391026131 Content-type: image/png; name="image002.png"; x-mac-creator="4F50494D"; x-mac-type="504E4766" Content-ID: <[email protected]> Content-disposition: inline; filename="image002.png" Content-transfer-encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAJYAAAAZCAYAAADT59fvAAAACXBIWXMAAAsSAAALEgHS3X78 AAAFO0lEQVRo3u1b0ZHiOBB9QvsPGUAGQwb4g19qfRHgjWC8EawngvVEsEwE6y1+qRpPBhDB mgjWBODSfVyz5+tpW7KRYeuKrvKPLctq6an7vUYoYwzudjff9uEaH1FKTwDMa7cKY6riPv3/ X1PAKAIQ9XnZmCqwgCkGEAJ4EJqcAGQAEhvIlNIpA+bemCru+M7GmGpTe879zo2pEkufObsV G1PtW77ZZHv6XuawKbusTwkgJ19L1s8GwKze1pgqtHx7BmDDbmfGVKnDWEYJMDJ9LmMMpAsY xcCo7NBXCowmLf3lrH3e1LblnYQ9l/wOLH22the+absKYBRZvtlnfUrB31BoF3ecw7JtnerX aIC0twHwFcC4w2uPAHKKcre0zZXHMAXwjebMp40BfKn3S9HxB2uXUFSS1jEEsBAidOkygNEA oFr3fP3hDwDXFEByg++uBwDXud96uouIgtQBmDbQGD6etzqV6EPeX4ROXUAVNoDqDUBa5xNK 6Tnxr7UAroSe3coeldKZMVXuoa/PxKfqduaeCwEEewf+cmiZnxjAR+FeRlGrVEonlFHO9lEp HTK+l7CMc+rBw9/l8MQlhwr5uOiRw4MGLhbciGPVuc/EA8cKWsYXNXCjiWWcucXvzMaFhXH+ 9pfWxFyKCS+pkJTLlN1+su0+igqSsoxwWxs8JVJa+Sxwo0t9l1JbYJnfur/8/YNNLQ/Jsbhs PboOhuT6C08LNwDTSUiJwcDgSgEc2e1gaEepvPMk+JsKpaFeQJc4VkB5uFU9sdpTYNs1Fks4 mJTSgSee46wIaYNMmUqcuyqhnpaRKvYFrLAhM/B7CfHiB6bO6/Zcr9NdCqyFQCy55QAKFsL5 8047SCl96lii8G0l7c5XIUUMKSb2QjrsQ0cmNP5Hgeyjhey/Njw7XkIHRkPMVE+U73Fjo539 fOWUWHRsv1BKG34B+MXUnjV7NPj7OwXaInW1Xc6q7TKotsvZVYDVcyHm+DMsEXjPkIXTIet2 Lw61J8nfH200pNouw2q7LAD8pIj3s9ou82q7DNpS4ZtDKisE4jtmIMk7AHF24zRY38UlqdzX K6nEoTbUk4uAIn8Lxi33LaBKhXR7plCv1Xb5Sa92GwlYeQ95mbPCXNyRwPPvnTwQ98UF4MqV 0s9sAh8HAkAkbGybeuULP2PAOPYpEdiMIpJtHtJqu8x8pUL+K/2UpKtr2lxb+iu67PKG37+6 chkpRfimDDHe1/9sJx72xlRB/RKU4NRB2fvYBJKNAURegEV5/CiQ3sQysWHDRCYWlTmmdNWm di4SB0RcowFBFTak16zH/Eu1wHgAXjhz5Y0+ybu0mF+U0oVSOqo7qZQOldIZgO8Ct3oWzmdJ k51K4CIw83B97KNULarJiT8ppQN2hfSDs+T70wUHIBMhcqS4jU28nSA1psoEXnImvt/wz/EQ WzcH6QAfEUze95j6TGvRaN4gAi5JCwlFrj7i4muHtodLeBHVAl8YrVgrpROPp3VdC8WF13ID gaLvDj+gveqcQC72jfFvUXfcU3LfLCU6+t5lE/CfpjYex+kSAU8ANt7rWASuvwQHbdK49acT ehagvZIsgSry4JN0SM6HnVx87xK1hMVf+Crw6tUuF7jcO0qkV7vyA6mltwvUU1NanJFaiRqk /5G4U+oaqmny58StYshn6UEgSC0li65+RwLXK3sKhIIESeYAKD7OvUNUCYSxt83F3lVB69Uu ouJozDLEkUCVAYC61t+/6HDfpEaKffUbCIT7blewWqW91Kvdf8Cp7v8rvNsQ9jcdsVe3hljo OQAAAABJRU5ErkJgggA= --B_3637228935_1391026131 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Openexr-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/openexr-devel --B_3637228935_1391026131--