Reaching way back - I do recall performance differences between 4.1 and 4.8, though it was for reading and 4.8 was faster. The exact reason I can’t recall. This sounds different.
Which case in copyFromFrameBuffer() are you hitting? The code is actually pretty straightforward at it core - its memcpy or memcpy with byte order swizzing. Karl On Mon, Apr 22, 2019 at 10:20 AM Gyula Gubacsi <gyula.guba...@foundry.com> wrote: > Hi, > > Following up on this, we tried the suggestion of using the > ILMBASE_FORCE_CXX03 but did not make any difference in our measurement. So > I went on and investigated the issue closer. I've eliminated a few > differences before I got something that might be the cause of the problem. > > So, our OpenEXR build, 2.2.0 was built with the standard compiler at the > time, gcc 4.1.2 if I'm right. I have compared this to the OpenEXR 2.3.0 > which I built with GCC 4.8.5. In order to eliminate the differences, I've > rebuilt OpenEXR 2.2.0/2.3.0 with gcc 4.8.5 (vfx17) and gcc 6.3.1 (vfx19). > The results seem to indicate that OpenEXR 2.2.0 experiences the same > slowdown as 2.3.0 with these compilers, as compared to the one built with > gcc 4.1.2. When investigated with VTune, I found that the function that > rises the most significantly in execution time, is > Imf2_X::copyFromFrameBuffer(). This is true for both 2.3.0 and 2.2.0. So > it seems that the slowdown. We would normally expect speed ups with newer > compilers, but of course it's never a linear path. There was some slowdown > also in the rleCompress function, but with generally less impact (at the > moment I'm focusing on RLE compression as in our experience this suffered > the most significant slowdown, but now I suspect it might as well be a > relative portion of slowdown that made this compression type slower). I > also read on some threads that people experienced significant gains on DWA > performance when switching gcc 4.1.x to 4.8, which confirms our finding as > well. > > Any experience with different compilers? The copyFromFrameBuffer function > seems to be very complex and it might have been an overly optimistic > optimisation back in 4.1.2 that might have been removed since. > > On Thu, 4 Apr 2019 at 13:22, Tony Micilotta <tony.micilo...@foundry.com> > wrote: > >> Hi Peter and Nick, >> >> >> >> Thank you for the suggestions and performance findings. We rebuilt with >> ILMBASE_FORCE_CXX03 >> defined, however the write speed changes remain unchanged . We’ll look at >> your suggestions too Peter and will also take a peak with vtune. >> >> >> >> Regards, >> >> Tony >> >> >> >> *From: *Peter Hillman <pet...@wetafx.co.nz> >> *Date: *Wednesday, 3 April 2019 at 07:30 >> *To: *Nick Porcino <mesh...@hotmail.com>, Tony Micilotta < >> tony.micilo...@foundry.com>, "openexr-devel@nongnu.org" < >> openexr-devel@nongnu.org> >> *Subject: *Re: [Openexr-devel] OpenExr 2.3 - slower write speeds for >> Uncompressed and Zip1 >> >> >> >> I've just been running tests myself along the same lines. >> >> 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-stdcxx=03 to ./configure) >> >> This attempts to use the API in a similar way to the Nuke exrWriter >> example (my code attached) >> >> >> >> Conclusions: >> >> >> >> 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 >> threadpool is used (so running the attached test using *testEXR zips >> none 1 /tmp/test.exr*) or the number of threads is close to the number >> of CPU cores regardless 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 100 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. Both 2.2.1 and 2.3.0 run slower with excessive threadpools, >> but the effect is significantly more in 2.3.0. >> >> >> >> I wonder if somehow Nuke's other threads are interfering 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-contained >> method triggered from a button press in a Nuke node, so it runs within >> Nuke's existing framework but doesn't use any Nuke functionality at all, >> and see if there's a difference between that and running the function as a >> standalone binary outside of Nuke. >> >> >> >> I'm intrigued that, according to the graph, the compression schemes that >> write 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 block have lower overhead through IlmThread. In my case I didn't see >> any significant speedups with 2.3.0 in any scheme. >> >> >> >> Peter >> >> >> ------------------------------ >> >> *From:* Openexr-devel <openexr-devel-bounces+peterh= >> wetafx.co...@nongnu.org> on behalf of Nick Porcino <mesh...@hotmail.com> >> *Sent:* Wednesday, 3 April 2019 5:05 PM >> *To:* Tony Micilotta; openexr-devel@nongnu.org >> *Subject:* Re: [Openexr-devel] OpenExr 2.3 - slower write speeds for >> Uncompressed and Zip1 >> >> >> >> >> >> 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. >> >> >> >> e.g. >> >> >> >> >> https://github.com/openexr/openexr/commit/eea1e607177e339e05daa1a2ec969a9dd12f2497 >> >> >> >> >> https://github.com/openexr/openexr/commit/bf0cb8cdce32fce36017107c9982e1e5db2fb3fa >> >> >> >> 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 more information? >> >> >> >> >> ------------------------------ >> >> *From:* Openexr-devel <openexr-devel-bounces+meshula= >> hotmail....@nongnu.org> on behalf of Tony Micilotta < >> tony.micilo...@foundry.com> >> *Sent:* Monday, April 1, 2019 8:27:29 AM >> *To:* openexr-devel@nongnu.org >> *Subject:* [Openexr-devel] OpenExr 2.3 - slower write speeds for >> Uncompressed and Zip1 >> >> >> >> Hi, >> >> >> >> At Foundry we’ve started testing the read performance of OpenExr 2.3 with >> Boost 1.66 as we move Nuke towards conforming to VFX Reference Platform >> 2019. Although the release notes don’t mention any changes to file writing, >> we have charted (see graphic below) OpenExr 2.3 write performance against >> OpenExr 2.2 as we noticed a slowdown in our playback cache generation which >> uses OpenExr. >> >> >> >> From Nuke, a checkerboard/colourwheel combination is generated and >> animated over 100 frames in order to eliminate file reading from the >> measurements. These 100 frames are written to disk using each compression >> type, and the timings are averaged over 10 test runs. Certain compression >> types show an improvement which is great, however we’re concerned that >> Uncompressed and Zip1 are 13% and 9% slower respectively: >> >> >> >> [image: >> /var/folders/40/8tkm41ts6pl0g3qvshsrrnpc0001xc/T/com.microsoft.Outlook/Content.MSO/515C417.tmp] >> >> >> >> Have you benchmarked this on your side too, and have you noticed similar >> metrics? >> >> >> >> Regards, >> >> Tony >> >> >> >> >> >> >> *Tony Micilotta* >> >> Senior Technical Product Manager - Nuke Family >> >> [image: >> https://lh6.googleusercontent.com/x8JxqXcMjULW_8dLygamrZxWcjpFchCVThRNxLrFSEsE_i1aMPBED6FYrUWu6lT54vMN4z1x3D59uPxzh1ughmlVxH5-6yflHx_SZlGAUZV3NA3FatIrHplrrBasCyGa3MhHz8Ti] >> >> *Tel*: +44 (0)20 7479 4350 >> >> *Web: *www.foundry.com >> >> >> The Foundry Visionmongers Ltd. - Registered in England and Wales No: >> 4642027 - Address: 5 Golden Square, London, W1F 9HT >> <https://maps.google.com/?q=5+Golden+Square,+London,+W1F+9HT&entry=gmail&source=g> >> - VAT No: 672742224 >> >> >> > _______________________________________________ > Openexr-devel mailing list > Openexr-devel@nongnu.org > https://lists.nongnu.org/mailman/listinfo/openexr-devel >
_______________________________________________ Openexr-devel mailing list Openexr-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/openexr-devel