Strategies for Optimizing GPU-based EOS & Opacity Table Lookups in AMReX #4744
-
|
I'm working on an AMReX-based simulation where our physics kernels, running on the GPU, require frequent lookups from large, read-only Equation of State (EOS) and opacity tables (e.g., 2D or 3D tables, ~500MB size for each table). Getting this right is critical for performance, and I'm facing the classic challenge of balancing memory management, data locality, and efficient computation. The two main hurdles are:
I'm looking for advice or best practices from the community on a few specific points:
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 6 replies
-
|
If you want texture memory, you will need to roll your own. Otherwise, you might want to have a look at amrex::TableData https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1TableData.html#details. If you run your jobs on a lot of nodes, having every process read 500 MB of data all at the same time might be bad for file system performance. Here is an example of limiting the number of processes doing I/O at the same time. |
Beta Was this translation helpful? Give feedback.
If you want texture memory, you will need to roll your own. Otherwise, you might want to have a look at amrex::TableData https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1TableData.html#details.
If you run your jobs on a lot of nodes, having every process read 500 MB of data all at the same time might be bad for file system performance. Here is an example of limiting the number of processes doing I/O at the same time.
amrex/Tests/FillBoundaryComparison/main.cpp
Line 33 in 3c1f1c7