Comments (2)
After deciding to give OpenMP a try, I actually got some usefull results.
So instead of:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++-10 -DWITH_MPI=On -DWITH_OPENMP=Off -DCMAKE_CXX_STANDARD=20
I now build LULESH with:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++-10 -DWITH_MPI=Off -DWITH_OPENMP=On -DCMAKE_CXX_STANDARD=20
And this way, I actually receive the same 'Final Origin Energy' values of the lulesh2.0_changes.pdf mentioned above.
So either something with my build/run process for MPI is wrong or LULESH has some wrong rank logic, I assume.
But I still have the general question of validating results as a mean of testing various real types. The paper https://www.osti.gov/servlets/purl/1117905 mentions the type Real_t
:
Can be defined as float, double, long double, or any other numeric type suitable for real
number arithmetic. Furthermore, since LULESH has been written in C++, LULESH can be
extended to support user defined types for fixed-point or interval arithmetic if those features are
not natively supported in the hardware, compiler, or runtime system.
How would I validate/compare my different types, the paper lulesh2.0_changes.pdf generally just has values for double
.
I guess the smaller MaxAbsDiff
, TotalAbsDiff
and MaxRelDiff
are the more accurate my real type is.
The three measures of symmetry should all be 1eā8 or smaller in double precision for 1003 mesh discretizations of smaller.
https://asc.llnl.gov/sites/asc/files/2021-01/lulesh_ports1.pdf
But that would mean floats simply are not accurate enough to even test this. Is this assumption correct? Since floats have a maximum precision of up to 1e-7
from lulesh.
You have to use the table from the Lulesh 2.0 documentation when using LULESH 2.0 (https://asc.llnl.gov/sites/asc/files/2021-01/lulesh2.0_changes1.pdf).
It says:
Due to changes in how the initial timestep is set and the initial energy is deposited the correctness values in are no longer correct for LULESH 2.0.
You also have to use Total number of elements
from the terminal output for the lookup in the table (size column). Since your using 8 MPI slots, the number of elements is not 5Ā³, but 8 * 5Ā³.
I get the result for 10Ā³ using 8 MPI slots and s=5:
$ mpirun -n 8 lulesh2.0 -i 231 -s 5
Running problem size 5^3 per domain until completion
Num processors: 8
Total number of elements: 1000
To run other sizes, use -s <integer>.
To run a fixed number of iterations, use -i <integer>.
To run a more or less balanced region set, use -b <integer>.
To change the relative costs of regions, use -c <integer>.
To print out progress, use -p
To write an output file for VisIt, use -v
See help (-h) for more options
Run completed:
Problem size = 5
MPI tasks = 8
Iteration count = 231
Final Origin Energy = 2.720531e+04
Testing Plane 0 of Energy Array on rank 0:
MaxAbsDiff = 8.185452e-12
TotalAbsDiff = 1.512035e-11
MaxRelDiff = 2.520539e-15
Elapsed time = 0.04 (s)
Grind time (us/z/c) = 1.4438799 (per dom) (0.18048499 overall)
FOM = 5540.6269 (z/s)
from lulesh.
Related Issues (9)
- Errors on large(r)-scale runs HOT 6
- Volume error When running with cuda and mpi HOT 4
- Negative FOM when Running Large MPI Counts HOT 5
- Issues with Cuda 9.0 HOT 2
- temporal causality and version release dates
- Why does the z/sec fall drastically with higher core/thread counts? HOT 1
- OpenMP 4.5 Version?
- Strange use of std::vector::clear/resize HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
š Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ššš
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ā¤ļø Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lulesh.