Fix direct calls to SDAG entry methods 08/4908/3
authorJim Phillips <jim@ks.uiuc.edu>
Fri, 18 Jan 2019 16:52:13 +0000 (10:52 -0600)
committerDavid Hardy <dhardy@ks.uiuc.edu>
Tue, 29 Jan 2019 18:35:39 +0000 (12:35 -0600)
commit96191d327f8d09d2e2491b5656554f0916e7697e
treeca66710d683479b53f7f7e65a600b7789df90d98
parent36f013c604ea355edb5f6235de084e0514a7b4ab
Fix direct calls to SDAG entry methods

Directly calling SDAG entry methods that contain when clauses has
always had undefined behaviour, but Charm++ 6.9.0 now raises errors.
Now calls SDAG methods via proxy with callbacks to enforce order.

The error occurs when running the CUDA SMP build with multiple
processes on four or fewer physical nodes, as otherwise the
hard-coded heuristic falls back to the older PME since the newer
PME CUDA code does not scale well. Although this misuse of SDAG could
be caught as a compile-time error, Charm++ for some reason implements
as a run-time error.

Change-Id: Icf734a79daa3b3f6c5c0b70667fa782bcc40447e
src/CudaPmeSolver.C
src/CudaPmeSolver.ci
src/CudaPmeSolver.h
src/PmeSolver.C
src/PmeSolver.ci
src/PmeSolver.h