Ticket #68 (closed defect: fixed)

Opened 5 years ago

Last modified 5 years ago

Failure of Absoft Fortran 90

Reported by: Ray Osborn Owned by: Freddie Akeroyd
Priority: major Milestone: NeXus 4.1 Ready
Component: napi Version: 4.0rc3
Keywords: Cc:

Description (last modified by Ray Osborn) (diff)

"Configure" correctly located the Absoft v7.0 compiler, but the "make" failed on the first F90 application - NXdump - with the following error:

f90 -I/Users/roadmin/Desktop/nexus-4.0rc3/bindings/f90 -c NXdump.f90

use NXmodule

cf90-292 f90fe: ERROR NXDUMP, File = NXdump.f90, Line = 35, Column = 8

"NXMODULE" is specified as the module name on a USE statement, but the compiler cannot find it.

type(NXhandle)
file_id

cf90-126 f90fe: ERROR NXDUMP, File = NXdump.f90, Line = 37, Column = 9

Derived type "NXHANDLE" is used, but it does not have any components defined for it.

integer
status, type, rank, dimensions(NX_MAXRANK)

cf90-521 f90fe: ERROR GETDIR, File = NXdump.f90, Line = 52, Column = 49

Local variable "NX_MAXRANK" must be a dummy argument or in common to be used in a bounds specification expression.

f90: Copyright Absoft Corporation 1994-2001; Absoft Pro FORTRAN Version 7.0b f90fe: 82 source lines f90fe: 3 Errors, 0 Warnings, 0 Other messages, 0 ANSI

make[2]: * [NXdump.o] Error 1 make[1]: * [all-recursive] Error 1 make: * [all-recursive] Error 1

NXMODULE.mod does exist in the bindings/f90/ directory, but Absoft Fortran needs a link switch ("-p path") to define the location. It's not the same as the "include" switch "-I/path", which is presumably what gfortran uses.

Attachments

testsuite.log (74.1 KB) - added by Freddie Akeroyd 5 years ago.
Testsuite failure log

Change History

comment:1 Changed 5 years ago by Ray Osborn

  • Description modified (diff)

comment:2 Changed 5 years ago by Freddie Akeroyd

(In [927]) Correct spelling of "absoft" in path check. Refs #68.

comment:3 follow-up: ↓ 4 Changed 5 years ago by Freddie Akeroyd

  • Status changed from new to assigned
  • Milestone set to NeXus 4.0 Release

Ray,

can you try downloading the latest branch kit (r907) from http://download.nexusformat.org/kits/ and see if that fixes things. The configure script did try to test for absoft, but a typo of "absort" in it stopped this working.

Freddie

comment:4 in reply to: ↑ 3 Changed 5 years ago by Ray Osborn

Replying to Freddie Akeroyd:

Ray,

can you try downloading the latest branch kit (r907) from http://download.nexusformat.org/kits/ and see if that fixes things. The configure script did try to test for absoft, but a typo of "absort" in it stopped this working.

Freddie

Freddie, I downloaded r927, and it has fixed the module path problem. However, it failed in compiling NXbrowse90.f90 with the following error message:

f90 -I/Users/roadmin/Desktop/nexus-4.0_branch_r927/bindings/f90 -p/Users/roadmin/Desktop/nexus-4.0_branch_r927/bindings/f90 -g -cons -YEXT_NAMES=LCS -YEXT_SFX=_ -c NXbrowse90.f90 NXbrowse90.f90:5019:Fixup of 32992 too large for field width of 16 bits NXbrowse90.f90:2970:Fixup of 62068 too large for field width of 16 bits NXbrowse90.f90:2936:Fixup of 62188 too large for field width of 16 bits NXbrowse90.f90:2902:Fixup of 61184 too large for field width of 16 bits NXbrowse90.f90:2868:Fixup of 61100 too large for field width of 16 bits

make[2]: * [NXbrowse90.o] Error 1 make[1]: * [all-recursive] Error 1 make: * [all-recursive] Error 1

I haven't had a chance to look at the source code to see what might have caused this. It's odd that gfortran has no problem with this.

Ray

comment:5 Changed 5 years ago by Freddie Akeroyd

Ray, I found the following note on the web

http://www.absoft.com/Support/FAQ/macosx80faq.html#anchor0188

Does that help resolve the problem? If so, i'll add the -N11 compiler flag to the configure script. Alternatively, we could try changing the source code a bit to avoid large offsets.

Freddie

comment:6 follow-up: ↓ 7 Changed 5 years ago by Freddie Akeroyd

(In [935]) Add -N11 option for Absoft f90 to enable 32bit branches as per http://www.absoft.com/Support/FAQ/macosx80faq.html#anchor0188 Refs #68.

comment:7 in reply to: ↑ 6 Changed 5 years ago by Ray Osborn

Replying to Freddie Akeroyd:

(In [935]) Add -N11 option for Absoft f90 to enable 32bit branches as per http://www.absoft.com/Support/FAQ/macosx80faq.html#anchor0188 Refs #68.

