[Wien] Wien2k for AMD Athlon
Dr.Bernhard Eck
bernhard.eck at ac.rwth-aachen.de
Fri Jun 9 15:10:06 CEST 2006
Hello all!
Please read carefully (the error messages, the questions...), especially
the one who tries to answer ( and then try to be clear...)
Natalie reports of the following problem:
> I'm trying to install Wien2k 6.03 on AMD Athlon 2600 (Suse Linux 10.0
> x86_64) using a 32-bit version of Intel Fortran 9.0 and mkl 8.0.1.
> I have already successfully installed the same version of Wien2k
> on my Pentium 4 computer, so that on AMD Athlon I use the same
> options for compilations:
>
> Compiler options: -FR -mp1 -w -prec_div -pc80 -pad -ip -DINTEL_VML
> Linker Flags: $(FOPT) -L/opt/intel/mkl/8.0.1/lib/32
> -static-libcxa -lpthread
> Preprocessor flags '-DParallel'
> R_LIB (LAPACK+BLAS): -lmkl_lapack -lmkl -lmkl_ia32 -lguide
>
> Although I don't have any problems on Pentium, on AMD not all programms
> of Wien2k are successfully compiled. In particular, I cannot use
> dstart,lapw0,lapwso,optic,qtl and number of other programs, where I get
> the same kind of warning:
> ---------------------------------------------------------
> ld: warning: i386:x86-64 architecture of input file `cputim.o' is
> incompatible with i386 output
> --------------------------------------------------------
Lets get a little bit scientific in this error case: Who reports?
-> A program named "ld".
What is "ld" reporting?
-> The file cputim.o is incompatible with the desired output... No libs
involved...
So, who is "ld"?
-> "ld" is NOT the compiler! The intel c compiler would be "icc". "ld" is
the socalled "linker" (AAH! Thats why there are Compiler Options AND
Linker Flags...). A normal "compile"-run is a two stage process: first,
generate the object files from the source code (make *.o from *.c or *.f
files), second, glue all those objetc files together, and drop some libs
into also.
So, in a compile-run first the compiler tries to make the *.o files - but
be aware that modern Makefiles (which controls what to do) are VERY
intelligent. If, for example, the file cputim.o is newer than the
cputim.c file, the file cputim.c will not be compiled again, but the
Makefile-process will asume that it is not necessary to do so again.
Neither the Makefile or the compiler will determine, if the contents of
the *.o file is in the correct format (whatever this means...). When
every *.o file is generated, then the linker "ld" puts the object files
together into one program. BUT: the linker knows what architecture you
try to build the program for, and "ld" has to look into and has to use
the *.o files, so if it find a format in the *.o file which is not
compatible with the architecture he tries to build for, he complains
about it. Even here I could guess whats gone wrong in your compile run...
But than you added a few more infomartions in your second mail:
> In principle, first I tried to use 64bit mkl when I chose em64t version
> of Intel fortran, but got again problems with link to static libraries.
So, you first tried to compile and link wien2k with a 64 bit compiler,
and after the failure to do so, you switched back to 32bit.
Now, try to remember: you already generated the *.o files in the 64bit
compile-run, and now a 32bit compile-run starts. The 32bit run just see
the newer than the source-file *.o file and leave it untouched, and only
the linker afterwards finds out that the *.o file 64 bit and not 32bit
as wished...
To get rid of the problem, delete all *.o files in your wien2k
directories (dont forget the SRC* subdirs!) and do a make again. So, you
get at least the correct *.o files.
One last problem could be, of course, that you are using a 32 bit fortran
compiler and a 64 bit c compiler...
---------------------------------------------------------------------------------------
Abstract: make sure you are using the correct compiler versions for
fortran and c. Make sure you start fresh after errors. Start fresh means:
delete all *.o files...
---------------------------------------------------------------------------------------
Regards,
Bernhard Eck
***********************************************
Dr. Bernhard Eck
RWTH Aachen University
Department of Inorganic Chemistry
Landoltweg 1
D-52074 Aachen
Tel.: ++49 241 809 4755
Fax: ++49 241 809 2288
http://www.ssc.rwth-aachen.de/Ww/group/bernhard/
eMail: bernhard.eck at ac.rwth-aachen.de
***********************************************
More information about the Wien
mailing list