Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions namd/src/colvarproxy_namd.C
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@
colvarproxy_namd::colvarproxy_namd()
{
engine_name_ = "NAMD";
#if CMK_SMP && USE_CKLOOP
charm_lock_state = CmiCreateLock();
#endif

version_int = get_version_from_string(COLVARPROXY_VERSION);
#if CMK_TRACE_ENABLED
Expand Down Expand Up @@ -151,6 +154,9 @@ colvarproxy_namd::colvarproxy_namd()

colvarproxy_namd::~colvarproxy_namd()
{
#if CMK_SMP && USE_CKLOOP
CmiDestroyLock(charm_lock_state);
#endif
delete reduction;
}

Expand Down Expand Up @@ -1529,9 +1535,11 @@ void calc_colvars_items_smp(int first, int last, void *result, int paramNum, voi
int colvarproxy_namd::smp_colvars_loop()
{
colvarmodule *cv = this->colvars;
const int numChunks = smp_num_threads() > cv->variables_active_smp()->size() ?
cv->variables_active_smp()->size() :
smp_num_threads();
CkLoop_Parallelize(calc_colvars_items_smp, 1, this,
cv->variables_active_smp()->size(),
0, cv->variables_active_smp()->size()-1);
numChunks, 0, cv->variables_active_smp()->size()-1);
return cvm::get_error();
}

Expand Down Expand Up @@ -1564,8 +1572,11 @@ void calc_cv_biases_smp(int first, int last, void *result, int paramNum, void *p
int colvarproxy_namd::smp_biases_loop()
{
colvarmodule *cv = this->colvars;
const int numChunks = smp_num_threads() > cv->variables_active_smp()->size() ?
cv->variables_active_smp()->size() :
smp_num_threads();
CkLoop_Parallelize(calc_cv_biases_smp, 1, this,
cv->biases_active()->size(), 0, cv->biases_active()->size()-1);
numChunks, 0, cv->biases_active()->size()-1);
return cvm::get_error();
}

Expand Down
8 changes: 5 additions & 3 deletions namd/src/colvarproxy_namd.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,18 +154,20 @@ class colvarproxy_namd : public colvarproxy, public GlobalMaster {

int smp_lock()
{
charm_lock_state = CmiCreateLock();
CmiLock(charm_lock_state);
return COLVARS_OK;
}

int smp_trylock()
{
return COLVARS_NOT_IMPLEMENTED;
const int ret = CmiTryLock(charm_lock_state);
if (ret == 0) return COLVARS_OK;
else return COLVARS_ERROR;
}

int smp_unlock()
{
CmiDestroyLock(charm_lock_state);
CmiUnlock(charm_lock_state);
return COLVARS_OK;
}

Expand Down