-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Read in VT object file and migrate objects accordingly #431
Comments
I have produced some object map file using the ProcStats::outputStatsFile and the examples/lb_iter program : I don't know if it normal, but each call produces different stats. I think the Python LoadReader needs a file named like that : base-name.node.vom, I have created a simple program which is able to read (using fscanf) the Load part (not the com) of these files. Do I have to create a new feature based on develop or based on the #427-lb-base-class ? Why a new load balancer may need to be created ? |
@mperrinel I just have merged #427 on
|
Regarding the new load balancer:
Would it be useful to have a Skype voice meeting to discuss exactly how the new load balancer should act? |
I think I can do alone the first point. For the second point, I need more explanation ! So ok for the Skype voice meeting. |
I have created the new method on the proc_stats.cc to Read the stats. |
@mperrinel Does 12:30pm PDT work for you? |
Yes |
The input statistic method is now called during the runtime initialize method
Input VOM statistic can now be used by using the new
|
👍🏻
+1
… On 1 Sep 2019, at 19:01, mperrinel ***@***.***> wrote:
Input VOM statistic can now be used by using the new --vt_lb_stats_dir_in and --vt_lb_stats_file_in arguments.
To finish this feature :
Fill the proc_data_ data member directly instead of the new proc_data_in_ (which will be removed)
_ Use the num_iters variable to finish the reader
Block the regular filling of the proc_data_ if the input VOM file is used
Create a new LB which aims to do the object migration using the proc_data_
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
proc_data is now used instead of proc_data_in.
To finish this feature :
|
More detailed commends based on our discussion: The system currently sets We do need a new data structure for a user-specified map. It can go in After the map is populated, the data from the map needs to be imported into the LB. Instead of messing with Next, after reading, we should do reductions to determine if any object has moved for a given phase. Each processor can do this by locally checking if the The remainder is just calling |
Use the new user_specified_map_changed_ data member instead
Thank @lifflander for the details ! So I updated the proc_data_ stats to keep its old behaviour. In addition the user_specified_map_ variable member store the data coming from the input file. |
@mperrinel Here's a snippet of how you might do a reduce: namespace vt { namespace collective { namespace reduce { namespace operators {
template <typename T>
struct OrOp<std::vector<T>> {
void operator()(std::vector<T>& v1, std::vector<T> const& v2) {
vtAssert(v1.size() == v2.size(), "Sizes of vectors in reduce must be equal");
for (size_t ii = 0; ii < v1.size(); ++ii)
v1[ii] = v1[ii] or v2[ii];
}
};
}}}} /* end namespace vt::collective::reduce::operators */
struct StatsMapLB {
using ReduceMsgType = collective::ReduceVecMsg<bool>;
void doneReduce(ReduceMsgType* msg) {
}
void doReduce() {
auto cb = theCB()->makeBcast<StatsMapLB,ReduceMsgType,&LBManager::doneReduce>(proxy);
auto msg = makeMessage<MsgType>(in_vector);
proxy.reduce<OrOp<std::vector<int>>>(msg.get(),cb);
}
private:
objgroup::proxy::Proxy<RotateLB> proxy = {};
}; This might not compile, but that's an example of what you need to write. |
Hi @lifflander, I try to understand your details:
As we can see the LBManager::doneReduce have not the ObjMemType<ObjT,MsgT> form.
Thanks for your help. We can discuss about that when you want ! |
The input statistic method is now called during the runtime initialize method
proc_data is now used instead of proc_data_in.
Use the new user_specified_map_changed_ data member instead
…put files in ProcStats. Clean up variable names.
Currently, VT can only write an object map file. See
ProcStats::outputStatsFile
insrc/vt/vrt/collection/balance/proc_stats.cc
for the implementation of writing out the map. We need to read in the map (without communication edges) and then migrate objects based on that mapping. A new load balancer may need to be created to do this.The text was updated successfully, but these errors were encountered: