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: Phil Miller <mille121 AT illinois.edu>
  • 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
  • Date: Tue, 19 Jul 2016 14:57:52 -0500

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