NAMD
Public Member Functions | List of all members
RequireReductionShared Class Reference

#include <ReductionMgr.h>

Inheritance diagram for RequireReductionShared:
RequireReduction

Public Member Functions

void require (const bool clearData) override
 
 ~RequireReductionShared (void)
 
 RequireReductionShared (void)
 
- Public Member Functions inherited from RequireReduction
BigReal item (int i) const
 
virtual ~RequireReduction ()
 

Additional Inherited Members

- Protected Attributes inherited from RequireReduction
BigRealdata
 

Detailed Description

Definition at line 497 of file ReductionMgr.h.

Constructor & Destructor Documentation

◆ ~RequireReductionShared()

RequireReductionShared::~RequireReductionShared ( void  )
inline

Definition at line 521 of file ReductionMgr.h.

521 {}

◆ RequireReductionShared()

RequireReductionShared::RequireReductionShared ( void  )

Definition at line 708 of file ReductionMgr.C.

References RequireReduction::data, NAMD_bug(), REDUCTION_MAX_RESERVED, and PatchData::reductionBackend.

708  {
709 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
710  CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
711  PatchData *patchData = cpdata.ckLocalBranch();
712  nodeReduction = patchData->reductionBackend;
713  for (int i = 0; i < REDUCTION_MAX_RESERVED; i++) {
714  my_data[i] = 0;
715  }
716  data = my_data;
717 #else
718  NAMD_bug("SubmitReductionShared is only supported with CUDA/HIP");
719 #endif
720 }
NodeReduction * reductionBackend
Definition: PatchData.h:134
void NAMD_bug(const char *err_msg)
Definition: common.C:195

Member Function Documentation

◆ require()

void RequireReductionShared::require ( const bool  clearData)
inlineoverridevirtual

Implements RequireReduction.

Definition at line 510 of file ReductionMgr.h.

References NodeReduction::item(), REDUCTION_MAX_RESERVED, NodeReduction::set, ReductionValue::valueLock, and NodeReduction::zero().

510  {
511  CmiLock(nodeReduction->set[0].valueLock);
512  for (int i = 0; i < REDUCTION_MAX_RESERVED; i++) {
513  my_data[i] = (BigReal) nodeReduction->item(i);
514  }
515  if (clearData) {
516  nodeReduction->zero();
517  }
518  CmiUnlock(nodeReduction->set[0].valueLock);
519  };
CmiNodeLock valueLock
Definition: ReductionMgr.h:437
ReductionValue & item(int index)
Definition: ReductionMgr.C:658
ReductionValue set[REDUCTION_MAX_RESERVED]
Definition: ReductionMgr.h:455
double BigReal
Definition: common.h:123

The documentation for this class was generated from the following files: