Use “follower” instead of “slave” in internal class and variable names

master
Sébastien Villemot 2022-06-15 15:37:19 +02:00
parent 248dac4bc7
commit 2a68f5a3af
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
3 changed files with 75 additions and 75 deletions

View File

@ -54,10 +54,10 @@ Path::Path(vector<string> includepath_arg)
paths["include"] = move(includepath_arg); paths["include"] = move(includepath_arg);
} }
SlaveNode::SlaveNode(string computerName_arg, string port_arg, int minCpuNbr_arg, int maxCpuNbr_arg, string userName_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 password_arg, string remoteDrive_arg, string remoteDirectory_arg,
string programPath_arg, string programConfig_arg, string matlabOctavePath_arg, bool singleCompThread_arg, string programPath_arg, string programConfig_arg, string matlabOctavePath_arg, bool singleCompThread_arg,
int numberOfThreadsPerJob_arg, string operatingSystem_arg) : int numberOfThreadsPerJob_arg, string operatingSystem_arg) :
computerName{move(computerName_arg)}, computerName{move(computerName_arg)},
port{move(port_arg)}, port{move(port_arg)},
minCpuNbr{minCpuNbr_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, 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) : string cluster_name_arg) :
parallel{parallel_arg}, parallel_test{parallel_test_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}, parallel_use_psexec{parallel_use_psexec_arg},
cluster_name{move(cluster_name_arg)} cluster_name{move(cluster_name_arg)}
{ {
@ -498,16 +498,16 @@ ConfigFile::addParallelConfFileElement(bool inNode, bool inCluster, const member
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
else 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; cerr << "ERROR: Every node must be assigned a unique name." << endl;
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
else else
slave_nodes.emplace(name, SlaveNode{computerName, port, minCpuNbr, maxCpuNbr, userName, follower_nodes.emplace(name, FollowerNode{computerName, port, minCpuNbr, maxCpuNbr, userName,
password, remoteDrive, remoteDirectory, programPath, programConfig, password, remoteDrive, remoteDirectory, programPath, programConfig,
matlabOctavePath, singleCompThread, numberOfThreadsPerJob, matlabOctavePath, singleCompThread, numberOfThreadsPerJob,
operatingSystem}); operatingSystem});
//! ADD CLUSTER //! ADD CLUSTER
else if (inCluster) else if (inCluster)
if (minCpuNbr > 0 || maxCpuNbr > 0 || !userName.empty() if (minCpuNbr > 0 || maxCpuNbr > 0 || !userName.empty()
@ -548,83 +548,83 @@ ConfigFile::checkPass(WarningConsolidation &warnings) const
if (!parallel && !parallel_test) if (!parallel && !parallel_test)
return; return;
//! Check Slave Nodes //! Check Follower Nodes
if (slave_nodes.empty()) if (follower_nodes.empty())
{ {
cerr << "ERROR: At least one node must be defined in the config file." << endl; cerr << "ERROR: At least one node must be defined in the config file." << endl;
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
for (const auto &slave_node : slave_nodes) for (const auto &follower_node : follower_nodes)
{ {
#if !defined(_WIN32) && !defined(__CYGWIN32__) #if !defined(_WIN32) && !defined(__CYGWIN32__)
//For Linux/Mac, check that cpuNbr starts at 0 //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 " 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 " << "used in parallel processing. This will be adjusted for you such that the "
<< "same number of CPUs are used." << endl; << "same number of CPUs are used." << endl;
#endif #endif
if (!slave_node.second.port.empty()) if (!follower_node.second.port.empty())
try try
{ {
stoi(slave_node.second.port); stoi(follower_node.second.port);
} }
catch (const invalid_argument &) 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); 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); 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); exit(EXIT_FAILURE);
} }
} }
else 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); 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); 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); exit(EXIT_FAILURE);
} }
} }
#if defined(_WIN32) || defined(__CYGWIN32__) #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); 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); exit(EXIT_FAILURE);
} }
} }
#endif #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); exit(EXIT_FAILURE);
} }
} }
@ -645,7 +645,7 @@ ConfigFile::checkPass(WarningConsolidation &warnings) const
for (const auto &cluster : clusters) for (const auto &cluster : clusters)
for (const auto &itmn : cluster.second.member_nodes) 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; cerr << "Error: node " << itmn.first << " specified in cluster " << cluster.first << " was not found" << endl;
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
@ -660,7 +660,7 @@ ConfigFile::transformPass()
#if !defined(_WIN32) && !defined(__CYGWIN32__) #if !defined(_WIN32) && !defined(__CYGWIN32__)
//For Linux/Mac, check that cpuNbr starts at 0 //For Linux/Mac, check that cpuNbr starts at 0
for (auto &it : slave_nodes) for (auto &it : follower_nodes)
if (it.second.minCpuNbr != 0) if (it.second.minCpuNbr != 0)
{ {
it.second.maxCpuNbr = it.second.maxCpuNbr - it.second.minCpuNbr; 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); auto cluster_it = cluster_name.empty() ? clusters.find(firstClusterName) : clusters.find(cluster_name);
for (int i{1}; 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) for (const auto &itmn : cluster_it->second.member_nodes)
if (!slave_node.first.compare(itmn.first)) if (!follower_node.first.compare(itmn.first))
slave_node_in_member_nodes = true; follower_node_in_member_nodes = true;
if (!slave_node_in_member_nodes) if (!follower_node_in_member_nodes)
continue; continue;
output << "options_.parallel"; output << "options_.parallel";
@ -721,34 +721,34 @@ ConfigFile::writeCluster(ostream &output) const
output << "(" << i << ")"; output << "(" << i << ")";
i++; i++;
output << " = struct('Local', "; output << " = struct('Local', ";
if (slave_node.second.computerName.compare("localhost")) if (follower_node.second.computerName.compare("localhost"))
output << "0, "; output << "0, ";
else else
output << "1, "; output << "1, ";
output << "'ComputerName', '" << slave_node.second.computerName << "', " output << "'ComputerName', '" << follower_node.second.computerName << "', "
<< "'Port', '" << slave_node.second.port << "', " << "'Port', '" << follower_node.second.port << "', "
<< "'CPUnbr', [" << slave_node.second.minCpuNbr << ":" << slave_node.second.maxCpuNbr << "], " << "'CPUnbr', [" << follower_node.second.minCpuNbr << ":" << follower_node.second.maxCpuNbr << "], "
<< "'UserName', '" << slave_node.second.userName << "', " << "'UserName', '" << follower_node.second.userName << "', "
<< "'Password', '" << slave_node.second.password << "', " << "'Password', '" << follower_node.second.password << "', "
<< "'RemoteDrive', '" << slave_node.second.remoteDrive << "', " << "'RemoteDrive', '" << follower_node.second.remoteDrive << "', "
<< "'RemoteDirectory', '" << slave_node.second.remoteDirectory << "', " << "'RemoteDirectory', '" << follower_node.second.remoteDirectory << "', "
// The following should be switched back to “ProgramPath” once we move to Dragonfly // The following should be switched back to “ProgramPath” once we move to Dragonfly
<< "'DynarePath', '" << slave_node.second.programPath << "', " << "'DynarePath', '" << follower_node.second.programPath << "', "
<< "'ProgramConfig', '" << slave_node.second.programConfig << "', " << "'ProgramConfig', '" << follower_node.second.programConfig << "', "
<< "'MatlabOctavePath', '" << slave_node.second.matlabOctavePath << "', " << "'MatlabOctavePath', '" << follower_node.second.matlabOctavePath << "', "
<< "'OperatingSystem', '" << slave_node.second.operatingSystem << "', " << "'OperatingSystem', '" << follower_node.second.operatingSystem << "', "
<< "'NodeWeight', '" << (cluster_it->second.member_nodes.find(slave_node.first))->second << "', " << "'NodeWeight', '" << (cluster_it->second.member_nodes.find(follower_node.first))->second << "', "
<< "'NumberOfThreadsPerJob', " << slave_node.second.numberOfThreadsPerJob << ", "; << "'NumberOfThreadsPerJob', " << follower_node.second.numberOfThreadsPerJob << ", ";
if (slave_node.second.singleCompThread) if (follower_node.second.singleCompThread)
output << "'SingleCompThread', 'true');" << endl; output << "'SingleCompThread', 'true');" << endl;
else else
output << "'SingleCompThread', 'false');" << endl; output << "'SingleCompThread', 'false');" << endl;
} }
// Default values for the following two are both in DynareMain.cc and matlab/default_option_values.m // 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; output << "options_.parallel_info.leaveSlaveOpen = 1;" << endl;
if (!parallel_use_psexec) if (!parallel_use_psexec)
output << "options_.parallel_use_psexec = false;" << endl; output << "options_.parallel_use_psexec = false;" << endl;
@ -766,7 +766,7 @@ ConfigFile::writeCluster(ostream &output) const
void void
ConfigFile::writeEndParallel(ostream &output) const ConfigFile::writeEndParallel(ostream &output) const
{ {
if ((!parallel && !parallel_test) || !parallel_slave_open_mode) if ((!parallel && !parallel_test) || !parallel_follower_open_mode)
return; return;
output << "if options_.parallel_info.leaveSlaveOpen == 1" << endl output << "if options_.parallel_info.leaveSlaveOpen == 1" << endl

View File

@ -1,5 +1,5 @@
/* /*
* Copyright © 2010-2021 Dynare Team * Copyright © 2010-2022 Dynare Team
* *
* This file is part of Dynare. * This file is part of Dynare.
* *
@ -57,14 +57,14 @@ public:
}; };
}; };
class SlaveNode class FollowerNode
{ {
friend class ConfigFile; friend class ConfigFile;
public: public:
SlaveNode(string computerName_arg, string port_arg, int minCpuNbr_arg, int maxCpuNbr_arg, string userName_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 password_arg, string remoteDrive_arg, string remoteDirectory_arg,
string programPath_arg, string programConfig_arg, string matlabOctavePath_arg, bool singleCompThread_arg, string programPath_arg, string programConfig_arg, string matlabOctavePath_arg, bool singleCompThread_arg,
int numberOfThreadsPerJob_arg, string operatingSystem_arg); int numberOfThreadsPerJob_arg, string operatingSystem_arg);
protected: protected:
const string computerName, port; const string computerName, port;
@ -91,11 +91,11 @@ protected:
class ConfigFile class ConfigFile
{ {
public: 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); bool parallel_use_psexec_arg, string cluster_name);
private: 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; const string cluster_name;
string firstClusterName; string firstClusterName;
//! Hooks //! Hooks
@ -105,12 +105,12 @@ private:
//! Cluster Table //! Cluster Table
map<string, Cluster> clusters; map<string, Cluster> clusters;
//! Node Map //! Node Map
map<string, SlaveNode> slave_nodes; map<string, FollowerNode> follower_nodes;
//! Add Hooks //! Add Hooks
void addHooksConfFileElement(string global_init_file); void addHooksConfFileElement(string global_init_file);
//! Add Paths //! Add Paths
void addPathsConfFileElement(vector<string> includepath); void addPathsConfFileElement(vector<string> 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, 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 &computerName, const string &port, int minCpuNbr, int maxCpuNbr,
const string &userName, const string &password, const string &remoteDrive, const string &userName, const string &password, const string &remoteDrive,
@ -130,7 +130,7 @@ public:
void writeHooks(ostream &output) const; void writeHooks(ostream &output) const;
//! Create options_.parallel structure, write options //! Create options_.parallel structure, write options
void writeCluster(ostream &output) const; void writeCluster(ostream &output) const;
//! Close slave nodes if needed //! Close follower nodes if needed
void writeEndParallel(ostream &output) const; void writeEndParallel(ostream &output) const;
}; };

View File

@ -137,7 +137,7 @@ main(int argc, char **argv)
string parallel_config_file; string parallel_config_file;
bool parallel = false; bool parallel = false;
string cluster_name; 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_test = false;
bool parallel_use_psexec = true; // Must be the same default as in matlab/default_option_values.m bool parallel_use_psexec = true; // Must be the same default as in matlab/default_option_values.m
bool nostrict = false; bool nostrict = false;
@ -229,7 +229,7 @@ main(int argc, char **argv)
} }
else if (s == "parallel_follower_open_mode" else if (s == "parallel_follower_open_mode"
|| s == "parallel_slave_open_mode") // Kept for backward compatibility, see #86 || 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") else if (s == "parallel_test")
parallel_test = true; parallel_test = true;
else if (s.substr(0, 19) == "parallel_use_psexec") else if (s.substr(0, 19) == "parallel_use_psexec")
@ -453,7 +453,7 @@ main(int argc, char **argv)
WarningConsolidation warnings(no_warn); WarningConsolidation warnings(no_warn);
// Process config file // 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.getConfigFileInfo(parallel_config_file);
config_file.checkPass(warnings); config_file.checkPass(warnings);
config_file.transformPass(); config_file.transformPass();