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

Re: 20041220: netcdf-3.6.0 Altix ifort/icc/icpc



Unidata Support <address@hidden> writes:

> ------- Forwarded Message
> 
> >To: address@hidden
> >cc: address@hidden,
> >cc: address@hidden
> >From: address@hidden
> >Subject: netcdf-3.6.0 Altix ifort/icc/icpc
> >Organization: CSIRO
> >Keywords: 200412200441.iBK4fjlI019427 netCDF 3.6.0 SGI Altix
> 
> Hello netcdf people,
>       As a starter, I have successfully built and tested netcdf-3.6.0
> on an SGI Altix (Itanium2) running redhat-release-3AS-2
> Linux 2.4.21-sgi303r2 using Intel compilers (ifort,icc,icpc) version 8.1
> with the following environment variables, working from similar 3.5.1
> recommendations on your "other platforms" web page:
> CPPFLAGS="-DNDEBUG -DpgiFortran"
> CC=icc
> CFLAGS="-O -mp"
> CXX=icpc
> CXXFLAGS="-O -mp -cxxlib-gcc"
> 
> FC=ifort
> FFLAGS="-O -mp -integer_size 32 -real_size 32 -double_size 64"

Thanks, I've copied the above to the other-builds page.

> also
> FFLAGS="-O -mp -integer_size 64 -real_size 64 -double_size 64"
> (non-standard Fortran usage, but matches old Cray Unicos f90 -dp setting)
> F90=""

I would be very surprised if this actually worked. Did you run make
test?

Unfortunately the F90 tests are not very complete. But the underlying
C interface is called for all fortran and fortran 90 calls, and it
will not correctly handle 64 bit integers, no matter what fortran 90
thinks.


> 
> Notes:1. Fortran90 still can't cope. (Or rather C/C++ can't cope with 128 bit
> objects).
> Using F90=ifort,F90FLAGS="-O -mp -integer_size 64 -real_size 64
> -double_size 128" compiled OK but compile during testing failed:
> make[2]: Entering directory `/usr/local/pkgs/netcdf-3.6.0/src/nf_test'
> + ifort -c -O -mp -integer_size 64 -real_size 64 -double_size 128 test_get.F
> + ifort -c -O -mp -integer_size 64 -real_size 64 -double_size 128 test_put.F
> + ifort -c -O -mp -integer_size 64 -real_size 64 -double_size 128 nf_error.F
> + ifort -c -O -mp -integer_size 64 -real_size 64 -double_size 128 nf_test.F
> + ifort -c -O -mp -integer_size 64 -real_size 64 -double_size 128 test_read.F
> + ifort -c -O -mp -integer_size 64 -real_size 64 -double_size 128 test_write.F
> + ifort -c -O -mp -integer_size 64 -real_size 64 -double_size 128 util.F
> util.F(1178): #error: can't find include file: No C equivalent to Fortran 
> DOUBLE
> util.F(1246): #error: can't find include file: No C equivalent to Fortran 
> DOUBLE
> make[2]: *** [util.o] Error 2
> 
> also failed during execution with FFLAGS=F90FLAGS=-integer_size 64 -real_size 
> 64 -double_size 64
> or
> FFLAGS=F90FLAGS="-O -mp -integer_size 32 -real_size 32 -double_size 64"
> 
> so disabled F90 interface as before (F90="").

Sorry, I'm confused. The F90 interface is not working for you under
any conditions?

As every fortran call relies on the C library, it's not going to work
to use int and float sizes that the C library can't handle. As far as
netcdf is concerned, an int is 32 bits and a double is 64, and that's
that.

NetCDF-4, to be released sometime this summer, will handle additional
types, including 64 bit ints.

> 2. Testing BUG: Testing large file operations using the example given,
> partially failed due to assuming existence of a trailing slash on the
> directory name. Defining (e.g.)
> TEMP_LARGE=/work/mydir/
> enabled all tests to work OK. Either the documentation "INSTALL" or the test
> should be fixed. Probably more logical from a user's point of view to
> fix the test. Error occurred as:
> ------------------------------------------------
> ./quick_large_files -f /work/mydirexample.nc
> Creating /work/mydirexample.nc for 64-bit offset large file test...
> Bailing out in file quick_large_files.c, line 102, error:Permission denied.
> .....
> Permission denied because I don't have permission to create in /work, but do
> in /work/mydir
> Other tests OK.
> Hope this is useful.

Thanks, I have fixed that in the makefile as you suggested.

Ed