Make SMP parallelism for Colvars optional

This commit is contained in:
Giacomo Fiorin
2016-10-24 17:13:34 -04:00
parent e02505c8cc
commit 182141b850
3 changed files with 15 additions and 3 deletions

View File

@ -156,6 +156,12 @@ int colvarmodule::parse_global_params(std::string const &conf)
read_index_file(index_file_name.c_str()); read_index_file(index_file_name.c_str());
} }
if (parse->get_keyval(conf, "smp", proxy->b_smp_active, proxy->b_smp_active)) {
if (proxy->b_smp_active == false) {
cvm::log("SMP parallelism has been disabled.\n");
}
}
parse->get_keyval(conf, "analysis", b_analysis, b_analysis); parse->get_keyval(conf, "analysis", b_analysis, b_analysis);
parse->get_keyval(conf, "debugGradientsStepSize", debug_gradients_step_size, parse->get_keyval(conf, "debugGradientsStepSize", debug_gradients_step_size,

View File

@ -25,7 +25,7 @@ public:
colvarmodule *colvars; colvarmodule *colvars;
/// Default constructor /// Default constructor
inline colvarproxy() : script(NULL) {} inline colvarproxy() : script(NULL), b_smp_active(true) {}
/// Default destructor /// Default destructor
virtual ~colvarproxy() {} virtual ~colvarproxy() {}
@ -116,12 +116,15 @@ public:
// ***************** SHARED-MEMORY PARALLELIZATION ***************** // ***************** SHARED-MEMORY PARALLELIZATION *****************
/// Whether or not threaded parallelization is available /// Whether threaded parallelization is available (TODO: make this a cvm::deps feature)
virtual int smp_enabled() virtual int smp_enabled()
{ {
return COLVARS_NOT_IMPLEMENTED; return COLVARS_NOT_IMPLEMENTED;
} }
/// Whether threaded parallelization should be used (TODO: make this a cvm::deps feature)
bool b_smp_active;
/// Distribute calculation of colvars (and their components) across threads /// Distribute calculation of colvars (and their components) across threads
virtual int smp_colvars_loop() virtual int smp_colvars_loop()
{ {

View File

@ -333,7 +333,10 @@ int colvarproxy_lammps::backup_file(char const *filename)
int colvarproxy_lammps::smp_enabled() int colvarproxy_lammps::smp_enabled()
{ {
return COLVARS_OK; if (b_smp_active) {
return COLVARS_OK;
}
return COLVARS_ERROR;
} }