Shearwater Reveal is a seismic processing code that does time and depth analysis for land and maritime applications. Shearwater Reveal land processing tools cover all aspects of land processing from refraction statistics to final time and depth imaging.
POP performance assessments located inefficiencies in the most computationally intensive OpenMP region to a critical section which is protecting file read/write operations from race conditions. A POP proof-of-concept was undertaken to remove the need for this critical section and assess the potential gains that could be achieved. The proof-of-concept identified that file I/O inside the critical section was hindering the code’s performance significantly and the following recommendations were made to improve this:
- Reduce file I/O where possible by improving re-use of data;
- Remove file I/O from deep inside loops;
- Combine file I/O to improve the writing performance as large single reads/writes to file I/O are more efficient that multiple small reads/writes;
- Implement dynamic load balancing which improved the load balance efficiency to close to 100%;
- A small section of serial code was identified for potential parallelisation.
The modified code with all I/O and memory allocation/deallocation removed (yellow line) from the region of interest shows a performance gain of 44% when compared to the original.
Changes were made based on our analysis and for a full scale production run the computational cost was close to halved.
Further information on improving and profiling file I/O in applications can be found on our learning materials page and a webinar specifically focused on file I/O.