Date: Fri, 29 Oct 1999 08:31:35 -0700 (PDT)
From: ABoeckmann <>
Subject: Compaq Visual Fortran

DIGITAL Visual Fortran is a commonly used compiler when using NONMEM with PC's. Please be advised of the following.

It appears that Digital is now a division of Compaq. Compaq Visual Fortran is the new name for DIGITAL Visual Fortran. Although the name has changed, everything else appears to be the same so far. Compaq is offering a free upgrade to 6.1 for 6.0 owners.

Note that these web pages are one and the same:

The list of vendors is similar to what it was before; see





Date: Tue, 2 Nov 1999 16:20:36 -0800 (PST)
From: ABoeckmann <>
Subject: Digital Fortran

To users of (DIGITAL) Visual Fortran:

We have been suggesting that NONMEM be compiled with the lowest level of optimization when DIGITAL Visual Fortran is used on machines with INTEL processors. SETUP.BAT incorporates this level (/optimize:1).

This is because we knew of one case (CONTROL6 on the distribution medium) where the results were not correct with higher levels of optimization.

Recently, a user reported to us some results after compiling NONMEM with a higher level of optimization using Visual Fortran 6.0 from Compaq (which has acquired DIGITAL and renamed the compiler). She discovered that NONMEM can be compiled with /optimize:4 (the default level of optimization) and run successfully, provided that the /fltconsistency option is also used. This is similar to the situation with the old Microsoft Powerstation Fortran, in which /Ox /Op was needed with optimization; /Op had the same effect as /fltconsistency.

She reports that run times on a 450 mHz Pentium II computer running Windows NT were up to 10-50% faster than what they were with /optimize:1 (in one case, an 8 hour run now takes 4 hours). Sometimes there are minor differences in the output (even differences as to whether a run minimizes successfully or not; the new runs were actually better).

I compared the options using Visual Fortran 5.0 on a 100mHz Pentium running Windows NT and can confirm that CONTROL4 thru CONTROL7 on the distribution medium run correctly. The gradients are somewhat different, but the results are otherwise identical. Run times are slightly faster. However, a larger problem ran for 9 hours with /optimize:1 and for 7 hours with /optimize:4 /fltconsistency, reaching essentially the same minimum.

Based on information we have obtained from support personnel at Compaq, it is understandable that /fltconsistency would indeed be required to run our CONTROL6 example and others along with /optimize:4. I would expect that these options will work just as well with all versions of Visual Fortran, including 6.0. Note that /fltconsistency is not needed with /optimize:1.

If you would like to try to see if your own NONMEM runs can be done faster, you can change SETUP.BAT (see below) and reinstall NONMEM. The following instructions may be followed if you need help doing this.

If sufficient disk space is available, the old (/optimize:1) version of NONMEM should be left as-is. This preserves any work you may have done in the run directory, and allows you to perform runs with both levels of optimization for comparison purposes.

1) Copy the old directory to a new directory (say, nmvfast) prior to reinstalling. This ensures that any source code changes you may have made to NONMEM (e.g., to BLKDAT.for) are retained.

The MS-DOS command is

xcopy nmv nmvfast /I /E

Or use the equivalent Window-based utilities.

2) Edit c:\nmvfast\SETUP.BAT

if "%o%" == "y" if "%f%" == "df" set op=/optimize:1 /fpe:0

Change to:
if "%o%" == "y" if "%f%" == "df" set op=/optimize:4 /fltconsistency /fpe:0

3) Erase the object files. As described in Appendix 5 of NONMEM Users Guide Part III (Installation), SETUP.BAT will not compile files in a directory if certain object files (files which have extension .obj) exist in the directory. Other files and directories must be erased as well so that SETUP.BAT will run properly.

cd c:\nmvfast
erase nm\*.obj
erase nm\nonmem.lib
erase pr\*.obj
erase tr\*.obj
erase tl\*.obj
erase util\*
erase run\*
rmdir run

4) Use SETUP.BAT to recompile all the code and to recreate nmfe5.bat.

setup a c nmvfast df y

Now you can use c:\nmvfast\run\nmfe5.bat to perform runs with /optimize:4 /fltconsistency.

Let us know if anyone tries this, and what you learn. Are the results the same? Are the runs faster?

Alison Boeckmann