I have a follow up question. I assume that changing a domain of an array, distributed or not, is not a thread safe operation, right? So I would need to synchronize it? The way to do that that I gathered from the existing codes is to use a sync variable. So, currently, my plan is to have a bool sync variable to lock the code around domain modifications. I imagine that this will be pretty slow in a distributed mode, but domain modifications should not be too frequent in my current use case.
Thank you, Marcin On 4/2/18, 5:00 PM, "Brad Chamberlain" <[email protected]> wrote: Hi Marcin -- > Yes, that is a very good idea. I did wonder where to best ask this > question, and you are right that Stack Overflow looks like the best > option It's definitely fine to ask them here as well (and it allowed me to be a bit more complete in my answer). But SO is good to keep in mind as an option. > That's exactly what I needed! Cyclic and BlockCyclic fit my need very > well. I just went for Block, but now that I think about it, I should > definitely started with Cyclic. I think I got thrown off by so many > examples in the test directory using Block, and I thought that if Block > implemented something so would Cyclic, if maybe at different cost. Your > answer clarifies that this is not the case. Yeah, Block is such a common case (and for us tends to be the most studied and optimized case) that it tends to show up disproportionately in code and documentation. (Which is ironic given that Cyclic is strictly simpler to understand and parameterize....) > If index locality doesn't matter to you at all, another option to explore > would be to use a distributed associative domain. This results in even > ... > > When you say it did not make it to master, do you mean that currently > this feature is not publically available anywhere? I believe we have a prototype in our test/ directory, though the latest version of it may be on a developer branch that hasn't been merged. Let me check on that and have one of us get back to you. It's kind of ridiculous how long it's lived in limbo, 90% done (where I can say that because I'm responsible for most of that delay). > Yes, exactly. You are correct; Block is not necessary. Cyclic is > actually much better for some algorithms anyway, at least for naïve > implementations. Also, with Cyclic I do not need to worry as much about > having my graph balanced in the first place. For example it would be OK > if lower indices had larger neighbor lists, while with Blocked I would > need to make sure I got the distribution of degrees right, or I would be > in trouble immediately. True! > Yes, this was a great answer that gave me all the tools I need to go > forward. Thank you again. ( You're very welcome. -Brad ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Chapel-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/chapel-users
