Hello, Jeffrey, browsing the web for information about Fortran for Linux I came across your page. I am currently writing my Diplomarbeit at the Institute for Astronomy and Astrophysics at the University of Tuebingen. We recently bought the SNI F77 compiler for Linux, and I'd like to share my first impressions. I ordered the compiler from LinuxLand (in Munich, Germany), and the documentation is mainly in German. Although I ordered in German I didn't ask for a German version (we have people from abroad here), so it might be that there is only a German version available. For evaluation purposes we ordered a single user educational licence; that cost about DM200. SNI describes their compiler as (this is my translation) "FORTRAN77 V1.4B is a powerful system for the productive development of applications with the programming language FORTRAN77. The version 1.4B contains a highly optimizing code generator for Intel 486/586/686 processors and produces performing objects in the Linux/ELF format. "The national and international standards ISO 1539-1980, ANSI X3.9-1978, and DIN 66027-1980 are supported. The language extent offers in addition to FORTRAN77 a number of extensions that support a productive programme development." (Now if some of this sounds like weird language, then that's partly due to my ad hoc translation.) Installing is easy, but can only be done as super user. SNI F77 insists in going into /opt/f77 and /opt/C. The distribution is binary (of course). Documentation is in German only. There are no man pages. There are a set of html pages and a set of postscript documents. They are sufficient; not spartanic, but not too rich either. The install requirements are: An ELF capable Linux kernel GNU libc.5.2.16 gcc-2.7.2 ld.1.7.3 binutils-2.6.0.2 or newer version thereof. It seems that SNI F77 uses gcc's libgcc. We have gcc 2.7.2.1 installed, and SNI F77 did not find that library on its own. I had to include the appropriate '-L' option to tell SNI F77 where the libgcc resides. (The libgcc is in different places depending on gcc's version number.) I experienced no further problems except that our default setup includes a maximum stack size of 8MB, which is ridiculously low. Of course we have our local benchmark: we simulate an accretion disk (that has to do with star formation) with SPH (that is a method for solving partial differential equations). In the standard case, 40000 particles move according to the laws of gravity and hydrodynamics. The benchmark is publically available and can be obtained by following some links under "http://www.tat.physik.uni-tuebingen.de" or directly from "http://www.tat.physik.uni-tuebingen.de/~speith/". There is also a German description of the benchmark. I compared g77 with SNI F77 using this benchmark. Both compiled the benchmark without errors and with a lot of (justified) warnings. (The warnings refer to code portions that are never executed.) I used comparable options (full optimization, no frame pointer). I ran the benchmarks on Linux 2.0.30 with a single 686 (PentiumPro from Intel, 199.07 bogomips) with 128MB of RAM while being the only user on the machine. The benchmarks read the initial data (~3MB) from disk, do their calculations (using about 40MB of memory), and then write the output (~4MB) to disk. I used "time" to time the programmes. Let me start with g77: Version: GNU F77 version 2.7.2.1 (i386 Linux/ELF) compiled by GNU C version 2.7.2.1. GNU Fortran Front End version 0.5.18 compiled: Oct 17 1996 03:07:17 Options I used: -O3 -fomit-frame-pointer -funroll-loops Typical output: 163.34user 0.58system 9:21.51elapsed 29%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (94major+9875minor)pagefaults 0swaps And now to SNI F77: Version: Begin SNI F77, version 14B01 of Jan 2 1997 Driver version V3.6A Options I used: -fu -fa -fret2 -O4 -FI -Fces Typical output: 160.36user 0.41system 2:53.03elapsed 92%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (86major+9632minor)pagefaults 0swaps And now f2c, just for fun: Version: Ver.: 0.11; (c) 1990-95 AT&T Bell Laboratories and Bellcore. Options I used: f2c: -u -a -w8 gcc: -O3 -fomit-frame-pointer -funroll-loops Typical output: 172.03user 1.36system 10:10.33elapsed 28%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (92major+9632minor)pagefaults 0swaps The most imporant figure in the above data is the user time. All threee are about the same. Other runs showed similar results. The SNI F77 compiler seems to be about 2% faster than g77. I believe that 2% is well within the noise and that these results show no real performance difference. The most astonishing difference is the total (wall) time. When compiled with g77, the programme seems to need a lot more time to write the output data (via NFS) to the disk. Profiling confirmed this observation. I repeated this test several times with consistent results. Rumours in our institute have it that g77 is particularly slow with I/O, even compared to gcc. The SPH method is not quite typical for Fortran programmes, because it accesses the memory "randomly" and not sequentially as e. g. LINPACK does. I might run a LINPACK benchmark later. All in all SNI F77 is very reasonably priced (compared to other Fortran 77 compilers), easy to install and easy to use. The code quality for a PentiumPro seems to be comparable to that of g77. There is another report stating that g77's code quality for the 486 is much worse than that of SNI F77 (see the LinuxLand web pages), so YMMV. We decided to not buy any more licences of SNI F77. We will stick with g77 and use SNI F77 from time to time as a cross check against compiler bugs and Fortran incompatibilities. I hope that you find this report helpful, -erik ----- Erik Schnetter