[yt-users] Fw: mpi4py on Kraken (XT5)

Matthew Turk matthewturk at gmail.com
Tue Feb 10 21:36:41 PST 2009


Hi Stephen,

So "GIL" stands for Global Interpreter Lock.  It's used internally by
Python to prevent the reference count of objects to be changed;
ideally, for long-running tasks that don't interfere with any
PyObjects, this gets released so that different threads can all act
simultaneously.  (Python uses 'native' rather than 'green' threads, so
this would in fact take advantage of multiple cores.)  This happens,
for instance, during disk IO operations in python core.  However,
anything that uses python rather than C requires that the interpreter
be globally locked.  NumPy allows you to specify where threads should
be allowed -- thus it needs to be able to interact with the GIL.  The
two symbols you are missing are related to this interaction,
specifically locking and unlocking the global state of the
interpreter.

I would say before you try downgrading, that you compile without the
"--without-threads" option.  It seems to me that while the internals
of Python have disabled the threading, this didn't get propagated to
the NumPy build.  When I compiled for CNL, I also looked at these
notes:

http://code.google.com/p/pyprop/wiki/Installation_CrayXT4

which don't mention disabling threading.  Since none of YT (or any of
its subdependencies that do not use GUI toolkits) use threads, this
should be okay even if the threading library is unavailable on the
compute nodes.  (I see no reason why it would not be available,
however.)

Try rerunning with the same options, but remove your disabling of
threads, and let's see how that goes?  You might have to 'make
distclean' in Python2.6, and then look for the symbols and try
re-building numpy.

-Matt

On Tue, Feb 10, 2009 at 7:31 PM, Stephen Skory <stephenskory at yahoo.com> wrote:
> Matt,
>
>
>> In your Python2.6 source directory, what is the output of:
>>
>> $ grep ^ac config.log | grep thread
>>
>> In my CNL build of 2.5, I have:
>>
>> ac_cv_cxx_thread=no (*)
>> ac_cv_func_pthread_init=no
>> ac_cv_func_pthread_sigmask=yes (*)
>> ac_cv_header_pthread_h=yes
>> ac_cv_header_thread_h=no
>> ac_cv_kpthread=no
>> ac_cv_kthread=no
>> ac_cv_pthread=no (*)
>> ac_cv_pthread_is_default=yes (*)
>> ac_cv_pthread_system_supported=yes (*)
>> ac_cv_sizeof_pthread_t=8
>
> Here's mine:
>
> ac_cv_cxx_thread=yes (*)
> ac_cv_func_pthread_init=no
> ac_cv_header_pthread_h=yes
> ac_cv_header_thread_h=no
> ac_cv_kpthread=no
> ac_cv_kthread=no
> ac_cv_pthread=yes (*)
> ac_cv_pthread_is_default=no (*)
> ac_cv_sizeof_pthread_t=8
>
> it's different, I've added (*) to make it clearer.
>
>> I wonder if there is something going on in the include files; could
>> you additionally send back your ./configure line, taken from the top
>> of config.log in your python2.6 directory?
>
>  $ ./configure --prefix=/nics/c/home/sskory/yt SO=.a DYNLOADFILE=dynload_kraken.o MACHDEP=
> kraken --host=x86_64-unknown-linux-gnu --disable-sockets --disable-ssl --enable-static --di
> sable-shared --without-threads
>
> This is verbatim from the instructions except for machine specific changes.
>
>> $ nm Python/pystate.o | grep PyGIL
>
> I get nothing resulting from this command.
>
> Hrm... so this pystate stuff isn't being made correctly. And a bunch of other stuff doesn't match, either. Do you think I should try to downgrade and install Python 2.5?
>
>  _______________________________________________________
> sskory at physics.ucsd.edu           o__  Stephen Skory
> http://physics.ucsd.edu/~sskory/ _.>/ _Graduate Student
> ________________________________(_)_\(_)_______________
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>



More information about the yt-users mailing list