Further progress. Now it compiles NXbrowse90 but fails to compile one of the F77 test suite programs.

f77 -I../bindings/f77 -g -O2 -I/Users/roadmin/Desktop/nexus-4.0_branch_r935/bindings/f77 -g -c -o napif4_test.o napif4_test.f FORTRAN 77 Compiler 7.0b, Copyright (c) 1987-2002, Absoft Corp.

warning on line 63 of napif4_test.f: illegal statement ordering warning on line 307 of napif4_test.f: local variable UNLIMITED_DIMS never referenced

/bin/sh ../libtool --mode=link --tag=CC f77 -I../bindings/f77 -g -O2 -I/Users/roadmin/Desktop/nexus-4.0_branch_r935/bindings/f77 -g -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib/ -L/usr/local/lib -o napif_test-hdf4 -static -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib/ -L/usr/local/lib napif4_test.o ../bindings/f77/libNeXus77.la -lxml2 -lhdf5 -lmfhdf -ldf -lsz -ljpeg -lz -ldl -lm -lSystemStubs f77 -I../bindings/f77 -g -O2 -I/Users/roadmin/Desktop/nexus-4.0_branch_r935/bindings/f77 -g -o napif_test-hdf4 napif4_test.o -L/usr/local/lib -L/usr/local/lib/ ../bindings/f77/.libs/libNeXus77.a /Users/roadmin/Desktop/nexus-4.0_branch_r935/src/.libs/libNeXus.a -lmxml /usr/lib/libxml2.dylib -lpthread /usr/lib/libiconv.dylib -lhdf5 -lmfhdf -ldf -lsz -ljpeg -lz -ldl -lm -lSystemStubs /usr/bin/ld: Undefined symbols: _NXICLOSEDATA _NXICLOSEGROUP _NXIFCLOSE _NXIFCOMPMAKEDATA _NXIFCOMPRESS _NXIFFLUSH _NXIFMAKEDATA _NXIFOPEN _NXIFPUTATTR _NXIGETATTR _NXIGETATTRINFO _NXIGETDATA _NXIGETDATAID _NXIGETGROUPID _NXIGETGROUPINFO _NXIGETINFO _NXIGETNEXTATTR _NXIGETNEXTENTRY _NXIGETSLAB _NXIINITATTRDIR _NXIINITGROUPDIR _NXIINQUIREFILE _NXIISEXTERNALGROUP _NXILINKEXTERNAL _NXIMAKEGROUP _NXIMAKELINK _NXIMAKENAMEDLINK _NXIOPENDATA _NXIOPENGROUP _NXIOPENGROUPPATH _NXIOPENPATH _NXIOPENSOURCEGROUP _NXIPUTDATA _NXIPUTSLAB _NXISAMEID _NXISETNUMBERFORMAT collect2: ld returned 1 exit status

make[1]: * [napif_test-hdf4] Error 1 make: * [check-recursive] Error 1

comment:8 follow-up: ↓ 9 Changed 5 years ago by Freddie Akeroyd

(In [936]) Add absoft f90 flags to f77 command as well. Refs #68.

comment:9 in reply to: ↑ 8 Changed 5 years ago by Ray Osborn

Replying to Freddie Akeroyd:

(In [936]) Add absoft f90 flags to f77 command as well. Refs #68.

This version seems to fail at an earlier stage.

Making all in f77 /bin/sh ../../libtool --tag=F77 --mode=compile f77 -g -O2 -I/Users/roadmin/Desktop/nexus-4.0_branch_r936/bindings/f77 -g -cons -YEXT_NAMES=LCS -YEXT_SFX=_ -g -c -o napif.lo napif.f mkdir .libs

f77 -g -O2 -I/Users/roadmin/Desktop/nexus-4.0_branch_r936/bindings/f77 -g -cons -YEXT_NAMES=LCS -YEXT_SFX=_ -g -c napif.f -o .libs/napif.o

Error: bad option: -YEXT_NAMES=LCS make[2]: * [napif.lo] Error 1 make[1]: * [all-recursive] Error 1 make: * [all-recursive] Error 1

comment:10 Changed 5 years ago by Freddie Akeroyd

Ray, i can't seem to get back on Absoft's site, but when i looked before it said that the f77 options were being removed and that you should use f90 style ones (-YEXT_NAMES=LCS etc). Maybe your compiler still only accepts the old f77 style ones? Could you please look them up and let me know what they are and i'll change configure

Thanks,

Freddie

comment:11 Changed 5 years ago by Freddie Akeroyd

(In [937]) Adjust F77 options to old style for Absoft. Refs #68.

comment:12 follow-up: ↓ 13 Changed 5 years ago by Freddie Akeroyd

(In [938]) Only set -N11 f90 option on powerpc. Refs #68.

comment:13 in reply to: ↑ 12 Changed 5 years ago by Ray Osborn

Replying to Freddie Akeroyd:

(In [938]) Only set -N11 f90 option on powerpc. Refs #68.

Nearly there. Everything compiles and links, but there is one failure in the test suite.

