NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

Re: simple FORTRAN code for GEMPAK that fails on 64-bit Linux machines

Gembuds,

It turns out that g77 is storing these real functions as real*8 under
64-bit Linux systems.  There are two work-around solutions:

1) explicitly declare the pr_sped (or any such GEMPAK function) you
   are using as real*8, e.g.,
     program test
     real*8 pr_sped
     call in_bdta(iret)
     u = 5
     v = 4
     spd = pr_sped(u,v)
     print *,'spd = ',spd
     stop
     end
   This works for 64-bit ifort on the 64-bit Linux machines that have
   used 64-bit g77/gcc to compile the GEMPAK libraries.  So the
   compile sequence looks like:
    source /usr/local/intel/fce/9.0/bin/ifortvars.csh # 64-bit ifort
    setenv GEMLIB /gemdir/NAWIPS-5.9.4/os/linux64/lib # 64-bit GEMLIB
    ifort test.f $GEMLIB/gemlib.a -lg2c
2) use 32-bit ifort, 32-bit g2c, and 32-bit GEMPAK libraries. On a
   64-bit RedHat box this was accomplished this way:
    source /usr/local/intel/fc/9.0/bin/ifortvars.csh # note fc not fce
    setenv GEMLIB /gemdir/NAWIPS-5.9.4/os/linux/lib  # note linux not linux64
    ifort test.f $GEMLIB/gemlib.a \
    /usr/lib/gcc/x86_64-redhat-linux/3.4.3/32/libg2c.a  # note /32/libg2c.a

Another possible solution is to build GEMPAK with ifort.  We have
managed to do this in the past, but have found that a handful of
programs are fouled up.

Thanks to Harry Edmon for figuring this out.

David
--
David Ovens              e-mail: ovens@xxxxxxxxxxxxxxxxxxxx
Research Meteorologist    phone: (206) 685-8108
Dept of Atm. Sciences      plan: Real-time MM5 forecasting for the
Box 351640                        Pacific Northwest
University of Washington          http://www.atmos.washington.edu/mm5rt
Seattle, WA  98195               Weather Graphics and Loops
                                 http://www.atmos.washington.edu/~ovens/loops

On Tue, Apr 24, 2007 at 10:16:37PM -0700, David Ovens wrote:
Gembuds,

I guess this must be an 'ifort' problem because I just figured out how
to compile this on 64-bit machines with 'g77' and it works!
  g77 -fno-second-underscore test.f $GEMLIB/gemlib.a;a.out
  spd =   6.40312433

Still, can anyone get 'ifort' to work on this code on a 64-bit Linux
box?

David
--
David Ovens              e-mail: ovens@xxxxxxxxxxxxxxxxxxxx
Research Meteorologist    phone: (206) 685-8108
Dept of Atm. Sciences      plan: Real-time MM5 forecasting for the
Box 351640                        Pacific Northwest
University of Washington          http://www.atmos.washington.edu/mm5rt
Seattle, WA  98195               Weather Graphics and Loops
                                  http://www.atmos.washington.edu/~ovens/loops


On Tue, Apr 24, 2007 at 10:09:07PM -0700, David Ovens wrote:
Gembuds,

I have this incredibly simple FORTAN code, test.f, that works fine on
32-bit Linux machines with any version of GEMPAK, but that fails
miserably on all of my 64-bit Linux machines with any version of
GEMPAK (I've tried 5.9.4 and 5.8.3ag3 specially built for 64-bit).  I
am curious if anyone out there can successfully run this on a 64-bit
Linux machine.  And, if you can, please share your
$NAWIPS/config/Makefile.linux.

Code test.f:
      program test
      call in_bdta(iret)
      u = 5
      v = 4
      spd = pr_sped(u,v)
      print *,'spd = ',spd
      stop
      end

Compile and run:
  ifort test.f $GEMLIB/gemlib.a -lg2c; a.out

Correct answer:
spd = 6.403124
64-bit Linux box answer:
 spd =  -1.0842022E-19



  • 2007 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the gembud archives: