Praveen, > I'm getting familiar with some code base day by day.Each day I'm trying to > do my best .I find that the code base is larger but I can't able to > correctly figure it out which parts of the library I will use for > distributed component placement project. I have also installed chapel in > rostam so I can use it for learning the behaviors of domain maps over a > clusters. I want to design the outline and implementation details of the > project as soon as possible. For that I want to know what exactly hpx > wants from domain maps of course yes,I designed my proposal by referencing > so many things and got a OVERALL plan.But I'm lacking many things I guess. > Yes, I do have plans about the project but I don't know how to fix it with > hpx. > Next is building allocators over domain maps. Actually I didn't use any > custom allocators for my college projects,Can you please share some good > reading on those topics.I believe that soon I will design the project > (mostly in terms of diagrams so it can speak well than words). Any > suggestions and advices about project is highly welcomed. I hope I will do > my best to complete the project.
The key for this project is to understand distribution policies. The plan is to use those to manage the distribution of components. They are also used (amongst other things) by partitioned vector to determine where its partitions are allocated. We have several distribution policies implemented in HPX: default_distribution_policy (https://github.com/STEllAR-GROUP/hpx/blob/master/hpx/runtime/components/default_distribution_policy.hpp) binpacking_distribution_policy (https://github.com/STEllAR-GROUP/hpx/blob/master/hpx/runtime/components/binpacking_distribution_policy.hpp) target_distribution_policy (https://github.com/STEllAR-GROUP/hpx/blob/master/hpx/runtime/components/target_distribution_policy.hpp) A distribution policy is an object which exposes two functions: struct example_distribution_policy { template <typename Component, typename ...Ts> hpx::future<hpx::id_type> create(Ts&&... vs) const { // Create an instance of the given Component. // The policy decides where to create the component // instance. // Return a future<id_type> referring to the newly // created instance } // A bulk_locality_result holds all id_types for the newly // created Component instances associated with the locality // where they were created. using bulk_locality_result = std::pair<hpx::id_type, std::vector<hpx::id_type>>; template <typename Component, typename ...Ts> hpx::future<std::vector<bulk_locality_result> > bulk_create(std::size_t count, Ts&&... vs) const { // Create multiple Component instances on the localities // associated by this policy. } // this might not be necessary std::size_t get_num_localities() const { // Return the number of localities this policy knows about. } // this might not be necessary hpx::id_type get_next_target() const { // Return the locality which is anticipated to be used for // the next create operation. } }; The existing distribution policies also expose a couple of function related to task execution (async, async_cb, etc.), but I think those sdon't belong here and should be removed (and encapsulated by special executors). So for now I'd suggest you ignore those for your work. The bottom line is that for you project you should consider creating one (or more) distribution policies which encapsulate the functionality you envision. HTH Regards Hartmut --------------- http://boost-spirit.com http://stellar.cct.lsu.edu _______________________________________________ hpx-users mailing list [email protected] https://mail.cct.lsu.edu/mailman/listinfo/hpx-users
