[Mpi3-hybridpm] [EXTERNAL] Re: Threading homeworking / next telecon
Pavan Balaji
balaji at mcs.anl.gov
Mon Mar 25 20:19:11 CDT 2013
I guess you could do that. In our case, it was still not helpful as we
needed the inheritance to be automatic, once an upper-layer (such as
UPC) passes a 'comm' as an alternative to MPI_COMM_WORLD.
-- Pavan
On 03/25/2013 07:47 PM US Central Time, Jeff Hammond wrote:
> Could the MPI_Info kv-pair not associate a communicator with a
> collection of communicators upon which progress was made
> simultaneously? If the key is "communicator team" and the value is an
> integer indexing said teams, can one not create such groups?
>
> Jeff
>
> On Mon, Mar 25, 2013 at 7:41 PM, Pavan Balaji <balaji at mcs.anl.gov> wrote:
>>
>> The problem was that this wasn't allow us to create a group of
>> communicators on which progress is made. Each communicator was
>> independent of everything else.
>>
>> However, our goal was allowing each "UPC thread" to be an MPI rank,
>> where all threads share that rank. Your goal is different, so this
>> might or might not be a concern for you.
>>
>> -- Pavan
>>
>> On 03/25/2013 07:39 PM US Central Time, Jeff Hammond wrote:
>>> Why can't a user do MPI_COMM_SET_INFO explicitly every time they want
>>> per-communicator semantics?
>>>
>>> Jeff
>>>
>>> On Mon, Mar 25, 2013 at 7:30 PM, Pavan Balaji <balaji at mcs.anl.gov> wrote:
>>>>
>>>> FWIW, we discussed a similar in the hybrid WG a few meetings ago. The
>>>> main reason why we didn't go down that path was because per-communicator
>>>> semantics are not fully inherited for child communicators. For example,
>>>> split does not inherit info arguments or communicator attributes, while
>>>> dup does.
>>>>
>>>> -- Pavan
>>>>
>>>> On 03/25/2013 05:31 PM US Central Time, Sur, Sayantan wrote:
>>>>> This is interesting. It might be useful for implementers if the app
>>>>> could inform the MPI library that in its usage model, per-communicator
>>>>> queues might lead to a performance benefit. Such as in the case of many
>>>>> threads (among others).
>>>>>
>>>>>
>>>>>
>>>>> Info key? Assert?
>>>>>
>>>>>
>>>>>
>>>>> Sayantan
>>>>>
>>>>>
>>>>>
>>>>> *From:*mpi3-hybridpm-bounces at lists.mpi-forum.org
>>>>> [mailto:mpi3-hybridpm-bounces at lists.mpi-forum.org] *On Behalf Of
>>>>> *William Gropp
>>>>> *Sent:* Monday, March 25, 2013 2:24 PM
>>>>> *To:* mpi3-hybridpm at lists.mpi-forum.org
>>>>> *Subject:* Re: [Mpi3-hybridpm] [EXTERNAL] Re: Threading homeworking /
>>>>> next telecon
>>>>>
>>>>>
>>>>>
>>>>> An implementation is free to use separate queues for each communicator;
>>>>> some of us have discussed this in the past, in part to permit use of
>>>>> lock-free structures for the queue updates, particularly as this is the
>>>>> only place there are no wild cards, ever. I believe that this is within
>>>>> the existing semantics. It even has benefits for single threaded
>>>>> execution, since the communicator matching is done once, rather than in
>>>>> every query on the queue.
>>>>>
>>>>>
>>>>>
>>>>> In terms of progress, the standard is deliberately vague on the details,
>>>>> and thus I don't believe we have the requirement that you quote. And
>>>>> some of the other interpretations of progress would not be helped by any
>>>>> thread-safety restriction.
>>>>>
>>>>>
>>>>>
>>>>> Bill
>>>>>
>>>>>
>>>>>
>>>>> William Gropp
>>>>>
>>>>> Director, Parallel Computing Institute
>>>>>
>>>>> Deputy Director for Research
>>>>>
>>>>> Institute for Advanced Computing Applications and Technologies
>>>>>
>>>>> Thomas M. Siebel Chair in Computer Science
>>>>>
>>>>> University of Illinois Urbana-Champaign
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mar 25, 2013, at 4:15 PM, Jeff Hammond wrote:
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Mar 25, 2013 at 3:17 PM, William Gropp <wgropp at illinois.edu
>>>>> <mailto:wgropp at illinois.edu>> wrote:
>>>>>
>>>>> I was only addressing the issue of calling the thread level routines before
>>>>>
>>>>> knowing what thread level you had.
>>>>>
>>>>>
>>>>> Okay, sorry, I cannot tell which tickets people are referring to since
>>>>> I have a bunch of different ones right now.
>>>>>
>>>>>
>>>>> I'm not sure what you are looking for. In the case of MPI_THREAD_MULTIPLE,
>>>>>
>>>>> an implementation can provide significant concurrency today without any
>>>>>
>>>>> change in the MPI standard - that's a major reason for that table
>>>>> (more to
>>>>>
>>>>> the point - this table is meant as a guide for not using locks).
>>>>> Can you
>>>>>
>>>>> give me an example of something that the current MPI semantics prohibits
>>>>>
>>>>> that you'd like to achieve with MPI_THREAD_PER_OBJECT?
>>>>>
>>>>>
>>>>> It is my understanding of the progress requirements that any call to
>>>>> MPI must make progress on all MPI operations. This means that two
>>>>> threads calling e.g. MPI_Recv must walk all of the message queues. If
>>>>> a thread needs to modify any queue because it matches, then this must
>>>>> be done in a thread-safe way, which presumably requires something
>>>>> resembling mutual exclusion or transactions. If a call to MPI_Recv
>>>>> only had to make progress on its own communicator, then two threads
>>>>> calling MPI_Recv on two different communicators would (1) only have to
>>>>> walk the message queue associated with that communicator and (2)
>>>>> nothing resembling mutual exclusion is required for the thread to
>>>>> update the message queue in the event that matching occurs.
>>>>>
>>>>> Forgive me if I've got some of the details wrong. If I've got all of
>>>>> the details and the big picture wrong, then I'll think about it more.
>>>>>
>>>>> Jeff
>>>>>
>>>>>
>>>>> On Mar 25, 2013, at 2:53 PM, Jeff Hammond wrote:
>>>>>
>>>>>
>>>>>
>>>>> That doesn't do much for me in terms of enabling greater concurrency
>>>>>
>>>>> in performance-critical operations.
>>>>>
>>>>>
>>>>>
>>>>> I'd like to propose that we try to make all of "Access Only", "Update
>>>>>
>>>>> RefCount", "Read of List" and "None" thread safe in all cases. All of
>>>>>
>>>>> these are read-only except for "Update RefCount", but this can be done
>>>>>
>>>>> with atomics. I am assuming that concurrent reads are only permitted
>>>>>
>>>>> to happen after the writing calls on the object have completed. This
>>>>>
>>>>> is the essence of MPI_THREAD_PER_OBJECT.
>>>>>
>>>>>
>>>>>
>>>>> Jeff
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>>
>>>>> Mpi3-hybridpm mailing list
>>>>>
>>>>> Mpi3-hybridpm at lists.mpi-forum.org
>>>>> <mailto:Mpi3-hybridpm at lists.mpi-forum.org>
>>>>>
>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-hybridpm
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Jeff Hammond
>>>>> Argonne Leadership Computing Facility
>>>>> University of Chicago Computation Institute
>>>>> jhammond at alcf.anl.gov <mailto:jhammond at alcf.anl.gov> / (630) 252-5381
>>>>> http://www.linkedin.com/in/jeffhammond
>>>>> https://wiki.alcf.anl.gov/parts/index.php/User:Jhammond
>>>>> _______________________________________________
>>>>> Mpi3-hybridpm mailing list
>>>>> Mpi3-hybridpm at lists.mpi-forum.org <mailto:Mpi3-hybridpm at lists.mpi-forum.org>
>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-hybridpm
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Mpi3-hybridpm mailing list
>>>>> Mpi3-hybridpm at lists.mpi-forum.org
>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-hybridpm
>>>>>
>>>>
>>>> --
>>>> Pavan Balaji
>>>> http://www.mcs.anl.gov/~balaji
>>>> _______________________________________________
>>>> Mpi3-hybridpm mailing list
>>>> Mpi3-hybridpm at lists.mpi-forum.org
>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-hybridpm
>>>
>>>
>>>
>>
>> --
>> Pavan Balaji
>> http://www.mcs.anl.gov/~balaji
>
>
>
--
Pavan Balaji
http://www.mcs.anl.gov/~balaji
More information about the mpiwg-hybridpm
mailing list