Hi, Thanks for your reply. I actually started writing my own classes using Rail as backing storage for dynamically distributable arrays. Not sure if I'll ever manage to bring this project to finish, though, nor is there even real need to... Relating to this does there exist in X10 for Rails something like memmove in C? Also, do there exists ordered associative container with unique keys, like std::map in c++?
> To design the right data structure, you'll need to think about which > operations are on your critical path and which operations you can afford to > make a little slow to gain flexibility. The critical operations would be to map functions to each element of array(s) (excluding boundary cells), access to neighbouring elements, which requires exchanging of ghost elements. Redistribution of data doesn't need to be fast, really. Even creating a new DistArray with new distribution and copying data from old array would be fine. Does there exist something in X10 that does this? > The distributed arrays in x10.array (subclasses of DistArray) are > designed to optimize indexing performance of individual element access. > The existing implementations (including two I added late this afternoon > because of your email (http://sourceforge.net/p/x10/code/28348)), (a) have > a fixed distribution of the longest axis among the places and (b) > distribute the indices of that axis as evenly as possible. > It would be really easy to take one of the arrays I just checked in > and change (b) so that you could distribute the longest axis unevenly when > the array was constructed. You'd just need to change the few places where > BlockingUtils.partitionBlock is called to do something else. The basic > design idea with these classes is to compute key values needed for indexing > operations at array construction and cache them in the local state of each > array so they don't need to be recomputed on access. This is key to making > the translation from the global index to the local offset use as few > instructions as possible. > One warning...I wrote these two new array implementations in about 45 > minutes...I did do some basic testing, but they might not be 100% correct > yet. Thanks, I'll look into those. > If you really need to be able to dynamically redistribute the longest > axis between places after the array is created, you might consider > something that was more like an array of arrays in each place to make it > easier to redistribute the longest axis while maintaining spatial locality > for the shorter axis. Well, I'm new to programming clusters so I don't know how these things are usually done... But, let's say that in cluster I have some computers that have 1 core, some that have 16. What would be the usual way to distribute the load in such case? ------------------------------------------------------------------------------ Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk _______________________________________________ X10-users mailing list X10-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/x10-users