Building Python 2.4 with icc and processor-specific optimizations
Michael Hoffman
cam.ac.uk at mh391.invalid
Mon Mar 14 11:04:26 EST 2005
Michael Hoffman wrote:
> Just out of curiosity, I was wondering if anyone has
> compiled Python 2.4 with the Intel C Compiler and its
> processor specific optimizations. I can build it fine
> with OPT="-O3" or OPT="-xN" but when I try to combine
> them I get this as soon as ./python is run:
>
> """
> case $MAKEFLAGS in \
> *-s*) CC='icc -pthread' LDSHARED='icc -pthread -shared' OPT='-DNDEBUG
> -O3 -xN' ./python -E ./setup.py -q build;; \
> *) CC='icc -pthread' LDSHARED='icc -pthread -shared' OPT='-DNDEBUG -O3
> -xN' ./python -E ./setup.py build;; \
> esac
> 'import site' failed; use -v for traceback
> Traceback (most recent call last):
> File "./setup.py", line 6, in ?
> import sys, os, getopt, imp, re
> File "/usr/local/src/Python-2.4/Lib/os.py", line 130, in ?
> raise ImportError, 'no os specific module found'
> ImportError: no os specific module found
> make: *** [sharedmods] Error 1
> """
>
> Also, if I run ./python, I have this interesting result:
>
> """
> $ ./python
> 'import site' failed; use -v for traceback
> Python 2.4 (#34, Mar 12 2005, 18:46:28)
> [GCC Intel(R) C++ gcc 3.0 mode] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import sys
> >>> sys.builtin_module_names
> ('__main__', '__builtin__', '__builtin__', '__builtin__', '__builtin__',
> '__builtin__', '__builtin__', '__builtin__', '__builtin__',
> '__builtin__', '__builtin__', '__builtin__', '__builtin__',
> 'exceptions', 'gc', 'gc')
> """
>
> Whoa--what's going on? Any ideas?
Further investigation reveals that the function that sets
sys.builtin_module_names sorts the list before turning it into a
tuple. And binarysort() in Objects/listobject.c doesn't work when
optimized in that fashion. Adding #pragma optimize("", off)
beforehand solves the problem. Why that is, I have no idea. Is
anyone else curious?
Also, if anyone is looking for a way to squeeze a little extra time
out of the startup, perhaps sorting the list at build-time,
rather than when Python starts would be good. Although probably
not worth the trouble. ;-)
--
Michael Hoffman
More information about the Python-list
mailing list