[Numpy-discussion] Specifying compiler command line options for numpy.disutils.core
christian at marquardt.sc
Fri Jun 15 10:49:42 EDT 2007
On Fri, June 15, 2007 06:01, David Cournapeau wrote:
> I think it is important to separate different issues: object code
> compatibility, runtime compatibility, etc... Those are different issues.
> First, mixing ICC compiled code and gcc code *has* to be possible (I
> have never tried), otherwise, I don't see much use for it under linux.
> Then you have the problem of runtime services: I really doubt that ICC
> runtime is not compatible with gcc, and more globally with the GNU
> runtime (glibc, etc...); actually, ICC used to use the "standard" linux
> runtime, and I would be surprised if that changed.
Yes, this is possible - icc does use the standard system libraries. But
depending on the compiler options, icc will require additional libraries
from it's own set of libs. For example, with the -x[...] and -ax[...]
options which exploit the floating point pipelines of the Intel cpus, it's
using it's very own libsvml (vector math lib or something) which replace
some of the math versions in the system lib. If the linker - runtime or
static - doesn't know about these, linking will fail.
Therefore, if an icc object with certain optimisation is linked with gcc
without specifying the required optimised libraries, linking fails. I
remember that this also happened for me when building an optimised version
of numpy and trying to load it from a gcc-compiled and linked version of
Python. Actually, if I remember correctly, this is even a problem for the
icc itself; try to link a program from optimised objects with icc without
giving the same -x[...] options to the linker...
It might be possible that the shared libraries can be told where
additional required shared libraries are located (--rpath?), but I was
never brave enough to try that out... I simply rebuilt python with the
additional benefit that everything in python get faster. Or so ones
It should be straightforward to link gcc objects and shared libs with icc
being the linker, though. Has anyone ever tried to build the core python
and numpy with icc, but continue to use the standard gcc build extensions?
Just a thought... maybe a bit over the top:-((
More information about the NumPy-Discussion