[comp.sys.sgi] MOPAC problem with multiprocessor Fortran

doelz@urz.unibas.ch (01/31/91)

Hi, 
following a post from USENET, I obtained MOPAC (semi-empirical 
quantum chemistry application) Version 6.0 from 
ouchem.chem.oakland.edu:/pub/unix/ [141.210.108.5] and tried to 
compile it on a SGI 4D/320GTX running PFA and IRIX 3.3.2. 

I get a compiler warning with O2 without pfa as follows: 
f77 -O2  -p -static -c deri2.f
uopt: Warning: harmless compiler bug detected (LDA length 0); please report 
	to MIPS

Well. This didnt hurt. It runs, with a great performance, and produces 
correct output. 


I get WARNINGS  while trying to compile it with PFA and -mp for multiple 
processors, because there are two statements: 

C$DOIT   with several argumets
C$DOUT   VBEST

If I edit them out, the warnings disappear. Other multiprocessor
directives were not found. However, compiling the code is ok, and the linking 
(after -O2 -pfa keep  -p -static  -mp -mp_keep -v) FAILS with the message: 

modl [/convex_tmp/mopac] % make
Loading mopac.exe ... /usr/bin/ld:
Undefined:
__mp_simple_sched_
__mp_4th_arg_
*** Error code 1

Stop.



Has anyone seen this behaviour or is there any workaround known ? 

Regards 
Reinhard 


************************************************************************
    Dr. Reinhard Doelz            *     EAN     doelz@urz.unibas.ch
      Biocomputing                *     DECNET  48130::doelz
Biozentrum der Universitaet       *     X25     psi%46211142::embnet
   Klingelbergstrasse 70          *     FAX     x41 61 256760
     CH 4056 Basel                *     TEL     x41 61 253880 ext 888
************************************************************************

bron@bronze.wpd.sgi.com (Bron Campbell Nelson) (02/05/91)

In article <1991Jan31.103637.1344@urz.unibas.ch>, doelz@urz.unibas.ch writes:
>  [stuff deleted]
> I get WARNINGS  while trying to compile it with PFA and -mp for multiple 
> processors, because there are two statements: 
> 
> C$DOIT   with several argumets
> C$DOUT   VBEST
> 
> If I edit them out, the warnings disappear.

This happens because the "C$" prefix is what SGI uses to indicated a
multi-processor compiler directive.  These two statements look like directives,
but are not recognized as any known directive, hence the warning.

> [...]
> However, compiling the code is ok, and the linking 
> (after -O2 -pfa keep  -p -static  -mp -mp_keep -v) FAILS with the message: 
> 
> modl [/convex_tmp/mopac] % make
> Loading mopac.exe ... /usr/bin/ld:
> Undefined:
> __mp_simple_sched_
> __mp_4th_arg_
> *** Error code 1
> 
> Stop.
> 
> Has anyone seen this behaviour or is there any workaround known ? 
> 

There are 2 possible causes (that I know about :-)):

(1) The most likely cause is that the load line does not have the Fortran
multi-processing library in it.  This library is included in the load when
you add the "-mp" option to the f77 load command (e.g. "f77 -mp *.o").
This is the prefered method.
If you do not use f77 do to the link, but rather construct your load line
by hand (i.e. you use cc or call ld directly) the library name is libI77_mp.a
(e.g. -lI77_mp  or  /usr/lib/libI77_mp.a).

In brief: use the -mp option to link code that was compiled with
the -mp option.

(2) If you have a new (3.3.*) version of the Fortran compiler
front end (/usr/lib/fcom) and an old (3.1.* or 3.2.*) version of the
Fortran MP runtime library (/usr/lib/libI77_mp.a).  If this is the case,
the best thing to do is use "inst" to remove the Fortran and PFA subsytems,
and then reinstall them.


--
Bron Campbell Nelson
bron@sgi.com  or possibly  ..!ames!sgi!bron
These statements are my own, not those of Silicon Graphics.