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() { ...@@ -56,7 +56,7 @@ extern "C" OPENMMCUDA_EXPORT void registerKernelFactories() {
platform.registerKernelFactory(CalcAmoebaGeneralizedKirkwoodForceKernel::Name(), factory); platform.registerKernelFactory(CalcAmoebaGeneralizedKirkwoodForceKernel::Name(), factory);
platform.registerKernelFactory(CalcAmoebaVdwForceKernel::Name(), factory); platform.registerKernelFactory(CalcAmoebaVdwForceKernel::Name(), factory);
platform.registerKernelFactory(CalcAmoebaWcaDispersionForceKernel::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 ...@@ -53,7 +53,7 @@ void CalcAmoebaForcesAndEnergyKernel::beginComputation(ContextImpl& context, boo
amoebaGpuContext amoebaGpu = data.getAmoebaGpu(); amoebaGpuContext amoebaGpu = data.getAmoebaGpu();
_gpuContext* gpu = data.getAmoebaGpu()->gpuContext; _gpuContext* gpu = data.getAmoebaGpu()->gpuContext;
/*
if (data.cudaPlatformData.nonbondedMethod != NO_CUTOFF && data.cudaPlatformData.computeForceCount%100 == 0){ if (data.cudaPlatformData.nonbondedMethod != NO_CUTOFF && data.cudaPlatformData.computeForceCount%100 == 0){
//fprintf( stderr, "In CalcAmoebaForcesAndEnergyKernel::beginComputation reordering atoms\n" ); fflush( stderr ); //fprintf( stderr, "In CalcAmoebaForcesAndEnergyKernel::beginComputation reordering atoms\n" ); fflush( stderr );
gpuReorderAtoms(gpu); gpuReorderAtoms(gpu);
...@@ -61,21 +61,32 @@ void CalcAmoebaForcesAndEnergyKernel::beginComputation(ContextImpl& context, boo ...@@ -61,21 +61,32 @@ void CalcAmoebaForcesAndEnergyKernel::beginComputation(ContextImpl& context, boo
data.cudaPlatformData.computeForceCount++; data.cudaPlatformData.computeForceCount++;
if(includeForces){
if( data.getHasAmoebaGeneralizedKirkwood() ){ if( data.getHasAmoebaGeneralizedKirkwood() ){
kClearBornSumAndForces(gpu); kClearBornSumAndForces(gpu);
} else if (includeForces){ } else {
kClearForces(gpu); kClearForces(gpu);
} }
}
if (includeEnergy) if (includeEnergy)
kClearEnergy(gpu); 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) { double CalcAmoebaForcesAndEnergyKernel::finishComputation(ContextImpl& context, bool includeForces, bool includeEnergy) {
amoebaGpuContext amoebaGpu = data.getAmoebaGpu(); amoebaGpuContext amoebaGpu = data.getAmoebaGpu();
_gpuContext* gpu = data.getAmoebaGpu()->gpuContext; _gpuContext* gpu = data.getAmoebaGpu()->gpuContext;
return cudaCalcForcesAndEnergyKernel->finishComputation( context, includeForces, includeEnergy);
/*
if( includeForces ){ if( includeForces ){
kReduceForces(gpu); kReduceForces(gpu);
} }
...@@ -85,6 +96,7 @@ double CalcAmoebaForcesAndEnergyKernel::finishComputation(ContextImpl& context, ...@@ -85,6 +96,7 @@ double CalcAmoebaForcesAndEnergyKernel::finishComputation(ContextImpl& context,
energy = kReduceEnergy(gpu); energy = kReduceEnergy(gpu);
} }
return energy; return energy;
*/
} }
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
* -------------------------------------------------------------------------- */ * -------------------------------------------------------------------------- */
#include "openmm/amoebaKernels.h" #include "openmm/amoebaKernels.h"
#include "CudaKernels.h"
#include "openmm/kernels.h" #include "openmm/kernels.h"
#include "openmm/System.h" #include "openmm/System.h"
#include "AmoebaCudaData.h" #include "AmoebaCudaData.h"
...@@ -42,6 +43,10 @@ namespace OpenMM { ...@@ -42,6 +43,10 @@ namespace OpenMM {
class CalcAmoebaForcesAndEnergyKernel : public CalcForcesAndEnergyKernel { class CalcAmoebaForcesAndEnergyKernel : public CalcForcesAndEnergyKernel {
public: public:
CalcAmoebaForcesAndEnergyKernel(std::string name, const Platform& platform, AmoebaCudaData& data) : CalcForcesAndEnergyKernel(name, platform), data(data) { 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. * Initialize the kernel.
...@@ -75,6 +80,7 @@ public: ...@@ -75,6 +80,7 @@ public:
private: private:
AmoebaCudaData& data; 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