[Rd] Bugs compiling R-1.7.1 with Intel compilers icc and ifc
(PR#4295)
CanisMaior at web.de
CanisMaior at web.de
Thu Sep 25 12:26:16 MEST 2003
Bugs compiling R-1.7.1 with Intel compilers icc and ifc,
on x86-computer (Pentium IV) and linux operating system
Hello,
as there aren't many reports about that issue, I'll give a little
report here. (Hope I don't bother anyone)
The best thing about using icc and ifc are the warnings, because
it is said that the Intel compilers are stricter and give more
precise warnings than gcc.
Warnings are good for making better code.
used software :
* Intel c/c++ Compiler for 32-bit applications, Version 7.1 Build 20030307Z
* Intel Fortran Compiler for 32-bit applications, Version 7.1 Build 20030307Z
(both with licence FOR NON-COMMERCIAL USE ONLY)
* autoconf (GNU Autoconf) 2.57
* GNU Make version 3.79.1
First:
It is possible to compile R-1.7.1 with intel compilers ;-)
But:
There are several bugs. As the Intel compilers are quite reliable,
the bugs may be in the R-code :-(
*) some commands crashes R, see later.
*) the configure script seems to have a bug, even if you make your own
configure script with autoconf.
Perhaps it's only a typo, perhaps it's an error of autoconf.
So you have to do some things manually:
1)
run configure : (you have to adjust the paths)
env CPICFLAGS=-shared CXXPICFLAGS=-shared FPICFLAGS=-shared
SHLIB_LDFLAGS=-shared ./configure CC=icc CFLAGS=-O2
CPPFLAGS=-I/opt/intel/compiler70/ia32/include F77=ifc CXX=icc
CXXFLAGS=O2 FFLAGS=-C90
2) delete a wrong path in some Makefiles:
-L/usr/local/lib"
The quotation mark is the wrong thing. Delete it!
You can search all the files containing this erratum recursively by
R-1.7.1> grep local/lib\" *
R-1.7.1> grep local/lib\" */*
R-1.7.1> grep local/lib\" */*/*
and so on.
On my computer, the incorrect files are:
R-1.7.1/Makeconf
R-1.7.1/etc/Makeconf
R-1.7.1/bin/R
R-1.7.1/src/library/ctest/src/Makefile
R-1.7.1/src/library/modreg/src/Makefile
R-1.7.1/src/library/mva/src/Makefile
R-1.7.1/src/library/ts/src/Makefile
Note:
R-1.7.1/bin/R
does not exist at the beginning, so edit all the other files
and start with
make
---> it will create an
bin/R
and stops with an error
Then do a
make clean
edit the file
bin/R
= erase the wrong quotation mark and start the compilation again with
You also can start the compilation, quickly change to bin/ and edit the
R-script file.
make
or better: Do a
make &> this_is_a_logfile.log &
which writes the compiler warnings to a file.
Now it should succeed.
Note:
make check
fails. That's a first hint that there are some problems.
Don't install that R!
You can run R locally by starting
bin/R
How does it work?
*) Many, many things work fine and fast! But some commands make
errors or even crashes R, e.g.
demo(lm.glm) crashes R,
demo(nlm) makes only an error and stops with the statement
"nlm(function(x) fdd(x[1], x[2]), c(-1.2, 1), hessian = TRUE)"
(compared with an R-1.7.1, build with gcc 3.3.1 on the same machine,
no special configure options)
I'll give only an extract of the compiler warnings.
There are many more warnings, of course.
Feel free to contact me,
Volkmar Klatt
volkmar.klatt AT stud.uni-bayreuth.de
or
CanisMaior AT web.de
--------------------
* Most warnings are harmless and derives from the gcc compiling flag
'-mieee-fp', that icc and ifc dont't understand.
This flag is hard coded in the configure.ac file,
and it seems that one cannot avoid it easily.
That's bad, the configure script should be totally independent from
any compiler, I think.
* Many warnings refer to Fortran code that is obsolescent in Fortran 95
and/or in Fortran 90.
Some code (like "ASSIGN") is even deleted in Fortran 95
* More serious things: (even dangerous?):
##########################################
Comment 12 at (1592:blas.f) : This statement is obsolescent in Fortran
90 and deleted in Fortran 95
ASSIGN 210 TO IGO
^
Comment 12 at (1603:blas.f) : This statement is obsolescent in Fortran
90 and deleted in Fortran 95
------------------
connections.c(841): warning #191: type qualifier is meaningless on cast
type
return gzwrite(fp, (const voidp)ptr, size*nitems)/size;
^
connections.c(1027): warning #191: type qualifier is meaningless on cast
type
BZ2_bzWrite(&bzerror, bfp, (const voidp)ptr, size*nitems);
------------------
dotcode.c(251): warning #175: subscript out of range
buf[256] = '\0';
^
------------------
errors.c(602): warning #188: enumerated type mixed with another type
{ ERROR_NUMARGS, "invalid number of arguments"
},
^
errors.c(603): warning #188: enumerated type mixed with another type
{ ERROR_ARGTYPE, "invalid argument type"
},
^
errors.c(605): warning #188: enumerated type mixed with another type
{ ERROR_TSVEC_MISMATCH, "time-series/vector length mismatch"
},
^
errors.c(606): warning #188: enumerated type mixed with another type
{ ERROR_INCOMPAT_ARGS, "incompatible arguments"
},
^
errors.c(608): warning #188: enumerated type mixed with another type
{ ERROR_UNIMPLEMENTED, "unimplemented feature in %s"
},
^
errors.c(609): warning #188: enumerated type mixed with another type
{ ERROR_UNKNOWN, "unknown error (report this!)"
}
^
-------------
graphics.c(5955): warning #175: subscript out of range
Rf_dpptr(dd)->fin[2] = Rf_dpSavedptr(dd)->fin[2];
^
graphics.c(5955): warning #175: subscript out of range
Rf_dpptr(dd)->fin[2] = Rf_dpSavedptr(dd)->fin[2];
^
graphics.c(5956): warning #175: subscript out of range
Rf_dpptr(dd)->fin[3] = Rf_dpSavedptr(dd)->fin[3];
^
graphics.c(5956): warning #175: subscript out of range
Rf_dpptr(dd)->fin[3] = Rf_dpSavedptr(dd)->fin[3];
^
graphics.c(6009): warning #175: subscript out of range
Rf_dpptr(dd)->pin[2] = Rf_dpSavedptr(dd)->pin[2];
^
graphics.c(6009): warning #175: subscript out of range
Rf_dpptr(dd)->pin[2] = Rf_dpSavedptr(dd)->pin[2];
^
graphics.c(6010): warning #175: subscript out of range
Rf_dpptr(dd)->pin[3] = Rf_dpSavedptr(dd)->pin[3];
^
graphics.c(6010): warning #175: subscript out of range
Rf_dpptr(dd)->pin[3] = Rf_dpSavedptr(dd)->pin[3];
^
----------------
main.c(279): warning #175: subscript out of range
state.buf[1025] = '\0'; /* stopgap measure if line > 1024 chars */
^
----------------
regex.c(5278): warning #589: transfer of control bypasses initialization
of:
variable "same_str_p" (declared at line 4163)
goto restore_best_regs;
^
-----------------
distance.c(123): warning #187: use of "=" where "==" may have been
intended
/* use Inf = lim x -> oo */ (dev = 1.))) {
^
------------------
sfm-read.c(555): warning #266: function declared implicitly
bswap_flt64 (&data[i]);
^
sfm-read.c(659): warning #266: function declared implicitly
bswap_flt64 (&hdr.bias);
^
sfm-read.c(920): warning #266: function declared implicitly
bswap_flt64 (&mv[j]);
^
sfm-read.c(1174): warning #266: function declared implicitly
bswap_flt64 (&cooked_label[i]->v.f);
^
sfm-read.c(1440): warning #266: function declared implicitly
bswap_flt64 (temp);
^
sfm-read.c(1451): warning #266: function declared implicitly
bswap_flt64 (temp);
^
sfm-read.c(1540): warning #266: function declared implicitly
bswap_flt64 (&src);
^
-------------------
(in foreign:)
stataread.c(102): warning #266: function declared implicitly
reverse_double(i);
^
-----------------
______________________________________________________________________________
Die Besten ihrer Klasse! WEB.DE FreeMail (1,7) und WEB.DE Club (1,9) -
More information about the R-devel
mailing list