Hi Hui --

Just as a general note, this type of "how do I do xyz in Chapel?" or "can I do xyz in Chapel?" style questions would be awesome to see posted to StackOverflow with a Chapel tag (which will cause us to wake up and answer them there) so that they will be helpful to other users in the future as well (without dealing with reading through poorly managed mailing list archives). If for future questions you can think about "is this something that's generally useful for the public ("How do I do xyz in Chapel?") vs. not ("Here's a question very specific to my use case..."), that'd be great. You could even retroactively post questions like this one about replicating variables to StackOverflow and David could re-answer it there to get more eyes on it.

Thanks,
-Brad


On Tue, 8 Aug 2017, Hui Zhang wrote:

Thank you David, that's exactly what I need! One question: the type of
repVar can be anything right? what if I need a tuple? how can I access the
local copy?



On Tue, Aug 8, 2017 at 12:16 PM, David Iten <di...@cray.com> wrote:

Hi Hui,

You can use the 'ReplicatedDist' distribution to get a copy per locale.
There is a module 'UtilReplicatedVar' to simplify its use.

http://chapel.cray.com/docs/latest/modules/standard/UtilReplicatedVar.html
http://chapel.cray.com/docs/latest/modules/dists/ReplicatedDist.html

use UtilReplicatedVar;

var regularInt = 42;

// rcDomain is declared in UtilReplicatedVar.  It maps one value to each
locale
var repVar: [rcDomain] int;

// assign 42 to the replicated var on all locales
rcReplicate(repVar, regularInt);

// access the local copy of the replicated var
// the first form must use 1 as the index
repVar[1] = 0;
writeln(rcLocal(repVar));

// access a remote copy
rcRemote(repVar, remoteLocale);

David



On 8/8/17 10:36 AM, Hui Zhang wrote:


---------- Forwarded message ----------
From: Hui Zhang <wayne.huizh...@gmail.com>
Date: Tue, Aug 8, 2017 at 11:36 AM
Subject: Re: [Chapel-developers] question about data distribution
To: Tom MacDonald <tmacdon...@cray.com>
Cc: Brad Chamberlain <br...@cray.com>


Hello,

I'm wondering that is there an easy way to make a copy of a global
variable on each locale so that later each locale will directly access its
local copy instead of accessing the original variable stored in locale0 ?

thanks

On Mon, Aug 7, 2017 at 6:19 PM, Tom MacDonald <tmacdon...@cray.com> wrote:

We have all made this kind of mistake Hui.  No need to feel bad.  Happy
to hear you discovered the problem.



Tom MacDOnald



*From:* Hui Zhang [mailto:wayne.huizh...@gmail.com]
*Sent:* Monday, August 07, 2017 4:56 PM
*To:* Brad Chamberlain <br...@cray.com>
*Cc:* Chapel Sourceforge Developers List <chapel-developers@lists.sourc
eforge.net>
*Subject:* Re: [Chapel-developers] question about data distribution



Sorry, I made a very basic mistake that made me feel so dumm: I mixed up
the name of distributed and non-distributed domains that I used, which
caused all the confusion and proved that easily-distinguishable naming is
such an important thing, again. :P

Thanks Brad, everything works as it should be.



On Mon, Aug 7, 2017 at 4:01 PM, Brad Chamberlain <br...@cray.com> wrote:


This looks like a bug to me, though maybe someone else will remember
something that I've forgotten (as I mentioned in my previous message,
'local' clauses are a little surprising sometimes -- you may have seen that
we're actually hoping to retire them from the language to focus on more
data-centric approaches).

In either case, I think this is worth opening a GitHub issue for.

-Brad





On Mon, 7 Aug 2017, Hui Zhang wrote:

update:

After playing for a little bit, I'm more confused now:
if I have a distributed domain D, and array B declared on D, the following
code 1 will work and 2 will fail in runtime with an error "cannot access
remote data in local block", why is that?
1. work
forall b in B {
   local {
        b = here.locale.id;
   }
}

2. fail
forall d in D {
    local {
         B[d] = here.locale.id;
    }
}



On Mon, Aug 7, 2017 at 1:06 PM, Hui Zhang <wayne.huizh...@gmail.com>
wrote:

Hello,

I have a question about the data distribution in Chapel, for example we
have:

const D = {1..8} dmapped Block({1..8});
var B: [D] real;
forall d in D {
   var A : 8*real;
   foo(A, B[d]);
}

So in multilocale, even though the domain D is distributed,​ the variable
A declared in each iteration is still allocated on node0 right? which
means
we can not add "local"  clause around the loop body since foo needs to
access A from other nodes which requires communication, like:
local {
    var A: 8*real;
    foo(A, B[d]);
}  ​

or

var A: 8*real;
local {
     foo(A, B[d]);
}


Further, is it true that the only ways to put data on nodes other than 0
are:
1. use explict "on" clause, everything inside it will be allocated on the
specific locale
2. use distributed domain: piece of the data will be allocated on each
locale.
?

Thanks
--
Best regards


Hui Zhang




--
Best regards


Hui Zhang




--

Best regards


Hui Zhang




--
Best regards


Hui Zhang



--
Best regards


Hui Zhang


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot



_______________________________________________
Chapel-developers mailing 
listChapel-developers@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/chapel-developers



------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Chapel-developers mailing list
Chapel-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/chapel-developers




--
Best regards


Hui Zhang
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Chapel-developers mailing list
Chapel-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/chapel-developers

Reply via email to