diff --git a/src/ConfigFile.cc b/src/ConfigFile.cc index e132634c396ea0c349ad2ea22460eea20258ebe9..aa737b61b664d4eb3f4a2f1ff41d8796f8667013 100644 --- a/src/ConfigFile.cc +++ b/src/ConfigFile.cc @@ -56,8 +56,8 @@ Path::Path(vector<string> 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 matlabOctavePath_arg, bool singleCompThread_arg, int numberOfThreadsPerJob_arg, - string operatingSystem_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}, @@ -67,6 +67,7 @@ SlaveNode::SlaveNode(string computerName_arg, string port_arg, int minCpuNbr_arg remoteDrive{move(remoteDrive_arg)}, remoteDirectory{move(remoteDirectory_arg)}, programPath{move(programPath_arg)}, + programConfig{move(programConfig_arg)}, matlabOctavePath{move(matlabOctavePath_arg)}, singleCompThread{singleCompThread_arg}, numberOfThreadsPerJob{numberOfThreadsPerJob_arg}, @@ -168,8 +169,8 @@ ConfigFile::getConfigFileInfo(const string &config_file) } string name, computerName, port, userName, password, remoteDrive, - remoteDirectory, programPath, matlabOctavePath, operatingSystem, - global_init_file; + remoteDirectory, programPath, programConfig, matlabOctavePath, + operatingSystem, global_init_file; vector<string> includepath; int minCpuNbr{0}, maxCpuNbr{0}; int numberOfThreadsPerJob{1}; @@ -202,8 +203,8 @@ ConfigFile::getConfigFileInfo(const string &config_file) addParallelConfFileElement(inNode, inCluster, member_nodes, name, computerName, port, minCpuNbr, maxCpuNbr, userName, password, remoteDrive, remoteDirectory, - programPath, matlabOctavePath, singleCompThread, numberOfThreadsPerJob, - operatingSystem); + programPath, programConfig, matlabOctavePath, singleCompThread, + numberOfThreadsPerJob, operatingSystem); //! Reset communication vars / option defaults if (!line.compare("[hooks]")) @@ -236,7 +237,7 @@ ConfigFile::getConfigFileInfo(const string &config_file) } name = userName = computerName = port = password = remoteDrive - = remoteDirectory = programPath = matlabOctavePath + = remoteDirectory = programPath = programConfig = matlabOctavePath = operatingSystem = global_init_file = ""; includepath.clear(); minCpuNbr = maxCpuNbr = 0; @@ -356,6 +357,8 @@ ConfigFile::getConfigFileInfo(const string &config_file) else if (!tokenizedLine.front().compare("DynarePath") || !tokenizedLine.front().compare("ProgramPath")) programPath = tokenizedLine.back(); + else if (!tokenizedLine.front().compare("ProgramConfig")) + programConfig = tokenizedLine.back(); else if (!tokenizedLine.front().compare("MatlabOctavePath")) matlabOctavePath = tokenizedLine.back(); else if (!tokenizedLine.front().compare("NumberOfThreadsPerJob")) @@ -446,8 +449,8 @@ ConfigFile::getConfigFileInfo(const string &config_file) addParallelConfFileElement(inNode, inCluster, member_nodes, name, computerName, port, minCpuNbr, maxCpuNbr, userName, password, remoteDrive, remoteDirectory, - programPath, matlabOctavePath, singleCompThread, numberOfThreadsPerJob, - operatingSystem); + programPath, programConfig, matlabOctavePath, singleCompThread, + numberOfThreadsPerJob, operatingSystem); configFile.close(); } @@ -478,9 +481,10 @@ ConfigFile::addPathsConfFileElement(vector<string> includepath) void ConfigFile::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, const string &remoteDirectory, - const string &programPath, const string &matlabOctavePath, bool singleCompThread, int numberOfThreadsPerJob, + const string &computerName, const string &port, int minCpuNbr, int maxCpuNbr, + const string &userName, const string &password, const string &remoteDrive, + const string &remoteDirectory, const string &programPath, const string &programConfig, + const string &matlabOctavePath, bool singleCompThread, int numberOfThreadsPerJob, const string &operatingSystem) { //! ADD NODE @@ -498,14 +502,15 @@ ConfigFile::addParallelConfFileElement(bool inNode, bool inCluster, const member } else slave_nodes.emplace(name, SlaveNode{computerName, port, minCpuNbr, maxCpuNbr, userName, - password, remoteDrive, remoteDirectory, programPath, + password, remoteDrive, remoteDirectory, programPath, programConfig, matlabOctavePath, singleCompThread, numberOfThreadsPerJob, operatingSystem}); //! ADD CLUSTER else if (inCluster) if (minCpuNbr > 0 || maxCpuNbr > 0 || !userName.empty() || !password.empty() || !remoteDrive.empty() || !remoteDirectory.empty() - || !programPath.empty() || !matlabOctavePath.empty() || !operatingSystem.empty()) + || !programPath.empty() || !programConfig.empty() + || !matlabOctavePath.empty() || !operatingSystem.empty()) { cerr << "Invalid option passed to [cluster]." << endl; exit(EXIT_FAILURE); @@ -730,6 +735,7 @@ ConfigFile::writeCluster(ostream &output) const << "'RemoteDrive', '" << slave_node.second.remoteDrive << "', " << "'RemoteDirectory', '" << slave_node.second.remoteDirectory << "', " << "'ProgramPath', '" << 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 << "', " diff --git a/src/ConfigFile.hh b/src/ConfigFile.hh index 407b9974874381b5ea045503a4e7c4ba51fb110f..d20aa7b764ac253336d9f195a885d56605b8b721 100644 --- a/src/ConfigFile.hh +++ b/src/ConfigFile.hh @@ -63,15 +63,15 @@ class SlaveNode 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 matlabOctavePath_arg, bool singleCompThread_arg, int numberOfThreadsPerJob_arg, - string operatingSystem_arg); + string programPath_arg, string programConfig_arg, string matlabOctavePath_arg, bool singleCompThread_arg, + int numberOfThreadsPerJob_arg, string operatingSystem_arg); protected: const string computerName, port; int minCpuNbr, maxCpuNbr; const string userName, password; const string remoteDrive, remoteDirectory; - const string programPath, matlabOctavePath; + const string programPath, programConfig, matlabOctavePath; const bool singleCompThread; const int numberOfThreadsPerJob; const string operatingSystem; @@ -111,9 +111,10 @@ private: void addPathsConfFileElement(vector<string> includepath); //! Add a SlaveNode 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, const string &remoteDirectory, - const string &programPath, const string &matlabOctavePath, bool singleCompThread, int numberOfThreadsPerJob, + const string &computerName, const string &port, int minCpuNbr, int maxCpuNbr, + const string &userName, const string &password, const string &remoteDrive, + const string &remoteDirectory, const string &programPath, const string &programConfig, + const string &matlabOctavePath, bool singleCompThread, int numberOfThreadsPerJob, const string &operatingSystem); public: //! Parse config file