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

20010516: NetCDF 3.5 on NEC SX-4



Karen,

> cc: address@hidden
> From: Karen Haskell <address@hidden>
> Subject: NetCDF 3.5 on NEC SX-4
> Organization: NEC Systems, Inc.
> Keywords: 200105162101.f4GL17p22490 netCDF 3.5 NEC SX-4

The above message contained the following:

> I encountered problems building NetCDF 3.5.0 on our SX-4.  The make
> encountered fatal errors having to do with generic interfaces with
> different sized integers.  There were warnings in the config.log file
> that "Length specification for INTEGER*2 or LOGICAL*1 is ignored."
>
> As specified in the "Reporting Problems" section of INSTALL.html,
> I'm providing the following information.  Any suggestions would be
> welcomed.

We don't have access to an SX-4 system.  This severely limits our
ability to support the netCDF package on that system and the errors
you've reported will require a non-trivial investigation.  If you're
willing to help us, however, then we'll see what we can do (no promises,
however).

> A.
> 
>       1 sx4 khaskell> uname -a 
>       SUPER-UX unix 10.1  SX-4 
>       
> B.
>       5 sx4 khaskell> cat VERSION
>       3.5.0
>       
> C.  NQS script used to do the configure (called nqsconf)
> 
>       6 sx4 khaskell> cat nqsconf   
>       #                             
>       cd ~/netcdf-3.5.0/src         
>       setenv CC 'cc -Xa'            
>       setenv CFLAGS '-h2'           
>       setenv FC 'f90'               
>       setenv FFLAGS ' '             
>       setenv CXX ' '                
>       ./configure >&! configure.log 
> 
>     Absolute locations of compilers
>  
>       7 sx4 khaskell> which cc  
>       /usr/bin/cc               
>       8 sx4 khaskell> which f90 
>       /usr/bin/f90              
>       9 sx4 khaskell> which c++ 
>       /usr/bin/c++              
> 
> D.  The resulting configure.log file
> 
> creating cache ./config.cache
> checking for top-level source-directory
> /necsyl/asd3/khaskell/netcdf-3.5.0/src
> checking for m4 preprocessor
> checking for m4... m4
> checking m4 flags... -B10000
> checking C compiler "cc -Xa"... works
> checking how to make dependencies... false
> checking how to run the C preprocessor... cc -Xa -E
> checking user-defined Fortran-77 compiler "f90"... works
> checking for Fortran .F compiler... 
> checking if Fortran-77 compiler handles *.F files... yes
> checking "f90" as Fortran-90 compiler... works
> checking for nm utility
> checking for nm... nm
> checking nm flags... 
> checking for C-equivalent to Fortran routine "SUB"... sub_
> checking for Fortran "byte"... no
> checking for Fortran "integer*1"... no
> checking for Fortran "integer(kind(1))"... yes
> checking for Fortran "integer*2"... yes
> checking if Fortran "integer(kind(1))" is C "signed char"... no
> checking if Fortran "integer(kind(1))" is C "short"... no
> checking if Fortran "integer(kind(1))" is C "int"... yes
> checking if Fortran "integer(kind(1))" is C "long"... no
> checking if Fortran "integer*2" is C "short"... no
> checking if Fortran "integer*2" is C "int"... yes
> checking if Fortran "integer*2" is C "long"... no
> checking if Fortran "integer" is C "int"... yes
> checking if Fortran "real" is C "float"... yes
> checking if Fortran "doubleprecision" is C "double"... yes
> checking for Fortran-equivalent to netCDF "byte"... integer
> checking for Fortran-equivalent to netCDF "short"... integer*2

Would you please tell us the characteristics of the following Fortran-90
types:

    integer*2
    integer(kind(1))
    integer(kind(2))

What sizes are they in bytes?  What are their ranges?  Are they padded?
Etc.

Additionally, would you please tell us the byte-sizes of the following C
types:

    ssize_t
    ptrdiff_t

> F.  The make script (called nqsmake; inadvertently repeated the configure)
> 
> 
> 10 sx4 khaskell> cat nqsmake 
> #                            
> cd ~/netcdf-3.5.0/src        
>                              
> setenv CC 'cc -Xa'           
> setenv CFLAGS '-h2'          
> setenv FC 'f90'              
> setenv FFLAGS ' '            
> setenv CXX ' '               
> ./configure                  
> make >&! make.log            
> 
>     The resulting make.log file
>     
> 
> Making `all' in directory /necsyl/asd3/khaskell/netcdf-3.5.0/src/libsrc
...
>       cc -Xa -c -h2 -I.  -DNDEBUG putget.c
> "putget.c", line 138: warning: improper integer precision : op "="

The file "putget.c" is generated via the m4(1) utility from the file
"putget.m4".  Would you please send us sufficient context around lines
138, 8314, and 8502 of the file "putget.c" so that we may trace it back
into the file "putget.m4".  If the file "putget.c" doesn't exist in the
"libsrc/" subdirectory, then I believe that it can be created via the
command "make putget.c".

>       cc -Xa -c -h2 -I.  -DNDEBUG v1hpg.c
> "v1hpg.c", line 82: warning: improper integer precision : op "="
> "v1hpg.c", line 499: warning: improper integer precision : op "="
> "v1hpg.c", line 787: warning: improper integer precision : op "="
> "v1hpg.c", line 1043: warning: improper integer precision : op "="

The above warnings have been fixed.  Apparently, a "ptrdiff_t" is more
capacious than a "size_t" on the SX-4.

Is there anyway to turn off the "Unvectorized loop" message?

...
> Making `all' in directory /necsyl/asd3/khaskell/netcdf-3.5.0/src/fortran
> 
>       cc -Xa -c -h2 -I../libsrc  -DNDEBUG fort-attio.c
> "fort-attio.c", line 421: vec inf: Unvectorized loop
> "fort-attio.c", line 423: vec inf: Unvectorized loop
> "fort-attio.c", line 441: vec inf: Unvectorized loop
> "fort-attio.c", line 453: vec inf: Unvectorized loop
> "fort-attio.c", line 469: vec inf: Unvectorized loop
> "fort-attio.c", line 482: vec inf: Unvectorized loop
> "fort-attio.c", line 534: vec inf: Unvectorized loop
>       cc -Xa -c -h2 -I../libsrc  -DNDEBUG fort-control.c
> "fort-control.c", line 14: warning: improper pointer/integer precision : op 
> "CAST"
> "fort-control.c", line 28: warning: improper pointer/integer precision : op 
> "CAST"
> "fort-control.c", line 92: warning: improper pointer/integer precision : op 
> "CAST"
> "fort-control.c", line 98: warning: improper pointer/integer precision : op 
> "CAST"

This is another case where we will need more context.  Would you please
do the following:

    1.  Go into the "fortran/" subdirectory.

    2.  Execute the command "make fort-control.i".

    3.  From the file "fort-control.i", send me the following functions:

        nf__create_
        nf__open_
        nf__create_mp_
        nf__open_mp_

That should be enough for now.  Thanks.

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