OpenZGY performance work.
OpenZGY performance work.
-
Replace OpenMP "pragma omp parallel for" with a newly written module. Old ZGY did not do multi-threading at all. Introducing OpenMP to improve performance actually made the code slower on Windows. Because Microsoft's implementation of OpenMP is decades old and very slow when used in a large application. This fix should help in many scenarios within Petrel. Less so for the stand alone ZgyTool, which didn't have that problem in the first place.
-
Generate low resolution data one brick at a time, like the old ZGY library did, instead of one brick-column at a time. This saves a few buffer copies. And the effort of combining multiple bricks to make one column, and later splitting them up again. Note that this fix only works for writing newly created uncompressed on-prem files. And the improvement is most noticeable for files that are small compared to available RAM.
-
Efficiently handle writing of huge files with almost exclusively dead traces. Decimation was run on all bricks, not just the ones with data. Added a shortcut.
-
Add miscellaneous other tweaks.
The pull request has some risk. Mainly due to the amount of code affected (10% of the entire library). However, the changes have already been integrated into Petrel without any reported issues.
These changes correspond to PR 436996 and 439000 in the internal SLB repository.