[SciPy-dev] Building newcore with the intel compilers on Itanium2...

Fernando Perez Fernando.Perez at colorado.edu
Thu Nov 3 00:23:23 CST 2005


Pearu Peterson wrote:
> 
> On Wed, 2 Nov 2005, Fernando Perez wrote:

>>So the question really is: how do we get scipy.distutils to use icc as the
>>LINKER and not to use gcc at all?  Thanks for any pointers...
> 
> 
> This is not really a scipy.distutils issue. A simple answer to your 
> question would be building python with icc.
> Standard distutils has limited support switching C compilers, see 
> `setup.py build_ext --help`. It is also possible to implement support for 
> your own c compiler in scipy.distutils but first I would suggest following 
> the simple answer.

OK, thanks for the info.  I'd like to understand something, though.  Once you 
homebrew this icc-based python, don't you end up forced to maintain off-distro 
ALL python packages you want to use?  This solution would require building a 
parallel python, losing most of the benefits of easy package handling in a 
distro, etc.

As we've seen, all that's needed is to fix the link calls.  If that is done, 
one could use the base platform python for everything, and only build 
numerically critical code with icc.  I really don't look forward to the idea 
that using icc for scipy will force people to build wxpython, pygtk, pyvtk and 
other similarly pleasant-to-build packages ALL from source, and maintain a 
fully separate tree.

For now, a more viable solution (for me) seems to be just to use gcc and lose 
some of the benefits of icc on this architecture.  But I think it would be 
great to be able to offer users the ability to use the C compiler of their 
choice for scipy.

 From looking at the code, I wonder if it's just a matter of overriding the 
link() method in ccompiler, to honor the CC env. variable (as a start).  I may 
have a go at it, at least out of curiosity...


Just as an FYI, with the following two manual link steps:

phillips[newcore]> icc -pthread -shared 
build/temp.linux-ia64-2.3/scipy/base/src/multiarraymodule.o -o 
build/lib.linux-ia64-2.3/scipy/base/multiarray.so
phillips[newcore]> icc -pthread -shared 
build/temp.linux-ia64-2.3/build/src/scipy/base/src/umathmodule.o -o 
build/lib.linux-ia64-2.3/scipy/base/umath.so


I can get scipy newcore to pass all tests on this Itanium2 box:

In [4]: scipy.test(10,10)
...
----------------------------------------------------------------------
Ran 140 tests in 2.025s

OK

One more 64-bit architecture where things look good, thanks to Travis and 
Arnd's relentless work!

Unfortunately for now I won't be able to test full scipy here, as the number 
of similar manual link steps for the full one is enormous.

Anyway, many thanks for clarifying the issue.

Cheers,

f




More information about the Scipy-dev mailing list