## ----------------------------------------- ## ## NeXus Library 4.0_branch_r938 test suite. ## ## ----------------------------------------- ##

Testing the NeXus C library.

1: Check the HDF4 binding ok 2: Check the HDF5 binding ok 3: Check the HDF4 binding (static library) ok 4: Check the HDF5 binding (static library) ok 5: Check the XML binding ok 6: Check the XML binding (static library) ok

Check the FORTRAN 77 binding.

7: Check the F77 binding using HDF4. ok 8: Check the F77 binding using HDF5. ok 9: Check the F90 binding using HDF5. FAILED (testsuite.at:407)

Testing the NeXus File Converter.

10: Checking HDF4 -> HDF4 ok 11: Checking HDF4 -> HDF5 ok 12: Checking HDF4 -> XML ok 13: Checking HDF5 -> HDF4 ok 14: Checking HDF5 -> HDF5 ok 15: Checking HDF5 -> XML ok 16: Checking XML -> HDF4 ok 17: Checking XML -> HDF5 ok 18: Checking XML -> XML ok

Testing NXsummary Tool.

19: Checking HDF4 test file ok 20: Checking HDF5 test file ok 21: Checking XML test file ok

Testing NXbrowse Tool.

22: Checking HDF4 test file ok 23: Checking HDF5 test file ok 24: Checking XML test file ok

Testing NXdir Tool.

25: Checking HDF4 test file ok 26: Checking HDF5 test file ok 27: Checking XML test file ok

## ------------- ## ## Test results. ## ## ------------- ##

Do you have the ability to check which version of the Absoft compiler I am using? It's true that I'm running a compiler from several years ago, so I'm worried that you might fix things for me but break it for everyone else. In the end, perhaps we just have to recommend people to use gfortran because it's not clear that the Absoft compiler will be the most widely used.

Ray

Changed 5 years ago by Freddie Akeroyd

Testsuite failure log

comment:14 follow-up: ↓ 15 Changed 5 years ago by Freddie Akeroyd

  • Milestone changed from NeXus 4.0 Release to NeXus 4.1

The failure in testsuite.log is:

9. testsuite.at:373: testing ...
testsuite.at:407:  $HAVE_F90 && $HAVE_HDF5 && $SETUP_TEST && NXtest | sed -e 's/\r$//' 
--- -	2007-05-24 09:25:42.000000000 -0400
+++ /Users/roadmin/Desktop/nexus-4.0_branch_r938/test/testsuite.dir/at-stdout	2007-05-24 09:25:42.000000000 -0400
@@ -26,7 +26,7 @@
           :   17.0000000  18.0000000  19.0000000  20.0000000
    ch_attribute : NeXus
    i4_attribute :       42
-   r4_attribute :    3.1415927
+   r4_attribute :    3.1415930
    target : /entry/r8_data
    Subgroup: sample(NXsample)
 Link Check OK
9. testsuite.at:373: 9. Check the F90 binding using HDF5. (testsuite.at:373): FAILED (testsuite.at:407)

It appears reading and writing of a r4 attribute has a precision problem. Given that both an r4_array and an r8_array have passed OK, i think it is an issue with how this test is constructed. Fixing it, however, would require us to re-run all f90 tests on our systems and so is probably too risky to do now. I'll add a comment to the release notes and go for 4.0.0 as is

comment:15 in reply to: ↑ 14 Changed 5 years ago by Ray Osborn

Replying to Freddie Akeroyd:

The failure in testsuite.log is:

9. testsuite.at:373: testing ...
testsuite.at:407:  $HAVE_F90 && $HAVE_HDF5 && $SETUP_TEST && NXtest | sed -e 's/\r$//' 
--- -	2007-05-24 09:25:42.000000000 -0400
+++ /Users/roadmin/Desktop/nexus-4.0_branch_r938/test/testsuite.dir/at-stdout	2007-05-24 09:25:42.000000000 -0400
@@ -26,7 +26,7 @@
           :   17.0000000  18.0000000  19.0000000  20.0000000
    ch_attribute : NeXus
    i4_attribute :       42
-   r4_attribute :    3.1415927
+   r4_attribute :    3.1415930
    target : /entry/r8_data
    Subgroup: sample(NXsample)
 Link Check OK
9. testsuite.at:373: 9. Check the F90 binding using HDF5. (testsuite.at:373): FAILED (testsuite.at:407)

It appears reading and writing of a r4 attribute has a precision problem. Given that both an r4_array and an r8_array have passed OK, i think it is an issue with how this test is constructed. Fixing it, however, would require us to re-run all f90 tests on our systems and so is probably too risky to do now. I'll add a comment to the release notes and go for 4.0.0 as is

That's fine by me.

Ray

comment:16 Changed 5 years ago by Freddie Akeroyd

(In [951]) Adjust precision of real number used in fortran test. Refs #68.

comment:17 Changed 5 years ago by Freddie Akeroyd

  • Status changed from assigned to closed
  • Resolution set to fixed
Note: See TracTickets for help on using tickets.