From 6e015f9bd4a64c46daa2489340f69e36cf2a9847 Mon Sep 17 00:00:00 2001 From: Houtan Bastani Date: Thu, 9 Jun 2011 14:44:58 +0200 Subject: [PATCH] ParallelDynare: set weights for all nodes in preprocessor --- ConfigFile.cc | 31 +++++++++++-------------------- ConfigFile.hh | 4 ++-- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/ConfigFile.cc b/ConfigFile.cc index fbcc2af9..3ad4600d 100644 --- a/ConfigFile.cc +++ b/ConfigFile.cc @@ -277,7 +277,7 @@ ConfigFile::getConfigFileInfo(const string ¶llel_config_file) exit(EXIT_FAILURE); } else - member_nodes[node_name] = NULL; + member_nodes[node_name] = 1.0; node_name = token; } else @@ -289,7 +289,7 @@ ConfigFile::getConfigFileInfo(const string ¶llel_config_file) cerr << "ERROR (in config file): Misspecification of weights passed to Members option." << endl; exit(EXIT_FAILURE); } - member_nodes[node_name] = new double (weight); + member_nodes[node_name] = weight; } catch (bad_lexical_cast &) { @@ -299,7 +299,7 @@ ConfigFile::getConfigFileInfo(const string ¶llel_config_file) } if (!node_name.empty()) if (member_nodes.find(node_name) == member_nodes.end()) - member_nodes[node_name] = NULL; + member_nodes[node_name] = 1.0; else { cerr << "ERROR (in config file): Node entered twice in specification of cluster." << endl; @@ -480,19 +480,14 @@ ConfigFile::transformPass() else cluster_it = clusters.find(cluster_name); - member_nodes_t member_nodes = cluster_it->second->member_nodes; double weight_denominator = 0.0; - for (member_nodes_t::const_iterator it = member_nodes.begin(); - it != member_nodes.end(); it++) - if (it->second) - weight_denominator += *it->second; - else - weight_denominator += 1.0; + for (member_nodes_t::const_iterator it = cluster_it->second->member_nodes.begin(); + it != cluster_it->second->member_nodes.end(); it++) + weight_denominator += it->second; - for (member_nodes_t::iterator it = member_nodes.begin(); - it != member_nodes.end(); it++) - if (it->second) - *it->second /= weight_denominator; + for (member_nodes_t::iterator it = cluster_it->second->member_nodes.begin(); + it != cluster_it->second->member_nodes.end(); it++) + it->second /= weight_denominator; } void @@ -538,12 +533,8 @@ ConfigFile::writeCluster(ostream &output) const << "'RemoteDirectory', '" << it->second->remoteDirectory << "', " << "'DynarePath', '" << it->second->dynarePath << "', " << "'MatlabOctavePath', '" << it->second->matlabOctavePath << "', " - << "'OperatingSystem', '" << it->second->operatingSystem << "', "; - - if (cluster_it->second->member_nodes.find(it->first)->second) - output << "'NodeWeight', '" << *(cluster_it->second->member_nodes.find(it->first)->second) << "', "; - else - output << "'NodeWeight', '', "; + << "'OperatingSystem', '" << it->second->operatingSystem << "', " + << "'NodeWeight', '" << (cluster_it->second->member_nodes.find(it->first))->second << "', "; if (it->second->singleCompThread) output << "'SingleCompThread', 'true');" << endl; diff --git a/ConfigFile.hh b/ConfigFile.hh index 76032b66..5a591e70 100644 --- a/ConfigFile.hh +++ b/ConfigFile.hh @@ -25,7 +25,7 @@ using namespace std; -typedef map member_nodes_t; +typedef map member_nodes_t; class SlaveNode @@ -60,7 +60,7 @@ public: ~Cluster(); protected: - const member_nodes_t member_nodes; + member_nodes_t member_nodes; }; //! The abstract representation of a "config" file