[ncl-install] floating overflow with Periml

Johnny Chang Johnny.Chang at nasa.gov
Sun Mar 20 21:19:22 MDT 2011


Hi Jemma,

No.  Without the -fpe0 flag, you will just get NaN's if the program's
execution path has floating point exceptions.  One typically turns on
-fpe0 only for debugging NaNs.

Johnny

On 3/20/11 7:17 PM, Jemma Wu wrote:
> Hi Johnny,
>
> Thank you for your help!
>
> If the Intel compiler does floating point speculation by default, does this mean
> that I can turn off the fpe0 and the compiler could still throw floating
> overflow exception if the branch  that will be executed has an floating point
> overflow? Actually, my program can run correctly if I don't turn on the fpe0.
>
>
> On Mon, Mar 21, 2011 at 11:33 AM, Johnny Chang <Johnny.Chang at nasa.gov
> <mailto:Johnny.Chang at nasa.gov>> wrote:
>
>     Hi Jemma,
>
>     The floating overflow is most likely a "false positive."  The Intel compiler
>     does floating point speculation by default.  What this means is that if you
>     have an if-then-else-endif block, the compiler can issue instructions for
>     both branches to be executed *before* the if condition has been evaluated.
>     After the if condition has been resolved, then the floating point operations
>     in one of the branches is thrown away.
>
>     For example,
>
>         if (cos(x) .ne. 0.0) then
>            y = 1.0/cos(x)
>         else
>            y = cos(x)
>         endif
>
>     When you turn on -fpe0 for your Fortran program, it turns off floating point
>     speculation for the Fortran program, but not for the ncarg libraries!!  So,
>     the divide by zero in the example above, which most likely is also present
>     in the ncarg library, will cause your program to stop even though it would
>     not be used in the actual execution path of the program.
>
>     The solution is to build a version of ncarg with -fpe0 or
>     -fp-speculation=safe for debugging purposes.  If you are interested in
>     tracking down the actual
>     line in the ncarg source that's causing the problem, then rebuild ncarg with
>     the -traceback -g options (in addition to the other optimization options).
>     Then your stack trace below will give you the line number in the ncarg source
>     that's causing the floating overflow.
>
>     Johnny
>
>
>
>     On 3/20/11 4:44 PM, Jemma Wu wrote:
>
>         Hi all,
>
>         I have built and installed ncarg.v5.2.1 under OpenSUSE 11 with Intel
>         compilers.
>         Now I have a problem with calling Periml (Gridal package) in my fortran
>         program.
>         The program can be compiled and run (appears correctly) if I don't add
>         the float
>         point exception flag (fpe0). However, if I add the fpe0 flag and compile
>         and run
>         it, then it will stop with a floating overflow. I debugged it and found
>         it is
>         with the Periml call.
>
>         I then found an example (tgrida) in ncarg with Periml and tested it with
>         adding
>         the fpe0 option, and it also have the float overflow problem. My compilation
>         options are as follows.
>
>         ifort –fpe0 -traceback -O0 -o tgrida tgrida.f -L/usr/local/ncarg_build/lib
>         -lncarg -lncarg_gks -lncarg_c -lX11 -lXext,
>
>         and the running results are
>
>         ~/model/ncl_ncarg-5.2.1> ./tgrida
>         forrtl: error (72): floating overflow
>         Image              PC                Routine            Line        Source
>         tgrida             00000000004FCDFB  Unknown               Unknown  Unknown
>         tgrida             000000000040688E  Unknown               Unknown  Unknown
>         tgrida             0000000000406330  Unknown               Unknown  Unknown
>         tgrida             00000000004054FC  grida_                     85  tgrida.f
>         tgrida             0000000000405339  MAIN__                     22  tgrida.f
>         tgrida             000000000040529C  Unknown               Unknown  Unknown
>         libc.so.6          00007F539004AB7D  Unknown               Unknown  Unknown
>         tgrida             0000000000405199  Unknown               Unknown  Unknown
>         Aborted
>
>
>         Does anyone know what's wrong?
>
>         Any comments would be appreciated.
>
>         --
>         Regards,
>         Jemma
>
>
>
>     --
>     Johnny Chang
>     650-604-4356
>
>
>
>
> --
> Regards,
> Jemma
>


-- 
Johnny Chang
650-604-4356


More information about the ncl-install mailing list