[MPICH] RE:Multithreading bugs

David Minor david-m at orbotech.com
Mon Dec 19 00:45:27 CST 2005


Hello Ralph,
You mention here problems with multi-threading support. Is there a central bug base I can browse to look at known bugs and problems with the mt support?

David Minor
Orbotech 

-----Original Message-----
From: owner-mpich-discuss at mcs.anl.gov [mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of Ralph M. Butler
Sent: Saturday, December 17, 2005 6:05 PM
To: Koehne Kai
Cc: mpich-discuss at mcs.anl.gov
Subject: Re: [MPICH] MPLMD (Multiple Programming Languages Multiple Data)

Perhaps I should not comment since I cannot address your main problem with Java, but I will toss in 2 cents anyway.  I occassionally develop code in which a single app uses a combination of Python and C.  Just last week I wrote one on linux which has multiple P-threads (as servers) in a C program that uses MPI_Send/Recv on 3 different communicators.
The Python portions of the app have access to the MPI functions as well.
I am still coding/debugging that app, but believe that everything is going to be OK.  My major concern going into this particular app was that I would encounter bugs in the MPICH multi-threading support since that is still relatively new.  But, so far things have gone fine.

A couple of years ago I examined some of the open Python wrappers for MPI, but found that they were never quite what I wanted.  So, I just roll my own whenever I need something.  I generally send Python objects as pickled objects that can travel as byte strings.
So, in Python, I can do something like this:
    pickledMsg = cPickle.dumps(obj)
    mympi.Send(pickledMsg,toRank,tag)

Here is a sample wrapper to support that:

static PyObject *Send(PyObject *self, PyObject *pArgs) {
    int msglen,torank,tag;
    char *msg;

    if ( ! PyArg_ParseTuple(pArgs,"s#ii",&msg,&msglen,&torank,&tag))
    {
	printf("Send: invalid args\n");
	return NULL;
    }
    MPI_Send(msg,msglen,MPI_BYTE,torank,tag,MPI_COMM_WORLD);
    return Py_BuildValue("");  /* None */ }

--ralph

> Date: Sat, 17 Dec 2005 10:28:57 +0100
> From: Koehne Kai <Kai.Koehne at student.hpi.uni-potsdam.de>
> To: mpich-discuss at mcs.anl.gov
> Subject: [MPICH] MPLMD (Multiple Programming Languages Multiple Data)
>
> Hello,
>
> first of all sorry if the question sounds stupid to you, or if this is not the right place to ask. I am pretty new to MPI in general, and could not find a more specific discussion board ...
>
> The Multiple Programs Multiple Data (MPMD) paradigm is pretty well documented for MPICH. However, I am trying to let multiple programs, written in different programming languages (Java and Python), to communicate. I tried to achieve that with two MPI wrapper libraries, namely mpiJava and pypar.
>
> However, I failed: When combining small Python and Java demo programs in one MPICH procgroup file, the Java programs seem to hang up in the MPI initialization call.
>
> It might be that this problem is specific to the mpiJava wrapper implementation. However, I am a bit astonished that the whole idea of combining MPI programs from different programming languages is hardly ever explained in the literature. Have you had experience with such a setting? And can you recommend me a specific Java wrapper implementation that is known to communicate nicely with other wrapper implementations?
>
> Regards,
>
> Kai Koehne
> Hasso-Plattner-Instute
> University of Potsdam
> Germany
>
>
>




More information about the mpich-discuss mailing list