charm AT lists.siebelschool.illinois.edu
Subject: Charm++ parallel programming system
List archive
- From: "Kale, Laxmikant V" <kale AT illinois.edu>
- To: "Kolla, Hemanth NMN" <hnkolla AT sandia.gov>, "charm AT cs.uiuc.edu" <charm AT cs.uiuc.edu>
- Subject: Re: [charm] Question on quiescence detection mechanism
- Date: Wed, 27 Jul 2016 01:44:26 +0000
- Accept-language: en-US
CkStartQD can be called from any place, not just main chare. It just starts a distributed asynchronous algorithms (that runs concurrently with the application) for detecting this condition, and when detected, informs the application via the callback you selected. Only one call to CkStartQD should be made. So it is sometimes convenient to call it from main chare.. But you can call it, for example, from a particular element of a chare array. It doesn’t need to be called after everyone has reached some state. ( but if you need that, start it after a reduction). The system is *always* doing the local bookkeeping needed to detect quiescence. Your triggering via CkStartQD simply asks it to run the distributed algorithm and notify via callback.
Now, if you have a situation where every chare has reached a certain point and then you want to be notified, a reduction might be the simplest thing to do. (which is what it sounded like from your description). But I suspect you have messages in flight even after all chares have reached a certain point in their lifecycle and so need QD.
Hoe that helps.
Laxmikant (Sanjay) Kale http://charm.cs.uiuc.edu Professor, Computer Science kale AT illinois.edu 201 N. Goodwin Avenue Ph: (217) 244-0094 Urbana, IL 61801-2302
From:
"Kolla, Hemanth NMN" <hnkolla AT sandia.gov>
Hi,
I've a question on the quiescence detection mechanism, and its proper (well-defined) use.
Can a CkStartQD be placed inside an entry method of a chare array? If so, isn't it ill-defined? As I interpret it, a QD callback is invoked when quiescence, a state when no messages are in flight or pending processing and no entry methods are being executed on any processor, is detected. But if it is placed inside an entry method, then technically it can't be a quiescent state since the entry method needs to be executed to arrive at the callback.
The problem I have (or at least the way I've cast the problem) is that every chare object needs to detect quiescence after a particular sequence of entry method executions have occurred on each object. So naturally, I'm thinking of placing a CkStartQD call inside a serial entry method of the chare array. But I'm not sure if a quiescent state can ever be reached for the reason I described above. The few examples with QD I've seen in the charm examples all place a CkStartQD inside the main chare.
Any clarification would be helpful.
Thanks, Hemanth.
|
- [charm] Question on quiescence detection mechanism, Kolla, Hemanth NMN, 07/26/2016
- <Possible follow-up(s)>
- Re: [charm] Question on quiescence detection mechanism, Kale, Laxmikant V, 07/26/2016
- Re: [charm] [EXTERNAL] Re: Question on quiescence detection mechanism, Kolla, Hemanth NMN, 07/26/2016
- Re: [charm] [EXTERNAL] Re: Question on quiescence detection mechanism, Phil Miller, 07/27/2016
- Re: [charm] [EXTERNAL] Re: Question on quiescence detection mechanism, Kolla, Hemanth NMN, 07/26/2016
Archive powered by MHonArc 2.6.16.