[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

971121: compiling netcdf on VPP 300



Peter,

>Date: Fri, 21 Nov 1997 12:50:37 +0000 (GMT) 
>From: P M Oliver <address@hidden>
>Organization: DCI Systems & User Support Group, RAL
>To: Steve Emmerson <address@hidden>
>Subject: Re: 971117: compiling netcdf on VPP 300 
>Keywords: 199711141550.IAA06528

In the above message, you wrote:

> > Please pardon my ignorance, but what the heck is a vpp300?
> 
> It's a Fujitsu Supercomputer , parallel vector, 2.2Gflops per node, 2 Gb 
> per node.
...

> > Ouch!  The above looks like a problem with your compiler environment.
> > What does your systems administrator say about this problem?
> 
> I'm the system admin and I don't say alot :-) I'll have a chat with our 
> fujitsu friends
...

> > Interesting.  That constant was carefully chosen to be a valid
> > floating-point value on IEEE systems (which, apparently, the vpp300
> > is).  I note, however, that FLT_MAX on our SunOS 5.6 system is
> > 3.402823466E+38F -- a slightly smaller value.  One possible cause for
> > the warning is that the vcc compiler uses an algorithm for converting
> > a decimal floating-point value into a binary one that is slightly
> > different than that of most IEEE machines.
> > 
> > I suggest manually modifying the file libsrc/ncx.h: change the line
> > 
> >     #define X_FLOAT_MAX     3.40282347e+38f
> > 
> > to
> > 
> >     #define X_FLOAT_MAX     3.402823466e+38f
> > 
> > or even
> > 
> >     #define X_FLOAT_MAX     3.40282346e+38f
> > 
> > and excute the command "make" in the libsrc/ directory.  Does the
> > warning dissapear?
> 
> Yep , but I had to be a bit more forceful ie force FLT_MAX 
> 3.40282346e+38f else it kept using the one in /usr/include/float.h set to 
> 3.40282347e+38f
...

> > Interesting!  Would you please go into the libsrc directory, execute
> > the following test program, and send me the output:
> > 
> >     #include <stddef.h>
> >     #include "ncx.h"
> > 
> >     void
> >     main()
> >     {
> >     ptrdiff_t   stride = -1;
> > 
> >     puts((unsigned long)stride >= X_INT_MAX
> >             ? "(unsigned long)(ptrdiff_t)-1 >= X_INT_MAX"
> >             : "(unsigned long)(ptrdiff_t)-1 < X_INT_MAX");
> >     }
> > 
> > It should print the first string.
> 
> Yep, OK here
> 
> (unsigned long)(ptrdiff_t)-1 >= X_INT_MAX
...

Hmmm...

What's the size (in bytes) of the C type "ptrdiff_t" on the system?
Would you please send me the "typedef" declaration of "ptrdiff_t".

--------
Steve Emmerson   <http://www.unidata.ucar.edu>