-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Norm computation issue #31
Comments
Thank you for this report. We will look into this. |
Hi Antoine, I don't understand how it's possible to get a max error of -999. The initial value of -999 is compared against the output of Could this be compiler-specific? Does the operation |
Hello, I observed this behavior with AOCC 4.1 only (well, I did not try the whole thing with all the SW stacks at hand). Despite the max operation behaving similarly with other compilers (see below), something must be wrong somewhere else too. Regarding the result of this specific max operation, here is the result with some compilers : ! print NaN too
print *, max(-999, NaN), NaN With default flags (e.g.,
With aggressive flags (e.g.,
|
Is this pseudo-code, or should I actually be able to compile this?:
The reason I ask is because I don't recognise NaN as a Fortran keyword. And indeed, ifort gives
Also I'm not sure what result you should expect when comparing -999 (an integer literal) with NaN (a floating-point literal). Going back to the problem, I would need to be able to reproduce it exactly to figure out what's going wrong. Could you share the modifications you've made to produce these error norms? Perhaps I can reproduce the problem with ifort? I tried running your benchmark command after building ecTrans with intel/2021.4.0 but it gives this
Again I can't see how it's possible for this calculation to give -0.999E+03:
I think the problem must be related to NaNs somehow but unless I can reproduce it with ifort I'm not much help :( |
@antoine-morvan is there any update on this issue? |
Hello, I did not have time to work on this lately. Best regards. |
Hello,
Problem
I tried a configuration that make the computation go way off, (E+03). However, when using
--norm
to check deviation, the max error combined is 0. This is because 0 is greater than -999.Still, the computation is wrong and this should get caught.
My wrapper script was missing this deviation because it is focusing solely on the combined result.
Setup
To reproduce:
ectrans-benchmark-dp --norms -n 5 -l 137 -t 319 --vordiv --scders
Some Leads ?
After few investigation, I spotted 2 potential causes:
zmaxerr(:) = -999.0
. It would be wiser to initialize the max error with 0.ectrans/src/programs/ectrans-benchmark.F90
Line 756 in 8d13aa3
znormvor(:)
znormdiv(:)
znormt(:)
znormsp(:)
comming withNaN
values.ectrans/src/programs/ectrans-benchmark.F90
Lines 757 to 784 in 8d13aa3
Use this to print the divider:
This could come from these arrays being initialized with a function declared as C binding, iterating over non-contiguous segments.
But that would require more investigation to confirm :)
Best.
The text was updated successfully, but these errors were encountered: