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);
}
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

View File

@ -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<string, Cluster> clusters;
//! Node Map
map<string, SlaveNode> slave_nodes;
map<string, FollowerNode> follower_nodes;
//! Add Hooks
void addHooksConfFileElement(string global_init_file);
//! Add Paths
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,
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;
};

View File

@ -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();