4 #if !(defined(NAMD_HIP) || defined(NAMD_CUDA)) 5 struct float2 {
float x,y;};
25 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
30 #ifdef NODEGROUP_FORCE_REGISTER 32 CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
33 PatchData *patchData = cpdata.ckLocalBranch();
43 NAMD_bug(
"PmePencilXYZ cannot be migrated");
52 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
62 NAMD_bug(
"PmePencilXYZ::initFFT, fftCompute not initialized");
65 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
72 void PmePencilXYZ::forwardFFT() {
74 NAMD_bug(
"PmePencilXYZ::forwardFFT, fftCompute not initialized");
75 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
80 void PmePencilXYZ::backwardFFT() {
82 NAMD_bug(
"PmePencilXYZ::backwardFFT, fftCompute not initialized");
83 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
88 void PmePencilXYZ::forwardDone() {
90 NAMD_bug(
"PmePencilXYZ::forwardDone, pmeKSpaceCompute not initialized");
91 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
98 NAMD_bug(
"PmePencilXYZ::backwardDone(), base class method called");
104 NAMD_bug(
"PmePencilXYZ::submitReductions, pmeKSpaceCompute not initialized");
111 double energy_F = energy;
120 scale1 = elecLambdaUp;
121 scale2 = elecLambda2Up;
129 scale1 = elecLambdaDown;
130 scale2 = elecLambda2Down;
138 scale1 = 1.0 - elecLambdaUp;
139 scale2 = 1.0 - elecLambda2Up;
147 scale1 = 1.0 - elecLambdaDown;
148 scale2 = 1.0 - elecLambda2Down;
158 scale1 = -1.0 * (elecLambdaUp + elecLambdaDown - 1.0);
159 scale2 = -1.0 * (elecLambda2Up + elecLambda2Down - 1.0);
166 for (
size_t i = 0; i < 9; ++i) {
169 #if NODEGROUP_FORCE_REGISTER 175 double energy_TI_1 = 0.0;
176 double energy_TI_2 = 0.0;
182 scale1 = elecLambdaUp;
183 energy_TI_1 = energy;
189 scale1 = elecLambdaDown;
190 energy_TI_2 = energy;
196 scale1 = 1.0 - elecLambdaUp;
197 energy_TI_1 = -1.0 * energy;
203 scale1 = 1.0 - elecLambdaDown;
204 energy_TI_2 = -1.0 * energy;
211 scale1 = -1.0 * (elecLambdaUp + elecLambdaDown - 1.0);
212 energy_TI_1 = -1.0 * energy;
213 energy_TI_2 = -1.0 * energy;
217 for (
size_t i = 0; i < 9; ++i) {
222 #if NODEGROUP_FORCE_REGISTER 230 #ifdef NODEGROUP_FORCE_REGISTER 234 nodeReduction->item(REDUCTION_VIRIAL_SLOW_XX) += virial[0];
235 nodeReduction->item(REDUCTION_VIRIAL_SLOW_XY) += virial[1];
236 nodeReduction->item(REDUCTION_VIRIAL_SLOW_XZ) += virial[2];
237 nodeReduction->item(REDUCTION_VIRIAL_SLOW_YX) += virial[3];
238 nodeReduction->item(REDUCTION_VIRIAL_SLOW_YY) += virial[4];
239 nodeReduction->item(REDUCTION_VIRIAL_SLOW_YZ) += virial[5];
240 nodeReduction->item(REDUCTION_VIRIAL_SLOW_ZX) += virial[6];
241 nodeReduction->item(REDUCTION_VIRIAL_SLOW_ZY) += virial[7];
242 nodeReduction->item(REDUCTION_VIRIAL_SLOW_ZZ) += virial[8];
245 reduction->
item(REDUCTION_VIRIAL_SLOW_XX) += virial[0];
246 reduction->
item(REDUCTION_VIRIAL_SLOW_XY) += virial[1];
247 reduction->
item(REDUCTION_VIRIAL_SLOW_XZ) += virial[2];
248 reduction->
item(REDUCTION_VIRIAL_SLOW_YX) += virial[3];
249 reduction->
item(REDUCTION_VIRIAL_SLOW_YY) += virial[4];
250 reduction->
item(REDUCTION_VIRIAL_SLOW_YZ) += virial[5];
251 reduction->
item(REDUCTION_VIRIAL_SLOW_ZX) += virial[6];
252 reduction->
item(REDUCTION_VIRIAL_SLOW_ZY) += virial[7];
253 reduction->
item(REDUCTION_VIRIAL_SLOW_ZZ) += virial[8];
257 bool ready_to_submit =
true;
262 if (ready_to_submit) {
305 setMigratable(
false);
306 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
313 NAMD_bug(
"PmePencilXY cannot be migrated");
325 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
333 NAMD_bug(
"PmePencilXY::initFFT, fftCompute not initialized");
336 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
343 void PmePencilXY::forwardFFT() {
345 NAMD_bug(
"PmePencilXY::forwardFFT, fftCompute not initialized");
346 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
351 void PmePencilXY::backwardFFT() {
353 NAMD_bug(
"PmePencilXY::backwardFFT, fftCompute not initialized");
354 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
362 int i0, i1, j0, j1, k0, k1;
364 i0, i1, j0, j1, k0, k1);
365 int size = (i1-i0+1)*(j1-j0+1)*(k1-k0+1);
370 void PmePencilXY::forwardDone() {
371 NAMD_bug(
"PmePencilXY::forwardDone(), base class method called");
374 void PmePencilXY::backwardDone() {
375 NAMD_bug(
"PmePencilXY::backwardDone(), base class method called");
378 void PmePencilXY::recvDataFromZ(
PmeBlockMsg *msg) {
379 NAMD_bug(
"PmePencilXY::recvDataFromZ(), base class method called");
382 void PmePencilXY::start(
const CkCallback &) {
383 NAMD_bug(
"PmePencilXY::start(), base class method called");
424 setMigratable(
false);
425 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
433 NAMD_bug(
"PmePencilX cannot be migrated");
441 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
449 NAMD_bug(
"PmePencilX::initFFT, fftCompute not initialized");
452 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
459 void PmePencilX::forwardFFT() {
461 NAMD_bug(
"PmePencilX::forwardFFT, fftCompute not initialized");
462 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
467 void PmePencilX::backwardFFT() {
469 NAMD_bug(
"PmePencilX::backwardFFT, fftCompute not initialized");
470 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
478 int i0, i1, j0, j1, k0, k1;
480 i0, i1, j0, j1, k0, k1);
481 int size = (i1-i0+1)*(j1-j0+1)*(k1-k0+1);
486 void PmePencilX::forwardDone() {
487 NAMD_bug(
"PmePencilX::forwardDone(), base class method called");
490 void PmePencilX::backwardDone() {
491 NAMD_bug(
"PmePencilX::backwardDone(), base class method called");
495 NAMD_bug(
"PmePencilX::recvDataFromY(), base class method called");
498 void PmePencilX::start(
const CkCallback &) {
499 NAMD_bug(
"PmePencilX::start(), base class method called");
508 setMigratable(
false);
509 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
517 NAMD_bug(
"PmePencilY cannot be migrated");
525 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
533 NAMD_bug(
"PmePencilY::initFFT, fftCompute not initialized");
536 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
543 void PmePencilY::forwardFFT() {
545 NAMD_bug(
"PmePencilY::forwardFFT, fftCompute not initialized");
546 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
551 void PmePencilY::backwardFFT() {
553 NAMD_bug(
"PmePencilY::backwardFFT, fftCompute not initialized");
554 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
562 int i0, i1, j0, j1, k0, k1;
564 i0, i1, j0, j1, k0, k1);
565 int size = (i1-i0+1)*(j1-j0+1)*(k1-k0+1);
570 void PmePencilY::forwardDone() {
571 NAMD_bug(
"PmePencilY::forwardDone(), base class method called");
574 void PmePencilY::backwardDone() {
575 NAMD_bug(
"PmePencilY::backwardDone(), base class method called");
579 NAMD_bug(
"PmePencilY::recvDataFromX(), base class method called");
583 NAMD_bug(
"PmePencilY::recvDataFromZ(), base class method called");
586 void PmePencilY::start(
const CkCallback &) {
587 NAMD_bug(
"PmePencilY::start(), base class method called");
596 setMigratable(
false);
597 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
603 #ifdef NODEGROUP_FORCE_REGISTER 605 CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
606 PatchData *patchData = cpdata.ckLocalBranch();
615 NAMD_bug(
"PmePencilZ cannot be migrated");
629 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
639 NAMD_bug(
"PmePencilZ::initFFT, fftCompute not initialized");
642 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
649 void PmePencilZ::forwardFFT() {
651 NAMD_bug(
"PmePencilZ::forwardFFT, fftCompute not initialized");
652 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
657 void PmePencilZ::backwardFFT() {
659 NAMD_bug(
"PmePencilZ::backwardFFT, fftCompute not initialized");
660 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
668 int i0, i1, j0, j1, k0, k1;
670 i0, i1, j0, j1, k0, k1);
671 int size = (i1-i0+1)*(j1-j0+1)*(k1-k0+1);
676 void PmePencilZ::forwardDone() {
678 NAMD_bug(
"PmePencilZ::forwardDone, pmeKSpaceCompute not initialized");
681 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
690 NAMD_bug(
"PmePencilZ::submitReductions, pmeKSpaceCompute not initialized");
697 double energy_F = energy;
707 scale1 = elecLambdaUp;
708 scale2 = elecLambda2Up;
716 scale1 = elecLambdaDown;
717 scale2 = elecLambda2Down;
725 scale1 = 1.0 - elecLambdaUp;
726 scale2 = 1.0 - elecLambda2Up;
734 scale1 = 1.0 - elecLambdaDown;
735 scale2 = 1.0 - elecLambda2Down;
745 scale1 = -1.0 * (elecLambdaUp + elecLambdaDown - 1.0);
746 scale2 = -1.0 * (elecLambda2Up + elecLambda2Down - 1.0);
752 for (
size_t i = 0; i < 9; ++i) {
755 #if NODEGROUP_FORCE_REGISTER 761 double energy_TI_1 = 0.0;
762 double energy_TI_2 = 0.0;
768 scale1 = elecLambdaUp;
769 energy_TI_1 = energy;
775 scale1 = elecLambdaDown;
776 energy_TI_2 = energy;
782 scale1 = 1.0 - elecLambdaUp;
783 energy_TI_1 = -1.0 * energy;
789 scale1 = 1.0 - elecLambdaDown;
790 energy_TI_2 = -1.0 * energy;
797 scale1 = -1.0 * (elecLambdaUp + elecLambdaDown - 1.0);
798 energy_TI_1 = -1.0 * energy;
799 energy_TI_2 = -1.0 * energy;
804 #if NODEGROUP_FORCE_REGISTER 812 #ifdef NODEGROUP_FORCE_REGISTER 816 nodeReduction->item(REDUCTION_VIRIAL_SLOW_XX) += virial[0];
817 nodeReduction->item(REDUCTION_VIRIAL_SLOW_XY) += virial[1];
818 nodeReduction->item(REDUCTION_VIRIAL_SLOW_XZ) += virial[2];
819 nodeReduction->item(REDUCTION_VIRIAL_SLOW_YX) += virial[3];
820 nodeReduction->item(REDUCTION_VIRIAL_SLOW_YY) += virial[4];
821 nodeReduction->item(REDUCTION_VIRIAL_SLOW_YZ) += virial[5];
822 nodeReduction->item(REDUCTION_VIRIAL_SLOW_ZX) += virial[6];
823 nodeReduction->item(REDUCTION_VIRIAL_SLOW_ZY) += virial[7];
824 nodeReduction->item(REDUCTION_VIRIAL_SLOW_ZZ) += virial[8];
827 reduction->
item(REDUCTION_VIRIAL_SLOW_XX) += virial[0];
828 reduction->
item(REDUCTION_VIRIAL_SLOW_XY) += virial[1];
829 reduction->
item(REDUCTION_VIRIAL_SLOW_XZ) += virial[2];
830 reduction->
item(REDUCTION_VIRIAL_SLOW_YX) += virial[3];
831 reduction->
item(REDUCTION_VIRIAL_SLOW_YY) += virial[4];
832 reduction->
item(REDUCTION_VIRIAL_SLOW_YZ) += virial[5];
833 reduction->
item(REDUCTION_VIRIAL_SLOW_ZX) += virial[6];
834 reduction->
item(REDUCTION_VIRIAL_SLOW_ZY) += virial[7];
835 reduction->
item(REDUCTION_VIRIAL_SLOW_ZZ) += virial[8];
839 bool ready_to_submit =
true;
844 if (ready_to_submit) {
853 void PmePencilZ::backwardDone() {
854 NAMD_bug(
"PmePencilZ::backwardDone(), base class method called");
858 NAMD_bug(
"PmePencilY::recvDataFromY(), base class method called");
861 void PmePencilZ::start(
const CkCallback &) {
862 NAMD_bug(
"PmePencilZ::start(), base class method called");
869 #include "PmeSolver.def.h"
std::array< PmeKSpaceCompute *, NUM_GRID_MAX > pmeKSpaceComputes
std::vector< int > blockSizes
virtual void backwardDone()
SimParameters * simParameters
std::array< FFTCompute *, NUM_GRID_MAX > fftComputes
void submitReductions(unsigned int iGrid)
std::array< PmeTranspose *, NUM_GRID_MAX > pmeTransposes
SubmitReduction * willSubmit(int setID, int size=-1)
PmePencilX_SDAG_CODE PmePencilX()
static ReductionMgr * Object(void)
NodeReduction * reduction
const unsigned int NUM_GRID_MAX
std::vector< int > blockSizes
std::vector< int > blockSizes
std::array< PmeTranspose *, NUM_GRID_MAX > pmeTransposes
std::array< FFTCompute *, NUM_GRID_MAX > fftComputes
std::array< int, NUM_GRID_MAX > dataSizes
std::array< float *, NUM_GRID_MAX > dataGrid
std::array< int, NUM_GRID_MAX > energyReady
std::array< PmeKSpaceCompute *, NUM_GRID_MAX > pmeKSpaceComputes
void NAMD_bug(const char *err_msg)
PmePencilXY_SDAG_CODE PmePencilXY()
std::vector< int > blockSizes
PmePencilXYZ_SDAG_CODE PmePencilXYZ()
std::array< PmeTranspose *, NUM_GRID_MAX > pmeTransposes
std::array< int, NUM_GRID_MAX > energyReady
PmePencilZ_SDAG_CODE PmePencilZ()
std::array< FFTCompute *, NUM_GRID_MAX > fftComputes
std::array< FFTCompute *, NUM_GRID_MAX > fftComputes
std::array< PmeTranspose *, NUM_GRID_MAX > pmeTransposes
static void getBlockDim(const PmeGrid &pmeGrid, const int permutation, const int iblock, const int jblock, const int kblock, int &i0, int &i1, int &j0, int &j1, int &k0, int &k1)
void submitReductions(unsigned int iGrid)
std::array< FFTCompute *, NUM_GRID_MAX > fftComputes
std::array< bool, NUM_GRID_MAX > enabledGrid
PmePencilY_SDAG_CODE PmePencilY()