[ncl-install] floating overflow with Periml

Jemma Wu jemma.wu at mq.edu.au
Sun Mar 20 20:17:12 MDT 2011


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>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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-install/attachments/20110321/33d95192/attachment.html 


More information about the ncl-install mailing list