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

#include <ReductionMgr.h>

Inheritance diagram for SubmitReductionShared:
SubmitReduction

Public Member Functions

void submit (void) override
 
 ~SubmitReductionShared (void)
 
 SubmitReductionShared (void)
 
- Public Member Functions inherited from SubmitReduction
BigRealitem (int i)
 
void max (int i, BigReal v)
 
void add (int nitems, const BigReal *arr)
 
virtual ~SubmitReduction (void)
 

Additional Inherited Members

- Protected Attributes inherited from SubmitReduction
BigRealdata
 

Detailed Description

Definition at line 468 of file ReductionMgr.h.

Constructor & Destructor Documentation

◆ ~SubmitReductionShared()

SubmitReductionShared::~SubmitReductionShared ( void  )
inline

Definition at line 490 of file ReductionMgr.h.

490 {}

◆ SubmitReductionShared()

SubmitReductionShared::SubmitReductionShared ( void  )

Definition at line 693 of file ReductionMgr.C.

References SubmitReduction::data, NAMD_bug(), REDUCTION_MAX_RESERVED, PatchData::reductionBackend, and NodeReduction::zero().

693  {
694 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
695  CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
696  PatchData *patchData = cpdata.ckLocalBranch();
697  nodeReduction = patchData->reductionBackend;
698  nodeReduction->zero();
699  for (int i = 0; i < REDUCTION_MAX_RESERVED; i++) {
700  my_data[i] = 0;
701  }
702  data = my_data;
703 #else
704  NAMD_bug("SubmitReductionShared is only supported with CUDA/HIP");
705 #endif
706 }
NodeReduction * reductionBackend
Definition: PatchData.h:134
void NAMD_bug(const char *err_msg)
Definition: common.C:195
BigReal * data
Definition: ReductionMgr.h:328

Member Function Documentation

◆ submit()

void SubmitReductionShared::submit ( void  )
inlineoverridevirtual

Implements SubmitReduction.

Definition at line 480 of file ReductionMgr.h.

References SubmitReduction::data, ReductionValue::increment_no_lock(), NodeReduction::item(), REDUCTION_MAX_RESERVED, NodeReduction::set, and ReductionValue::valueLock.

480  {
481  CmiLock(nodeReduction->set[0].valueLock);
482  for (int i = 0; i < REDUCTION_MAX_RESERVED; i++) {
483  if (data[i] != 0.0) {
484  nodeReduction->item(i).increment_no_lock(data[i]);
485  data[i] = 0.0;
486  }
487  }
488  CmiUnlock(nodeReduction->set[0].valueLock);
489  }
CmiNodeLock valueLock
Definition: ReductionMgr.h:437
ReductionValue & item(int index)
Definition: ReductionMgr.C:658
ReductionValue set[REDUCTION_MAX_RESERVED]
Definition: ReductionMgr.h:455
void increment_no_lock(double rvalue)
Definition: ReductionMgr.C:634
BigReal * data
Definition: ReductionMgr.h:328

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