Commit e2f90027 authored by Mark Friedrichs's avatar Mark Friedrichs
Browse files

Fix for overwriting of CudaCalcForcesAndEnergyKernel w/ AmoebaCalcForcesAndEnergyKernel

parent 3dafb4c3
......@@ -56,7 +56,7 @@ extern "C" OPENMMCUDA_EXPORT void registerKernelFactories() {
platform.registerKernelFactory(CalcAmoebaGeneralizedKirkwoodForceKernel::Name(), factory);
platform.registerKernelFactory(CalcAmoebaVdwForceKernel::Name(), factory);
platform.registerKernelFactory(CalcAmoebaWcaDispersionForceKernel::Name(), factory);
platform.registerKernelFactory(CalcAmoebaForcesAndEnergyKernel::Name(), factory);
// platform.registerKernelFactory(CalcAmoebaForcesAndEnergyKernel::Name(), factory);
}
}
}
......
......@@ -53,7 +53,7 @@ void CalcAmoebaForcesAndEnergyKernel::beginComputation(ContextImpl& context, boo
amoebaGpuContext amoebaGpu = data.getAmoebaGpu();
_gpuContext* gpu = data.getAmoebaGpu()->gpuContext;
/*
if (data.cudaPlatformData.nonbondedMethod != NO_CUTOFF && data.cudaPlatformData.computeForceCount%100 == 0){
//fprintf( stderr, "In CalcAmoebaForcesAndEnergyKernel::beginComputation reordering atoms\n" ); fflush( stderr );
gpuReorderAtoms(gpu);
......@@ -61,21 +61,32 @@ void CalcAmoebaForcesAndEnergyKernel::beginComputation(ContextImpl& context, boo
data.cudaPlatformData.computeForceCount++;
if(includeForces){
if( data.getHasAmoebaGeneralizedKirkwood() ){
kClearBornSumAndForces(gpu);
} else if (includeForces){
} else {
kClearForces(gpu);
}
}
if (includeEnergy)
kClearEnergy(gpu);
*/
int originalIncludeGBSA = gpu->bIncludeGBSA;
if(includeForces && data.getHasAmoebaGeneralizedKirkwood() ){
gpu->bIncludeGBSA = 1;
}
cudaCalcForcesAndEnergyKernel->beginComputation( context, includeForces, includeEnergy);
gpu->bIncludeGBSA = originalIncludeGBSA;
}
double CalcAmoebaForcesAndEnergyKernel::finishComputation(ContextImpl& context, bool includeForces, bool includeEnergy) {
amoebaGpuContext amoebaGpu = data.getAmoebaGpu();
_gpuContext* gpu = data.getAmoebaGpu()->gpuContext;
return cudaCalcForcesAndEnergyKernel->finishComputation( context, includeForces, includeEnergy);
/*
if( includeForces ){
kReduceForces(gpu);
}
......@@ -85,6 +96,7 @@ double CalcAmoebaForcesAndEnergyKernel::finishComputation(ContextImpl& context,
energy = kReduceEnergy(gpu);
}
return energy;
*/
}
......
......@@ -28,6 +28,7 @@
* -------------------------------------------------------------------------- */
#include "openmm/amoebaKernels.h"
#include "CudaKernels.h"
#include "openmm/kernels.h"
#include "openmm/System.h"
#include "AmoebaCudaData.h"
......@@ -42,6 +43,10 @@ namespace OpenMM {
class CalcAmoebaForcesAndEnergyKernel : public CalcForcesAndEnergyKernel {
public:
CalcAmoebaForcesAndEnergyKernel(std::string name, const Platform& platform, AmoebaCudaData& data) : CalcForcesAndEnergyKernel(name, platform), data(data) {
cudaCalcForcesAndEnergyKernel = new CudaCalcForcesAndEnergyKernel( name, platform, data.cudaPlatformData );
}
~CalcAmoebaForcesAndEnergyKernel() {
delete cudaCalcForcesAndEnergyKernel;
}
/***
* Initialize the kernel.
......@@ -75,6 +80,7 @@ public:
private:
AmoebaCudaData& data;
CudaCalcForcesAndEnergyKernel* cudaCalcForcesAndEnergyKernel;
};
/**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment