Skip to Content.
Sympa Menu

charm - Re: [charm] Run multiple custom reducers at (potentially) the same time

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

Re: [charm] Run multiple custom reducers at (potentially) the same time


Chronological Thread 
  • From: "Kale, Laxmikant V" <kale AT illinois.edu>
  • To: "Miller, Philip B" <mille121 AT illinois.edu>, Tom Quinn <trq AT astro.washington.edu>
  • Cc: Jozsef Bakosi <jbakosi AT gmail.com>, "charm AT cs.uiuc.edu" <charm AT cs.uiuc.edu>
  • Subject: Re: [charm] Run multiple custom reducers at (potentially) the same time
  • Date: Tue, 19 Jul 2016 21:30:24 +0000
  • Accept-language: en-US

So, Jozsef, in case you are using those reductions in a way that the sequencing cannot be guaranteed to be the same (i.e. some chare array elements will contribute to reduction A before B,  while others contribute B before A), you should learn how to use the “shadow arrays” (called bound arrays in the manual : http://charm.cs.illinois.edu/manuals/html/charm++/13.html ) to achieve this.

Your phrase “at the same time” makes me think you may need it.  A bound array is bound to another chare array of the same shape, so that the corresponding elements (i.e. those with the same index) are guaranteed to be on the same processor. One of your reductions will contribute via the bound array.

 

Let us know if you have trouble with this.

 

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: Phil Miller <mille121 AT illinois.edu>
Reply-To: Phil Miller <mille121 AT illinois.edu>
Date: Tuesday, July 19, 2016 at 2:57 PM
To: Tom Quinn <trq AT astro.washington.edu>
Cc: Jozsef Bakosi <jbakosi AT gmail.com>, "charm AT cs.uiuc.edu" <charm AT cs.uiuc.edu>
Subject: Re: [charm] Run multiple custom reducers at (potentially) the same time

 

On Tue, Jul 19, 2016 at 2:48 PM, Tom Quinn <trq AT astro.washington.edu> wrote:

Are you sure this works if the reducers are running on the same chare array?  In ChaNGa we had to set up "shadow arrays" to have two reductions running concurrently.

 

There is a potential concern if elements may end up making contribution calls concurrently, and in potentially different orders. Every element in an array, group, or section must contribute to the same sequence of reductions, just like MPI programs must call the same sequence of collections on a given communicator. The result is otherwise supposed to lead to assertion failures in the runtime, but may have undefined behavior.

 

On Tue, 19 Jul 2016, Phil Miller wrote:

On Tue, Jul 19, 2016 at 9:08 AM, Jozsef Bakosi <jbakosi AT gmail.com> wrote:
      I have been successfully using custom reducers, described in
      16.2 of the user manual. Now I'm wondering if it is safe to use
      more than one reducer, utilizing the same reducer type,
      registered in the initnode routine, at the same time, i.e.,
      potentially doing two (or more) reductions running at the same
      time but whose end-points, of course, point to different
      reduction entry method member functions. Or do I have to create
      multiple reducers as the manual example would require a
      sumTwoShortsType2?


The registration of custom reducers is just to associate a common global
index to t he function pointer that may differ across processes. So go right
ahead, and it should work fine.

The only case I can think of where multiple concurrent uses of a reducer
could be a problem is if the reducer implementation contained `static`
variables, which would seem quite strange.

 




Archive powered by MHonArc 2.6.16.

Top of Page