Skip to Content.
Sympa Menu

charm - Re: [charm] Build Charm++ Problem

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

Re: [charm] Build Charm++ Problem


Chronological Thread 
  • From: Phil Miller <mille121 AT illinois.edu>
  • To: Haowei Huang <huangh AT in.tum.de>
  • Cc: core-ppl AT cs.uiuc.edu, charm AT cs.uiuc.edu
  • Subject: Re: [charm] Build Charm++ Problem
  • Date: Tue, 4 May 2010 10:26:17 -0500
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/charm>
  • List-id: CHARM parallel programming system <charm.cs.uiuc.edu>

On Tue, May 4, 2010 at 03:00, Haowei Huang
<huangh AT in.tum.de>
wrote:
>         I am now running some charm++ examples on Cray XT4/XT5 machine and I
> have some questions:
>
>        1.when I use charmrun command to run the executable file, I can see
> "mpiexec -n num .... ",which means the base implementation is MPI. On Cray,
> we have to use aprun to run mpi executable and even move the executable to
> another work directory. So is the charmrun command  configurable to such
> useage?

In the present release, charmrun is not configurable in that way. We
plan to improve on that situation in the near future. For now, I'd
advise just using aprun directly, as documented for the system you're
running on (as an aside, what system is that?).

>        2. What is the default strategy to map computation load to different
> MPI processes or processors? For example, programmer doesn't specify
> "Array(x1, y1, x2, y2).insert((currPE++) % numPes) "

According to the documentation, 1D arrays get mapped round-robin, and
other arrays get mapped pseudo-randomly, by a hash function.
https://charm.cs.uiuc.edu/manuals/html/charm++/3_8.html#SECTION00038400000000000000

My recollection is that the default mappings may have changed from
that, so I'll ask the cognizant group members to comment on this issue
and update the documentation appropriately.

>  And even if programmer specifies like that, different elements in array
> execute such statement, how does the runtime system guarantee the
> synchronisation of currPE and numPes variable ? Are they global ?

I'm not sure what you mean by that. Charm++ doesn't define any
variables named currPE or numPes, so we'd need to see the code you're
working with.

Also, it sounds like you're thinking of Charm++ code in an SPMD
fashion (like MPI), when that's not the case. When a method is
invoked, it is invoked on a specific object, which resides on a
particular processor. If you invoke a method on a collection of chares
(an Array or Group), each element will execute that method at some
point, but there's no notion of them acting in synchrony.

>      3. Could you please tell me a little bit  more about the thread
> migration to achieve load balance on distributed machine like Cray XT
> series? Or do you have some documentation describing details of thread
> migration?

Object and thread migration in Charm++is independent of the machine on
which you run. The Charm++ and AMPI manuals discuss the mechanics of
enabling migration, but they don't really explain it. There are a
number of papers on our website that treat this topic, though I don't
immediately know which is the best reference for these ideas.

https://charm.cs.uiuc.edu/papers/





Archive powered by MHonArc 2.6.16.

Top of Page