Skip to Content.
Sympa Menu

charm - Re: [charm] [ppl] charm vs AMPI

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

Re: [charm] [ppl] charm vs AMPI


Chronological Thread 
  • From: "Kale, Laxmikant V" <kale AT illinois.edu>
  • To: Evghenii Gaburov <e-gaburov AT northwestern.edu>, Gengbin Zheng <zhenggb AT gmail.com>
  • Cc: "charm AT cs.uiuc.edu" <charm AT cs.uiuc.edu>
  • Subject: Re: [charm] [ppl] charm vs AMPI
  • Date: Tue, 8 Nov 2011 22:26:37 +0000
  • Accept-language: en-US
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/charm>
  • List-id: CHARM parallel programming system <charm.cs.uiuc.edu>

You can get a similar control flow with structured dagger (or just dagger)
notation within Charm++.
You can define an entry method (lets say we call it "run" by analogy with
the run method in Java).
This method, written in the .ci file, in a script-like fashion using the
dagger notation, defines the life cycle of a chare just as you describe
AMPI behavior below.

We shave many more examples of structured dagger now, and we will add them
to the documentation soon; but you could start exploring them with the
manual and any example program from the cha++ distribution. If you are
interested, I will send you a chapter about it.

What AMPI can do, that dagger cannot, is to be able to block for remote
data deep inside a function call sequence (f calls g calls h, which then
blocks for a receive). With dagger, you bring up all remote dependencies
at the top level, in the run method in the .ci file. This is a matter of
style, and some prefer one over the other. But it gives a good separation
of concerns, which we find especially useful when working in a
collaborative application. The application scientist can focus on the
sequential code, once the parallel structure and remote dependences are
agreed upon, and encoded in the structured dagger notation.


--

Laxmikant (Sanjay) Kale http://charm.cs.uiuc.edu
<http://charm.cs.uiuc.edu/>
Professor, Computer Science
kale AT illinois.edu
201 N. Goodwin Avenue Ph: (217) 244-0094
Urbana, IL 61801-2302 FAX: (217) 265-6582






On 11/8/11 1:23 PM, "Evghenii Gaburov"
<e-gaburov AT northwestern.edu>
wrote:

>Hi,
>
>Thanks for prompt replies.
>
>I guess my question is if I were to start a project is there advantage of
>me to use Charm over AMPI. One thing with AMPI, is that is can have a
>nice program flow like a normal MPI codes, with barriers and All_reduce ,
>e.g.
>
> Š do-work1 ..
> MPI_Barrier(..)
> .. do-work2 Š
> MPI_Exchange()
> .. do-work3
> MPI_Allreduce Š
> finish-work
>
>in one subroutine.
>
>With Charm, as I have understood, it requires several method to be called
>at each Barrier, exchange, reduction (via contribute, for example), and
>cannot be done in single routine. This kind of breaks the program flow,
>e.g.
>
>do_work1
>{ Š
> contribute(do_work2) // MPI_Barrier(..)
>}
>do_work2()
>{
> Š
> proxy.do_work3(data);
>}
>do_work3(..)
>{
> Š
> contribute(finish_work, CkReduction::sum_double);
>}
>finish_work(..)
>{
> ...
>}
>
>and this makes things a bit more difficult.
>
>Also, does AMPI has C++ interface, particularly for PUP? So that I can do
>same as in charm p|data, instead of pup_double(..) C routine?
>
>Thanks,
> Evghenii
>
>On Nov 8, 2011, at 11:11 AM, Gengbin Zheng wrote:
>
>> Hi,
>>
>> AMPI is an implementation of MPI standard 1.1 on top of Charm++. The
>> benefits you mentioned below from charm++ are retained in AMPI. Please
>> refer to AMPI manual for the MPI extensions for doing load balancing
>> and checkpointing.
>>
>> It sometimes take some efforts to convert an MPI program to AMPI due
>> to the multi-threading execution and global variable sharing. However,
>> AMPI provides a set of tools to automate such process (please refer to
>> recent AMPI papers for the information about the tools).
>>
>> Having said that, since AMPI is a library implemented on top of
>> charm++ (which means another layer, and associated overhead), it is
>> mainly for legacy MPI application to take advantage of charm++
>> benefits.
>>
>> Gengbin
>>
>> On Tue, Nov 8, 2011 at 10:50 AM, Evghenii Gaburov
>> <e-gaburov AT northwestern.edu>
>> wrote:
>>> Hi All,
>>>
>>> I have been wondering, what is the advantage of CHARM vs AMPI, can I
>>>achieve same level of functionality with AMPI as with CHARM?
>>>
>>> I already use Charm for my projects, but I was wondering whether
>>>charm's functionality such as automatic load-ballancing, migration,
>>>checkpoints is also available in AMPI, and whether it is as easy to add
>>>it to standard MPI program that will use AMPI backend?
>>>
>>> Thanks!
>>>
>>> Cheers,
>>> Evghenii
>>>
>>> --
>>> Evghenii Gaburov,
>>> e-gaburov AT northwestern.edu
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> charm mailing list
>>> charm AT cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/charm
>>> _______________________________________________
>>> ppl mailing list
>>> ppl AT cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/ppl
>>>
>
>--
>Evghenii Gaburov,
>e-gaburov AT northwestern.edu
>
>
>
>
>
>
>
>_______________________________________________
>charm mailing list
>charm AT cs.uiuc.edu
>http://lists.cs.uiuc.edu/mailman/listinfo/charm
>
>_______________________________________________
>ppl mailing list
>ppl AT cs.uiuc.edu
>http://lists.cs.uiuc.edu/mailman/listinfo/ppl






Archive powered by MHonArc 2.6.16.

Top of Page