Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
tsoc
hg-misc-tools
Commits
91022255
Commit
91022255
authored
Apr 17, 2026
by
one
Browse files
[OpenMM] Update the patch file for v3.3
parent
284ea303
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
105 additions
and
3 deletions
+105
-3
projects/openmm/gfx936-dtk26.04.patch
projects/openmm/gfx936-dtk26.04.patch
+105
-3
No files found.
projects/openmm/gfx936-dtk26.04.patch
View file @
91022255
...
...
@@ -19,19 +19,121 @@ index f3eb95a88..f9fea45c2 100644
parser.add_argument('--device', default=None, dest='device', help='device index for CUDA, HIP, or OpenCL')
parser.add_argument('--opencl-platform', default=None, dest='opencl_platform', help='platform index for OpenCL')
parser.add_argument('--precision', default='single', dest='precision', help=f'precision modes for CUDA, HIP, or OpenCL: {PRECISIONS} [default: single]')
diff --git a/platforms/common/include/openmm/common/CommonCalcNonbondedForce.h b/platforms/common/include/openmm/common/CommonCalcNonbondedForce.h
index 91416216e..e5fd1f6ec 100644
--- a/platforms/common/include/openmm/common/CommonCalcNonbondedForce.h
+++ b/platforms/common/include/openmm/common/CommonCalcNonbondedForce.h
@@ -45,7 +45,7 @@
namespace OpenMM {
class CommonCalcNonbondedForceKernel : public CalcNonbondedForceKernel {
public:
CommonCalcNonbondedForceKernel(std::string name, const Platform& platform, ComputeContext& cc, const System& system) : CalcNonbondedForceKernel(name, platform),
- hasInitializedKernel(false), cc(cc), pmeio(NULL), stepsToSort(0) {
+ hasInitializedKernel(false), cc(cc), pmeio(NULL), stepsToSort(0), dispersionStepsToSort(0) {
}
~CommonCalcNonbondedForceKernel();
/**
@@ -140,6 +140,7 @@
private:
ComputeArray pmeDispersionBsplineModuliY;
ComputeArray pmeDispersionBsplineModuliZ;
ComputeArray pmeAtomGridIndex;
+ ComputeArray pmeDispersionAtomGridIndex;
ComputeArray pmeEnergyBuffer;
ComputeArray chargeBuffer;
ComputeSort sort;
@@ -167,6 +168,7 @@
private:
int gridSizeX, gridSizeY, gridSizeZ;
int dispersionGridSizeX, dispersionGridSizeY, dispersionGridSizeZ;
int stepsToSort;
+ int dispersionStepsToSort;
bool usePmeQueue, deviceIsCpu, useFixedPointChargeSpreading, useCpuPme;
bool hasCoulomb, hasLJ, doLJPME, usePosqCharges, recomputeParams, hasOffsets;
NonbondedMethod nonbondedMethod;
diff --git a/platforms/common/src/CommonCalcNonbondedForce.cpp b/platforms/common/src/CommonCalcNonbondedForce.cpp
index bab0679b7..
e75dabdc0
100644
index bab0679b7..
27277ebfc
100644
--- a/platforms/common/src/CommonCalcNonbondedForce.cpp
+++ b/platforms/common/src/CommonCalcNonbondedForce.cpp
@@ -962,7 +962,7 @@
double CommonCalcNonbondedForceKernel::execute(ContextImpl& context, bool includ
@@ -457,6 +457,8 @@
void CommonCalcNonbondedForceKernel::commonInitialize(const System& system, cons
pmeDispersionBsplineModuliZ.initialize(cc, dispersionGridSizeZ, elementSize, "pmeDispersionBsplineModuliZ");
}
pmeAtomGridIndex.initialize<mm_int2>(cc, numParticles, "pmeAtomGridIndex");
+ if (doLJPME)
+ pmeDispersionAtomGridIndex.initialize<mm_int2>(cc, numParticles, "pmeDispersionAtomGridIndex");
int energyElementSize = (cc.getUseDoublePrecision() || cc.getUseMixedPrecision() ? sizeof(double) : sizeof(float));
pmeEnergyBuffer.initialize(cc, cc.getNumThreadBlocks()*ComputeContext::ThreadBlockSize, energyElementSize, "pmeEnergyBuffer");
cc.clearBuffer(pmeEnergyBuffer);
@@ -836,7 +838,7 @@
double CommonCalcNonbondedForceKernel::execute(ContextImpl& context, bool includ
pmeDispersionEvalEnergyKernel = program->createKernel("gridEvaluateEnergy");
pmeDispersionInterpolateForceKernel = program->createKernel("gridInterpolateForce");
pmeDispersionGridIndexKernel->addArg(cc.getPosq());
- pmeDispersionGridIndexKernel->addArg(pmeAtomGridIndex);
+ pmeDispersionGridIndexKernel->addArg(pmeDispersionAtomGridIndex);
for (int i = 0; i < 8; i++)
pmeDispersionGridIndexKernel->addArg();
pmeDispersionSpreadChargeKernel->addArg(cc.getPosq());
@@ -846,7 +848,7 @@
double CommonCalcNonbondedForceKernel::execute(ContextImpl& context, bool includ
pmeDispersionSpreadChargeKernel->addArg(pmeGrid1);
for (int i = 0; i < 8; i++)
pmeDispersionSpreadChargeKernel->addArg();
- pmeDispersionSpreadChargeKernel->addArg(pmeAtomGridIndex);
+ pmeDispersionSpreadChargeKernel->addArg(pmeDispersionAtomGridIndex);
pmeDispersionSpreadChargeKernel->addArg(sigmaEpsilon);
pmeDispersionConvolutionKernel->addArg(pmeGrid2);
pmeDispersionConvolutionKernel->addArg(pmeDispersionBsplineModuliX);
@@ -869,7 +871,7 @@
double CommonCalcNonbondedForceKernel::execute(ContextImpl& context, bool includ
pmeDispersionInterpolateForceKernel->addArg(pmeGrid1);
for (int i = 0; i < 8; i++)
pmeDispersionInterpolateForceKernel->addArg();
- pmeDispersionInterpolateForceKernel->addArg(pmeAtomGridIndex);
+ pmeDispersionInterpolateForceKernel->addArg(pmeDispersionAtomGridIndex);
pmeDispersionInterpolateForceKernel->addArg(sigmaEpsilon);
if (useFixedPointChargeSpreading) {
pmeDispersionFinishSpreadChargeKernel = program->createKernel("finishSpreadCharge");
@@ -962,7 +964,7 @@
double CommonCalcNonbondedForceKernel::execute(ContextImpl& context, bool includ
// Execute the reciprocal space kernels.
if (hasCoulomb) {
- if (stepsToSort <= 0 || doLJPME || cc.getNumAtoms() > 15000) {
+ if (stepsToSort <= 0
|| doLJPME
) {
+ if (stepsToSort <= 0) {
setPeriodicBoxArgs(cc, pmeGridIndexKernel, 2);
if (cc.getUseDoublePrecision()) {
pmeGridIndexKernel->setArg(7, recipBoxVectors[0]);
@@ -1033,19 +1035,24 @@
double CommonCalcNonbondedForceKernel::execute(ContextImpl& context, bool includ
}
if (doLJPME && hasLJ) {
- setPeriodicBoxArgs(cc, pmeDispersionGridIndexKernel, 2);
- if (cc.getUseDoublePrecision()) {
- pmeDispersionGridIndexKernel->setArg(7, recipBoxVectors[0]);
- pmeDispersionGridIndexKernel->setArg(8, recipBoxVectors[1]);
- pmeDispersionGridIndexKernel->setArg(9, recipBoxVectors[2]);
- }
- else {
- pmeDispersionGridIndexKernel->setArg(7, recipBoxVectorsFloat[0]);
- pmeDispersionGridIndexKernel->setArg(8, recipBoxVectorsFloat[1]);
- pmeDispersionGridIndexKernel->setArg(9, recipBoxVectorsFloat[2]);
+ if (dispersionStepsToSort <= 0) {
+ setPeriodicBoxArgs(cc, pmeDispersionGridIndexKernel, 2);
+ if (cc.getUseDoublePrecision()) {
+ pmeDispersionGridIndexKernel->setArg(7, recipBoxVectors[0]);
+ pmeDispersionGridIndexKernel->setArg(8, recipBoxVectors[1]);
+ pmeDispersionGridIndexKernel->setArg(9, recipBoxVectors[2]);
+ }
+ else {
+ pmeDispersionGridIndexKernel->setArg(7, recipBoxVectorsFloat[0]);
+ pmeDispersionGridIndexKernel->setArg(8, recipBoxVectorsFloat[1]);
+ pmeDispersionGridIndexKernel->setArg(9, recipBoxVectorsFloat[2]);
+ }
+ pmeDispersionGridIndexKernel->execute(cc.getNumAtoms());
+ sort->sort(pmeDispersionAtomGridIndex);
+ dispersionStepsToSort = 3;
}
- pmeDispersionGridIndexKernel->execute(cc.getNumAtoms());
- sort->sort(pmeAtomGridIndex);
+ else
+ dispersionStepsToSort--;
if (useFixedPointChargeSpreading)
cc.clearBuffer(pmeGrid2);
else
diff --git a/platforms/hip/CMakeLists.txt b/platforms/hip/CMakeLists.txt
index 7c8dfca8f..2ca6f35d7 100644
--- a/platforms/hip/CMakeLists.txt
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment