From 2a68f5a3af2886ce40149b1af10a9c08d5b4099c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Wed, 15 Jun 2022 15:37:19 +0200 Subject: [PATCH] =?UTF-8?q?Use=20=E2=80=9Cfollower=E2=80=9D=20instead=20of?= =?UTF-8?q?=20=E2=80=9Cslave=E2=80=9D=20in=20internal=20class=20and=20vari?= =?UTF-8?q?able=20names?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ConfigFile.cc | 122 +++++++++++++++++++++++----------------------- src/ConfigFile.hh | 22 ++++----- src/DynareMain.cc | 6 +-- 3 files changed, 75 insertions(+), 75 deletions(-) diff --git a/src/ConfigFile.cc b/src/ConfigFile.cc index 2d5a0807..e5560a63 100644 --- a/src/ConfigFile.cc +++ b/src/ConfigFile.cc @@ -54,10 +54,10 @@ Path::Path(vector includepath_arg) paths["include"] = move(includepath_arg); } -SlaveNode::SlaveNode(string computerName_arg, string port_arg, int minCpuNbr_arg, int maxCpuNbr_arg, string userName_arg, - string password_arg, string remoteDrive_arg, string remoteDirectory_arg, - string programPath_arg, string programConfig_arg, string matlabOctavePath_arg, bool singleCompThread_arg, - int numberOfThreadsPerJob_arg, string operatingSystem_arg) : +FollowerNode::FollowerNode(string computerName_arg, string port_arg, int minCpuNbr_arg, int maxCpuNbr_arg, string userName_arg, + string password_arg, string remoteDrive_arg, string remoteDirectory_arg, + string programPath_arg, string programConfig_arg, string matlabOctavePath_arg, bool singleCompThread_arg, + int numberOfThreadsPerJob_arg, string operatingSystem_arg) : computerName{move(computerName_arg)}, port{move(port_arg)}, minCpuNbr{minCpuNbr_arg}, @@ -98,10 +98,10 @@ Cluster::Cluster(member_nodes_t member_nodes_arg) : } ConfigFile::ConfigFile(bool parallel_arg, bool parallel_test_arg, - bool parallel_slave_open_mode_arg, bool parallel_use_psexec_arg, + bool parallel_follower_open_mode_arg, bool parallel_use_psexec_arg, string cluster_name_arg) : parallel{parallel_arg}, parallel_test{parallel_test_arg}, - parallel_slave_open_mode{parallel_slave_open_mode_arg}, + parallel_follower_open_mode{parallel_follower_open_mode_arg}, parallel_use_psexec{parallel_use_psexec_arg}, cluster_name{move(cluster_name_arg)} { @@ -498,16 +498,16 @@ ConfigFile::addParallelConfFileElement(bool inNode, bool inCluster, const member exit(EXIT_FAILURE); } else - if (name.empty() || slave_nodes.contains(name)) + if (name.empty() || follower_nodes.contains(name)) { cerr << "ERROR: Every node must be assigned a unique name." << endl; exit(EXIT_FAILURE); } else - slave_nodes.emplace(name, SlaveNode{computerName, port, minCpuNbr, maxCpuNbr, userName, - password, remoteDrive, remoteDirectory, programPath, programConfig, - matlabOctavePath, singleCompThread, numberOfThreadsPerJob, - operatingSystem}); + follower_nodes.emplace(name, FollowerNode{computerName, port, minCpuNbr, maxCpuNbr, userName, + password, remoteDrive, remoteDirectory, programPath, programConfig, + matlabOctavePath, singleCompThread, numberOfThreadsPerJob, + operatingSystem}); //! ADD CLUSTER else if (inCluster) if (minCpuNbr > 0 || maxCpuNbr > 0 || !userName.empty() @@ -548,83 +548,83 @@ ConfigFile::checkPass(WarningConsolidation &warnings) const if (!parallel && !parallel_test) return; - //! Check Slave Nodes - if (slave_nodes.empty()) + //! Check Follower Nodes + if (follower_nodes.empty()) { cerr << "ERROR: At least one node must be defined in the config file." << endl; exit(EXIT_FAILURE); } - for (const auto &slave_node : slave_nodes) + for (const auto &follower_node : follower_nodes) { #if !defined(_WIN32) && !defined(__CYGWIN32__) //For Linux/Mac, check that cpuNbr starts at 0 - if (slave_node.second.minCpuNbr != 0) + if (follower_node.second.minCpuNbr != 0) warnings << "WARNING: On Unix-based operating systems, you cannot specify the CPU that is " << "used in parallel processing. This will be adjusted for you such that the " << "same number of CPUs are used." << endl; #endif - if (!slave_node.second.port.empty()) + if (!follower_node.second.port.empty()) try { - stoi(slave_node.second.port); + stoi(follower_node.second.port); } catch (const invalid_argument &) { - cerr << "ERROR (node " << slave_node.first << "): the port must be an integer." << endl; + cerr << "ERROR (node " << follower_node.first << "): the port must be an integer." << endl; exit(EXIT_FAILURE); } - if (!slave_node.second.computerName.compare("localhost")) // We are working locally + if (!follower_node.second.computerName.compare("localhost")) // We are working locally { - if (!slave_node.second.remoteDrive.empty()) + if (!follower_node.second.remoteDrive.empty()) { - cerr << "ERROR (node " << slave_node.first << "): the RemoteDrive option may not be passed for a local node." << endl; + cerr << "ERROR (node " << follower_node.first << "): the RemoteDrive option may not be passed for a local node." << endl; exit(EXIT_FAILURE); } - if (!slave_node.second.remoteDirectory.empty()) + if (!follower_node.second.remoteDirectory.empty()) { - cerr << "ERROR (node " << slave_node.first << "): the RemoteDirectory option may not be passed for a local node." << endl; + cerr << "ERROR (node " << follower_node.first << "): the RemoteDirectory option may not be passed for a local node." << endl; exit(EXIT_FAILURE); } } else { - if (slave_node.second.userName.empty()) + if (follower_node.second.userName.empty()) { - cerr << "ERROR (node " << slave_node.first << "): the UserName option must be passed for every remote node." << endl; + cerr << "ERROR (node " << follower_node.first << "): the UserName option must be passed for every remote node." << endl; exit(EXIT_FAILURE); } - if (slave_node.second.operatingSystem.compare("windows") == 0) + if (follower_node.second.operatingSystem.compare("windows") == 0) { - if (slave_node.second.password.empty()) + if (follower_node.second.password.empty()) { - cerr << "ERROR (node " << slave_node.first << "): the Password option must be passed under Windows for every remote node." << endl; + cerr << "ERROR (node " << follower_node.first << "): the Password option must be passed under Windows for every remote node." << endl; exit(EXIT_FAILURE); } - if (slave_node.second.remoteDrive.empty()) + if (follower_node.second.remoteDrive.empty()) { - cerr << "ERROR (node " << slave_node.first << "): the RemoteDrive option must be passed under Windows for every remote node." << endl; + cerr << "ERROR (node " << follower_node.first << "): the RemoteDrive option must be passed under Windows for every remote node." << endl; exit(EXIT_FAILURE); } } #if defined(_WIN32) || defined(__CYGWIN32__) - if (slave_node.second.operatingSystem.empty()) + if (follower_node.second.operatingSystem.empty()) { - if (slave_node.second.password.empty()) + if (follower_node.second.password.empty()) { - cerr << "ERROR (node " << slave_node.first << "): the Password option must be passed under Windows for every remote node." << endl; + cerr << "ERROR (node " << follower_node.first << "): the Password option must be passed under Windows for every remote node." << endl; exit(EXIT_FAILURE); } - if (slave_node.second.remoteDrive.empty()) + if (follower_node.second.remoteDrive.empty()) { - cerr << "ERROR (node " << slave_node.first << "): the RemoteDrive option must be passed under Windows for every remote node." << endl; + cerr << "ERROR (node " << follower_node.first << "): the RemoteDrive option must be passed under Windows for every remote node." << endl; exit(EXIT_FAILURE); } } #endif - if (slave_node.second.remoteDirectory.empty()) + if (follower_node.second.remoteDirectory.empty()) { - cerr << "ERROR (node " << slave_node.first << "): the RemoteDirectory must be specified for every remote node." << endl; + cerr << "ERROR (node " << follower_node.first << "): the RemoteDirectory must be specified for every remote node." << endl; exit(EXIT_FAILURE); } } @@ -645,7 +645,7 @@ ConfigFile::checkPass(WarningConsolidation &warnings) const for (const auto &cluster : clusters) for (const auto &itmn : cluster.second.member_nodes) - if (!slave_nodes.contains(itmn.first)) + if (!follower_nodes.contains(itmn.first)) { cerr << "Error: node " << itmn.first << " specified in cluster " << cluster.first << " was not found" << endl; exit(EXIT_FAILURE); @@ -660,7 +660,7 @@ ConfigFile::transformPass() #if !defined(_WIN32) && !defined(__CYGWIN32__) //For Linux/Mac, check that cpuNbr starts at 0 - for (auto &it : slave_nodes) + for (auto &it : follower_nodes) if (it.second.minCpuNbr != 0) { it.second.maxCpuNbr = it.second.maxCpuNbr - it.second.minCpuNbr; @@ -706,14 +706,14 @@ ConfigFile::writeCluster(ostream &output) const auto cluster_it = cluster_name.empty() ? clusters.find(firstClusterName) : clusters.find(cluster_name); for (int i{1}; - const auto &slave_node : slave_nodes) + const auto &follower_node : follower_nodes) { - bool slave_node_in_member_nodes = false; + bool follower_node_in_member_nodes = false; for (const auto &itmn : cluster_it->second.member_nodes) - if (!slave_node.first.compare(itmn.first)) - slave_node_in_member_nodes = true; + if (!follower_node.first.compare(itmn.first)) + follower_node_in_member_nodes = true; - if (!slave_node_in_member_nodes) + if (!follower_node_in_member_nodes) continue; output << "options_.parallel"; @@ -721,34 +721,34 @@ ConfigFile::writeCluster(ostream &output) const output << "(" << i << ")"; i++; output << " = struct('Local', "; - if (slave_node.second.computerName.compare("localhost")) + if (follower_node.second.computerName.compare("localhost")) output << "0, "; else output << "1, "; - output << "'ComputerName', '" << slave_node.second.computerName << "', " - << "'Port', '" << slave_node.second.port << "', " - << "'CPUnbr', [" << slave_node.second.minCpuNbr << ":" << slave_node.second.maxCpuNbr << "], " - << "'UserName', '" << slave_node.second.userName << "', " - << "'Password', '" << slave_node.second.password << "', " - << "'RemoteDrive', '" << slave_node.second.remoteDrive << "', " - << "'RemoteDirectory', '" << slave_node.second.remoteDirectory << "', " + output << "'ComputerName', '" << follower_node.second.computerName << "', " + << "'Port', '" << follower_node.second.port << "', " + << "'CPUnbr', [" << follower_node.second.minCpuNbr << ":" << follower_node.second.maxCpuNbr << "], " + << "'UserName', '" << follower_node.second.userName << "', " + << "'Password', '" << follower_node.second.password << "', " + << "'RemoteDrive', '" << follower_node.second.remoteDrive << "', " + << "'RemoteDirectory', '" << follower_node.second.remoteDirectory << "', " // The following should be switched back to “ProgramPath” once we move to Dragonfly - << "'DynarePath', '" << slave_node.second.programPath << "', " - << "'ProgramConfig', '" << slave_node.second.programConfig << "', " - << "'MatlabOctavePath', '" << slave_node.second.matlabOctavePath << "', " - << "'OperatingSystem', '" << slave_node.second.operatingSystem << "', " - << "'NodeWeight', '" << (cluster_it->second.member_nodes.find(slave_node.first))->second << "', " - << "'NumberOfThreadsPerJob', " << slave_node.second.numberOfThreadsPerJob << ", "; + << "'DynarePath', '" << follower_node.second.programPath << "', " + << "'ProgramConfig', '" << follower_node.second.programConfig << "', " + << "'MatlabOctavePath', '" << follower_node.second.matlabOctavePath << "', " + << "'OperatingSystem', '" << follower_node.second.operatingSystem << "', " + << "'NodeWeight', '" << (cluster_it->second.member_nodes.find(follower_node.first))->second << "', " + << "'NumberOfThreadsPerJob', " << follower_node.second.numberOfThreadsPerJob << ", "; - if (slave_node.second.singleCompThread) + if (follower_node.second.singleCompThread) output << "'SingleCompThread', 'true');" << endl; else output << "'SingleCompThread', 'false');" << endl; } // Default values for the following two are both in DynareMain.cc and matlab/default_option_values.m - if (parallel_slave_open_mode) + if (parallel_follower_open_mode) output << "options_.parallel_info.leaveSlaveOpen = 1;" << endl; if (!parallel_use_psexec) output << "options_.parallel_use_psexec = false;" << endl; @@ -766,7 +766,7 @@ ConfigFile::writeCluster(ostream &output) const void ConfigFile::writeEndParallel(ostream &output) const { - if ((!parallel && !parallel_test) || !parallel_slave_open_mode) + if ((!parallel && !parallel_test) || !parallel_follower_open_mode) return; output << "if options_.parallel_info.leaveSlaveOpen == 1" << endl diff --git a/src/ConfigFile.hh b/src/ConfigFile.hh index f897e86b..dfb04857 100644 --- a/src/ConfigFile.hh +++ b/src/ConfigFile.hh @@ -1,5 +1,5 @@ /* - * Copyright © 2010-2021 Dynare Team + * Copyright © 2010-2022 Dynare Team * * This file is part of Dynare. * @@ -57,14 +57,14 @@ public: }; }; -class SlaveNode +class FollowerNode { friend class ConfigFile; public: - SlaveNode(string computerName_arg, string port_arg, int minCpuNbr_arg, int maxCpuNbr_arg, string userName_arg, - string password_arg, string remoteDrive_arg, string remoteDirectory_arg, - string programPath_arg, string programConfig_arg, string matlabOctavePath_arg, bool singleCompThread_arg, - int numberOfThreadsPerJob_arg, string operatingSystem_arg); + FollowerNode(string computerName_arg, string port_arg, int minCpuNbr_arg, int maxCpuNbr_arg, string userName_arg, + string password_arg, string remoteDrive_arg, string remoteDirectory_arg, + string programPath_arg, string programConfig_arg, string matlabOctavePath_arg, bool singleCompThread_arg, + int numberOfThreadsPerJob_arg, string operatingSystem_arg); protected: const string computerName, port; @@ -91,11 +91,11 @@ protected: class ConfigFile { public: - ConfigFile(bool parallel_arg, bool parallel_test_arg, bool parallel_slave_open_mode_arg, + ConfigFile(bool parallel_arg, bool parallel_test_arg, bool parallel_follower_open_mode_arg, bool parallel_use_psexec_arg, string cluster_name); private: - const bool parallel, parallel_test, parallel_slave_open_mode, parallel_use_psexec; + const bool parallel, parallel_test, parallel_follower_open_mode, parallel_use_psexec; const string cluster_name; string firstClusterName; //! Hooks @@ -105,12 +105,12 @@ private: //! Cluster Table map clusters; //! Node Map - map slave_nodes; + map follower_nodes; //! Add Hooks void addHooksConfFileElement(string global_init_file); //! Add Paths void addPathsConfFileElement(vector includepath); - //! Add a SlaveNode or a Cluster object + //! Add a FollowerNode or a Cluster object void addParallelConfFileElement(bool inNode, bool inCluster, const member_nodes_t &member_nodes, const string &name, const string &computerName, const string &port, int minCpuNbr, int maxCpuNbr, const string &userName, const string &password, const string &remoteDrive, @@ -130,7 +130,7 @@ public: void writeHooks(ostream &output) const; //! Create options_.parallel structure, write options void writeCluster(ostream &output) const; - //! Close slave nodes if needed + //! Close follower nodes if needed void writeEndParallel(ostream &output) const; }; diff --git a/src/DynareMain.cc b/src/DynareMain.cc index 25f2b91a..23fea237 100644 --- a/src/DynareMain.cc +++ b/src/DynareMain.cc @@ -137,7 +137,7 @@ main(int argc, char **argv) string parallel_config_file; bool parallel = false; string cluster_name; - bool parallel_slave_open_mode = false; // Must be the same default as in matlab/default_option_values.m + bool parallel_follower_open_mode = false; // Must be the same default as in matlab/default_option_values.m bool parallel_test = false; bool parallel_use_psexec = true; // Must be the same default as in matlab/default_option_values.m bool nostrict = false; @@ -229,7 +229,7 @@ main(int argc, char **argv) } else if (s == "parallel_follower_open_mode" || s == "parallel_slave_open_mode") // Kept for backward compatibility, see #86 - parallel_slave_open_mode = true; + parallel_follower_open_mode = true; else if (s == "parallel_test") parallel_test = true; else if (s.substr(0, 19) == "parallel_use_psexec") @@ -453,7 +453,7 @@ main(int argc, char **argv) WarningConsolidation warnings(no_warn); // Process config file - ConfigFile config_file(parallel, parallel_test, parallel_slave_open_mode, parallel_use_psexec, cluster_name); + ConfigFile config_file(parallel, parallel_test, parallel_follower_open_mode, parallel_use_psexec, cluster_name); config_file.getConfigFileInfo(parallel_config_file); config_file.checkPass(warnings); config_file.transformPass();