From 182141b85005417e36534a29e775ff3a74c1c933 Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Mon, 24 Oct 2016 17:13:34 -0400 Subject: [PATCH] Make SMP parallelism for Colvars optional --- lib/colvars/colvarmodule.cpp | 6 ++++++ lib/colvars/colvarproxy.h | 7 +++++-- src/USER-COLVARS/colvarproxy_lammps.cpp | 5 ++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/colvars/colvarmodule.cpp b/lib/colvars/colvarmodule.cpp index bd9548a748..8e110275b2 100644 --- a/lib/colvars/colvarmodule.cpp +++ b/lib/colvars/colvarmodule.cpp @@ -156,6 +156,12 @@ int colvarmodule::parse_global_params(std::string const &conf) 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, "debugGradientsStepSize", debug_gradients_step_size, diff --git a/lib/colvars/colvarproxy.h b/lib/colvars/colvarproxy.h index 0a0f550767..59f6dc9bb2 100644 --- a/lib/colvars/colvarproxy.h +++ b/lib/colvars/colvarproxy.h @@ -25,7 +25,7 @@ public: colvarmodule *colvars; /// Default constructor - inline colvarproxy() : script(NULL) {} + inline colvarproxy() : script(NULL), b_smp_active(true) {} /// Default destructor virtual ~colvarproxy() {} @@ -116,12 +116,15 @@ public: // ***************** 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() { 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 virtual int smp_colvars_loop() { diff --git a/src/USER-COLVARS/colvarproxy_lammps.cpp b/src/USER-COLVARS/colvarproxy_lammps.cpp index dc97db1942..350009f6bf 100644 --- a/src/USER-COLVARS/colvarproxy_lammps.cpp +++ b/src/USER-COLVARS/colvarproxy_lammps.cpp @@ -333,7 +333,10 @@ int colvarproxy_lammps::backup_file(char const *filename) int colvarproxy_lammps::smp_enabled() { - return COLVARS_OK; + if (b_smp_active) { + return COLVARS_OK; + } + return COLVARS_ERROR; }