Repository navigation
Conversation
|
Claude Code Review Head SHA: 14fbd9a Files changed:
Findings:
|
./mfc.sh format, as the lint gate requires: one MPI_FILE_WRITE_ALL line exceeded the line limit with the section, and the original patch had dropped the spaces in an unrelated GPU_UPDATE line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lines of Code
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #2085 +/- ##
=======================================
Coverage 61.90% 61.90%
=======================================
Files 86 86
Lines 22885 22885
Branches 3369 3369
=======================================
Hits 14166 14166
Misses 6220 6220
Partials 2499 2499 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@Tix3Dev, your results table isn't very clear. The |
|
@wilfonba, when running Error (3D_TaylorGreenVortex)Environment to reproduce
Minimal working example output (+env info) |
|
May I ask why you built OpenMPI from scratch with the NVHPC compilers rather than using the bundled MPI? This seems more like an issue with your custom OpenMPI build than with how MFC writes data. |
|
This makes some sense, pending if this is an apples/oranges comparison (why I find our env to be 'fine' supposing it's correct (the test pass?) so i don't really care about your mpi implementation if other known correct MPI casses work. I do find your minimal reproducer strange... NaNs are reported at time-step-save time. you got them. the run should have aborted right away but waiting for a collective, which is fine, but seems entirely irrelevant to the case. Your output is the thing that would matter (it takes things that are wrong and makes them right via your fix). but i don't see the evidence that you solved the problem (other than less disk space). you seem to be solving two problems at once? if so, support both claims cleanly. notably - you're claiming current MFC output is wrong. big if true |
Description
When using parallel I/O in MFC (e.g., when parallel I/O is enabled in
case.py), reading and writing operations via MPI-IO can fail, suffer from severe performance overhead, or exhibit incorrect behavior. Specifically, passing whole array pointers (%sf) directly intoMPI_FILE_READ/MPI_WRITEcalls can lead to unoptimized data layouts, triggering inefficient memory handling or incorrect byte streaming.Changes
This patch updates the MPI-IO read and write calls across
post_process,pre_process, andsimulationmodules to pass full array sections (%sf(:,:,:)) instead of the base pointers (%sf).(:,:,:)) force the compiler to ensure the array data is properly continuous or packed according to the expected bounds before handing it over to the MPI library.Performance & Storage Impact
Tested with the
3D_IGR_jetand3D_TaylorGreenVortex(N = 128) cases on 4 NVIDIA A100 GPUs across 4 MPI ranks.Step Size: 50
Step Size: 10
D/folderrestart_data/Step size: 300
D/folderrestart_data/Since the fix doesn't change any numerical code, accuracy and convergence remain unchanged.
Acknowledgments
This fix was developed by Team RACKlette (ETH Zürich) as part of the Student Cluster Competition (SCC) at SC26.