Forcefield params do not match between CPU and GPU #535
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The CPU and GPU can have different values for alpha^2. The reason is that the CPU apparently calculates a more accurate value of alpha^2 by using an intermediate value of alpha that is accurate to more than 64 bits, which it then squares.
To resolve this problem, the code has been changed to add new variables, gpu_alphaSq, gpu_rCutSq, and gpu_rCutCoulombSq, that are passed to the GPU, so the GPU uses the same values as the CPU for these variables. This also reduces the amount of computation, as we remove a multiplication each time we need the value of alpha^2.
The code is also updated to use the new alpha^2 value instead of recalculating it.
Unfortunately, the code also includes some reformatting of some files using clang-format, so the patch is larger than needed to resolve this issue.