Commit 3c8adf0c authored by Peter Eastman's avatar Peter Eastman
Browse files

OpenCL and CUDA tests are run three times, once for each precision model

parent 6f4ec6b6
......@@ -7,6 +7,8 @@ ENABLE_TESTING()
INCLUDE(FindCUDA)
INCLUDE_DIRECTORIES(${CUDA_TOOLKIT_INCLUDE})
SET(OPENMM_BUILD_CUDA_DOUBLE_PRECISION_TESTS TRUE CACHE BOOL "Whether to build double precision versions of CUDA test cases")
SET( INCLUDE_SERIALIZATION FALSE )
#SET( INCLUDE_SERIALIZATION TRUE )
......@@ -53,6 +55,10 @@ FOREACH(TEST_PROG ${TEST_PROGS})
ENDIF( INCLUDE_SERIALIZATION )
ENDIF( ${TEST_ROOT} STREQUAL "TestCUDAGBSAOBCForce2" )
ADD_TEST(${TEST_ROOT} ${EXECUTABLE_OUTPUT_PATH}/${TEST_ROOT})
ADD_TEST(${TEST_ROOT}Single ${EXECUTABLE_OUTPUT_PATH}/${TEST_ROOT} single)
IF (OPENMM_BUILD_CUDA_DOUBLE_PRECISION_TESTS)
ADD_TEST(${TEST_ROOT}Mixed ${EXECUTABLE_OUTPUT_PATH}/${TEST_ROOT} mixed)
ADD_TEST(${TEST_ROOT}Double ${EXECUTABLE_OUTPUT_PATH}/${TEST_ROOT} double)
ENDIF(OPENMM_BUILD_CUDA_DOUBLE_PRECISION_TESTS)
ENDFOREACH(TEST_PROG ${TEST_PROGS})
......@@ -48,12 +48,13 @@
using namespace OpenMM;
using namespace std;
CudaPlatform platform;
void testTemperature() {
const int numParticles = 8;
const double temp = 100.0;
const double collisionFreq = 10.0;
const int numSteps = 10000;
CudaPlatform platform;
System system;
VerletIntegrator integrator(0.005);
NonbondedForce* forceField = new NonbondedForce();
......@@ -92,7 +93,6 @@ void testConstraints() {
const double temp = 100.0;
const double collisionFreq = 10.0;
const int numSteps = 10000;
CudaPlatform platform;
System system;
VerletIntegrator integrator(0.005);
NonbondedForce* forceField = new NonbondedForce();
......@@ -144,7 +144,6 @@ void testRandomSeed() {
const int numParticles = 8;
const double temp = 100.0;
const double collisionFreq = 10.0;
CudaPlatform platform;
System system;
VerletIntegrator integrator(0.01);
NonbondedForce* forceField = new NonbondedForce();
......@@ -201,8 +200,10 @@ void testRandomSeed() {
}
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testTemperature();
testConstraints();
testRandomSeed();
......
......@@ -53,8 +53,9 @@ using namespace std;
const double TOL = 1e-5;
CudaPlatform platform;
void testSingleBond() {
CudaPlatform platform;
System system;
system.addParticle(2.0);
system.addParticle(2.0);
......@@ -91,7 +92,6 @@ void testTemperature() {
const int numParticles = 8;
const int numBonds = numParticles-1;
const double temp = 10.0;
CudaPlatform platform;
System system;
BrownianIntegrator integrator(temp, 2.0, 0.01);
HarmonicBondForce* forceField = new HarmonicBondForce();
......@@ -128,7 +128,6 @@ void testConstraints() {
const int numParticles = 8;
const int numConstraints = 5;
const double temp = 20.0;
CudaPlatform platform;
System system;
BrownianIntegrator integrator(temp, 2.0, 0.001);
integrator.setConstraintTolerance(1e-5);
......@@ -177,7 +176,6 @@ void testRandomSeed() {
const int numParticles = 8;
const double temp = 100.0;
const double collisionFreq = 10.0;
CudaPlatform platform;
System system;
BrownianIntegrator integrator(temp, 2.0, 0.001);
NonbondedForce* forceField = new NonbondedForce();
......@@ -232,8 +230,10 @@ void testRandomSeed() {
}
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testSingleBond();
testTemperature();
testConstraints();
......
......@@ -50,13 +50,14 @@ using namespace std;
const double TOL = 1e-5;
CudaPlatform platform;
void testCMAPTorsions() {
const int mapSize = 36;
// Create two systems: one with a pair of periodic torsions, and one with a CMAP torsion
// that approximates the same force.
CudaPlatform platform;
System system1;
for (int i = 0; i < 5; i++)
system1.addParticle(1.0);
......@@ -104,8 +105,10 @@ void testCMAPTorsions() {
}
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testCMAPTorsions();
}
catch(const exception& e) {
......
......@@ -50,6 +50,8 @@
using namespace OpenMM;
using namespace std;
CudaPlatform platform;
Vec3 calcCM(const vector<Vec3>& values, System& system) {
Vec3 cm;
for (int j = 0; j < system.getNumParticles(); ++j) {
......@@ -62,7 +64,6 @@ Vec3 calcCM(const vector<Vec3>& values, System& system) {
void testMotionRemoval(Integrator& integrator) {
const int numParticles = 8;
CudaPlatform platform;
System system;
HarmonicBondForce* bonds = new HarmonicBondForce();
bonds->addBond(2, 3, 2.0, 0.5);
......@@ -103,8 +104,10 @@ void testMotionRemoval(Integrator& integrator) {
}
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
LangevinIntegrator langevin(0.0, 1e-5, 0.01);
testMotionRemoval(langevin);
VerletIntegrator verlet(0.01);
......
......@@ -50,6 +50,8 @@ using namespace std;
const double TOL = 1e-5;
CudaPlatform platform;
void compareStates(State& s1, State& s2) {
ASSERT_EQUAL_TOL(s1.getTime(), s2.getTime(), TOL);
int numParticles = s1.getPositions().size();
......@@ -71,7 +73,6 @@ void testCheckpoint() {
const int numParticles = 100;
const double boxSize = 5.0;
const double temperature = 200.0;
CudaPlatform platform;
System system;
system.addForce(new AndersenThermostat(0.0, 100.0));
NonbondedForce* nonbonded = new NonbondedForce();
......@@ -158,8 +159,10 @@ void testCheckpoint() {
compareStates(s6, s8);
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testCheckpoint();
}
catch(const exception& e) {
......
......@@ -49,9 +49,9 @@ using namespace std;
const double TOL = 1e-5;
void testAngles() {
CudaPlatform platform;
CudaPlatform platform;
void testAngles() {
// Create a system using a CustomAngleForce.
System customSystem;
......@@ -132,7 +132,6 @@ void testAngles() {
}
void testParallelComputation() {
CudaPlatform platform;
System system;
const int numParticles = 200;
for (int i = 0; i < numParticles; i++)
......@@ -161,8 +160,10 @@ void testParallelComputation() {
ASSERT_EQUAL_VEC(state1.getForces()[i], state2.getForces()[i], 1e-5);
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testAngles();
testParallelComputation();
}
......
......@@ -48,8 +48,9 @@ using namespace std;
const double TOL = 1e-5;
CudaPlatform platform;
void testBonds() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -102,7 +103,6 @@ void testBonds() {
}
void testManyParameters() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -136,7 +136,6 @@ void testManyParameters() {
}
void testParallelComputation() {
CudaPlatform platform;
System system;
const int numParticles = 200;
for (int i = 0; i < numParticles; i++)
......@@ -165,8 +164,10 @@ void testParallelComputation() {
ASSERT_EQUAL_VEC(state1.getForces()[i], state2.getForces()[i], 1e-5);
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testBonds();
testManyParameters();
testParallelComputation();
......
......@@ -51,9 +51,9 @@ using namespace std;
const double TOL = 1e-5;
void testBond() {
CudaPlatform platform;
CudaPlatform platform;
void testBond() {
// Create a system using a CustomCompoundBondForce.
System customSystem;
......@@ -142,7 +142,6 @@ void testBond() {
}
void testPositionDependence() {
CudaPlatform platform;
System customSystem;
customSystem.addParticle(1.0);
customSystem.addParticle(1.0);
......@@ -168,7 +167,6 @@ void testPositionDependence() {
}
void testParallelComputation() {
CudaPlatform platform;
System system;
const int numParticles = 200;
for (int i = 0; i < numParticles; i++)
......@@ -201,8 +199,10 @@ void testParallelComputation() {
ASSERT_EQUAL_VEC(state1.getForces()[i], state2.getForces()[i], 1e-5);
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testBond();
testPositionDependence();
testParallelComputation();
......
......@@ -49,8 +49,9 @@ using namespace std;
const double TOL = 1e-5;
CudaPlatform platform;
void testForce() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -100,7 +101,6 @@ void testForce() {
}
void testManyParameters() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
VerletIntegrator integrator(0.01);
......@@ -131,7 +131,6 @@ void testManyParameters() {
}
void testParallelComputation() {
CudaPlatform platform;
System system;
const int numParticles = 200;
for (int i = 0; i < numParticles; i++)
......@@ -162,8 +161,10 @@ void testParallelComputation() {
ASSERT_EQUAL_VEC(state1.getForces()[i], state2.getForces()[i], 1e-5);
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testForce();
testManyParameters();
testParallelComputation();
......
......@@ -50,11 +50,12 @@ using namespace std;
const double TOL = 1e-5;
CudaPlatform platform;
void testOBC(GBSAOBCForce::NonbondedMethod obcMethod, CustomGBForce::NonbondedMethod customMethod) {
const int numMolecules = 70;
const int numParticles = numMolecules*2;
const double boxSize = 10.0;
CudaPlatform platform;
// Create two systems: one with a GBSAOBCForce, and one using a CustomGBForce to implement the same interaction.
......@@ -168,7 +169,6 @@ void testMembrane() {
const int numMolecules = 70;
const int numParticles = numMolecules*2;
const double boxSize = 10.0;
CudaPlatform platform;
// Create a system with an implicit membrane.
......@@ -254,7 +254,6 @@ void testMembrane() {
}
void testTabulatedFunction() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -295,7 +294,6 @@ void testTabulatedFunction() {
}
void testMultipleChainRules() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -323,7 +321,6 @@ void testMultipleChainRules() {
}
void testPositionDependence() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -383,7 +380,6 @@ void testPositionDependence() {
}
void testExclusions() {
CudaPlatform platform;
for (int i = 0; i < 4; i++) {
System system;
system.addParticle(1.0);
......@@ -449,8 +445,10 @@ void testExclusions() {
}
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testOBC(GBSAOBCForce::NoCutoff, CustomGBForce::NoCutoff);
testOBC(GBSAOBCForce::CutoffNonPeriodic, CustomGBForce::CutoffNonPeriodic);
testOBC(GBSAOBCForce::CutoffPeriodic, CustomGBForce::CutoffPeriodic);
......
......@@ -51,9 +51,9 @@ using namespace std;
const double TOL = 1e-5;
void testHbond() {
CudaPlatform platform;
CudaPlatform platform;
void testHbond() {
// Create a system using a CustomHbondForce.
System customSystem;
......@@ -149,7 +149,6 @@ void testHbond() {
}
void testExclusions() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -176,7 +175,6 @@ void testExclusions() {
}
void testCutoff() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -204,7 +202,6 @@ void testCutoff() {
}
void testCustomFunctions() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -233,8 +230,10 @@ void testCustomFunctions() {
ASSERT_EQUAL_TOL(0.1*2+0.1*2, state.getPotentialEnergy(), TOL);
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testHbond();
testExclusions();
testCutoff();
......
......@@ -49,13 +49,14 @@
using namespace OpenMM;
using namespace std;
CudaPlatform platform;
const double TOL = 1e-5;
/**
* Test a simple leapfrog integrator on a single bond.
*/
void testSingleBond() {
CudaPlatform platform;
System system;
system.addParticle(2.0);
system.addParticle(2.0);
......@@ -100,8 +101,6 @@ void testSingleBond() {
*/
void testConstraints() {
const int numParticles = 8;
const double temp = 500.0;
CudaPlatform platform;
System system;
CustomIntegrator integrator(0.002);
integrator.addPerDofVariable("oldx", 0);
......@@ -160,7 +159,6 @@ void testConstraints() {
*/
void testVelocityConstraints() {
const int numParticles = 10;
CudaPlatform platform;
System system;
CustomIntegrator integrator(0.002);
integrator.addPerDofVariable("x1", 0);
......@@ -244,7 +242,6 @@ void testWithThermostat() {
const double temp = 100.0;
const double collisionFreq = 10.0;
const int numSteps = 10000;
CudaPlatform platform;
System system;
CustomIntegrator integrator(0.005);
integrator.addUpdateContextState();
......@@ -285,7 +282,6 @@ void testWithThermostat() {
* Test a Monte Carlo integrator that uses global variables and depends on energy.
*/
void testMonteCarlo() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -340,7 +336,6 @@ void testMonteCarlo() {
void testSum() {
const int numParticles = 200;
const double boxSize = 10;
CudaPlatform platform;
System system;
system.setDefaultPeriodicBoxVectors(Vec3(boxSize, 0, 0), Vec3(0, boxSize, 0), Vec3(0, 0, boxSize));
NonbondedForce* nb = new NonbondedForce();
......@@ -385,7 +380,6 @@ void testSum() {
* Test an integrator that both uses and modifies a context parameter.
*/
void testParameter() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
AndersenThermostat* thermostat = new AndersenThermostat(0.1, 0.1);
......@@ -411,7 +405,6 @@ void testRandomDistributions() {
const int numParticles = 100;
const int numBins = 20;
const int numSteps = 100;
CudaPlatform platform;
System system;
for (int i = 0; i < numParticles; i++)
system.addParticle(1.0);
......@@ -479,7 +472,6 @@ void testRandomDistributions() {
void testPerDofVariables() {
const int numParticles = 200;
const double boxSize = 10;
CudaPlatform platform;
System system;
system.setDefaultPeriodicBoxVectors(Vec3(boxSize, 0, 0), Vec3(0, boxSize, 0), Vec3(0, 0, boxSize));
NonbondedForce* nb = new NonbondedForce();
......@@ -535,7 +527,6 @@ void testPerDofVariables() {
* Test evaluating force groups separately.
*/
void testForceGroups() {
CudaPlatform platform;
System system;
system.addParticle(2.0);
system.addParticle(2.0);
......@@ -611,7 +602,6 @@ void testForceGroups() {
*/
void testRespa() {
const int numParticles = 8;
CudaPlatform platform;
System system;
system.setDefaultPeriodicBoxVectors(Vec3(4, 0, 0), Vec3(0, 4, 0), Vec3(0, 0, 4));
CustomIntegrator integrator(0.002);
......@@ -662,8 +652,10 @@ void testRespa() {
}
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testSingleBond();
testConstraints();
testVelocityConstraints();
......
......@@ -48,10 +48,11 @@
using namespace OpenMM;
using namespace std;
CudaPlatform platform;
const double TOL = 1e-5;
void testSimpleExpression() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -74,7 +75,6 @@ void testSimpleExpression() {
}
void testParameters() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -135,7 +135,6 @@ void testParameters() {
}
void testManyParameters() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -174,7 +173,6 @@ void testManyParameters() {
}
void testExclusions() {
CudaPlatform platform;
System system;
VerletIntegrator integrator(0.01);
CustomNonbondedForce* nonbonded = new CustomNonbondedForce("a*r; a=a1+a2");
......@@ -205,7 +203,6 @@ void testExclusions() {
}
void testCutoff() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -233,7 +230,6 @@ void testCutoff() {
}
void testPeriodic() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -262,7 +258,6 @@ void testPeriodic() {
}
void testTabulatedFunction() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -305,7 +300,6 @@ void testCoulombLennardJones() {
const int numMolecules = 300;
const int numParticles = numMolecules*2;
const double boxSize = 20.0;
CudaPlatform platform;
// Create two systems: one with a NonbondedForce, and one using a CustomNonbondedForce to implement the same interaction.
......@@ -377,7 +371,6 @@ void testCoulombLennardJones() {
}
void testParallelComputation() {
CudaPlatform platform;
System system;
const int numParticles = 200;
for (int i = 0; i < numParticles; i++)
......@@ -414,8 +407,10 @@ void testParallelComputation() {
ASSERT_EQUAL_VEC(state1.getForces()[i], state2.getForces()[i], 1e-5);
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testSimpleExpression();
testParameters();
testManyParameters();
......
......@@ -50,11 +50,11 @@
using namespace OpenMM;
using namespace std;
CudaPlatform platform;
const double TOL = 1e-5;
void testTorsions() {
CudaPlatform platform;
// Create a system using a CustomTorsionForce.
System customSystem;
......@@ -138,7 +138,6 @@ void testTorsions() {
}
void testRange() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -172,7 +171,6 @@ void testRange() {
}
void testParallelComputation() {
CudaPlatform platform;
System system;
const int numParticles = 200;
for (int i = 0; i < numParticles; i++)
......@@ -201,8 +199,10 @@ void testParallelComputation() {
ASSERT_EQUAL_VEC(state1.getForces()[i], state2.getForces()[i], 1e-5);
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testTorsions();
testRange();
testParallelComputation();
......
......@@ -50,6 +50,8 @@
using namespace OpenMM;
using namespace std;
CudaPlatform platform;
const double TOL = 1e-5;
void testEwaldPME(bool includeExceptions) {
......@@ -61,7 +63,6 @@ void testEwaldPME(bool includeExceptions) {
const double boxSize = 3.00646;
double tol = 1e-5;
CudaPlatform cu;
ReferencePlatform reference;
System system;
NonbondedForce* nonbonded = new NonbondedForce();
......@@ -96,7 +97,7 @@ void testEwaldPME(bool includeExceptions) {
VerletIntegrator integrator1(0.01);
VerletIntegrator integrator2(0.01);
Context cuContext(system, integrator1, cu);
Context cuContext(system, integrator1, platform);
Context referenceContext(system, integrator2, reference);
cuContext.setPositions(positions);
referenceContext.setPositions(positions);
......@@ -126,7 +127,7 @@ void testEwaldPME(bool includeExceptions) {
positions[i] = Vec3(p[0]-f[0]*step, p[1]-f[1]*step, p[2]-f[2]*step);
}
VerletIntegrator integrator3(0.01);
Context cuContext2(system, integrator3, cu);
Context cuContext2(system, integrator3, platform);
cuContext2.setPositions(positions);
tol = 1e-2;
......@@ -165,7 +166,7 @@ void testEwaldPME(bool includeExceptions) {
positions[i] = Vec3(p[0]-f[0]*step, p[1]-f[1]*step, p[2]-f[2]*step);
}
VerletIntegrator integrator4(0.01);
Context cuContext3(system, integrator4, cu);
Context cuContext3(system, integrator4, platform);
cuContext3.setPositions(positions);
tol = 1e-2;
......@@ -174,7 +175,6 @@ void testEwaldPME(bool includeExceptions) {
}
void testEwald2Ions() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -220,7 +220,6 @@ void testErrorTolerance(NonbondedForce::NonbondedMethod method) {
positions[i] = Vec3(boxWidth*genrand_real2(sfmt), boxWidth*genrand_real2(sfmt), boxWidth*genrand_real2(sfmt));
}
force->setNonbondedMethod(method);
CudaPlatform platform;
// For various values of the cutoff and error tolerance, see if the actual error is reasonable.
......@@ -253,8 +252,10 @@ void testErrorTolerance(NonbondedForce::NonbondedMethod method) {
}
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testEwaldPME(false);
testEwaldPME(true);
// testEwald2Ions();
......
......@@ -49,10 +49,11 @@
using namespace OpenMM;
using namespace std;
CudaPlatform platform;
const double TOL = 1e-5;
void testSingleParticle() {
CudaPlatform platform;
System system;
system.addParticle(2.0);
LangevinIntegrator integrator(0, 0.1, 0.01);
......@@ -87,7 +88,6 @@ void testSingleParticle() {
}
void testCutoffAndPeriodic() {
CudaPlatform cl;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -113,7 +113,7 @@ void testCutoffAndPeriodic() {
nonbonded->setNonbondedMethod(NonbondedForce::CutoffNonPeriodic);
gbsa->setNonbondedMethod(GBSAOBCForce::CutoffNonPeriodic);
Context context(system, integrator, cl);
Context context(system, integrator, platform);
context.setPositions(positions);
State state1 = context.getState(State::Forces);
nonbonded->setNonbondedMethod(NonbondedForce::CutoffPeriodic);
......@@ -144,7 +144,6 @@ void testCutoffAndPeriodic() {
}
void testForce(int numParticles, NonbondedForce::NonbondedMethod method, GBSAOBCForce::NonbondedMethod method2) {
CudaPlatform cl;
ReferencePlatform reference;
System system;
GBSAOBCForce* gbsa = new GBSAOBCForce();
......@@ -168,7 +167,7 @@ void testForce(int numParticles, NonbondedForce::NonbondedMethod method, GBSAOBC
system.addForce(nonbonded);
LangevinIntegrator integrator1(0, 0.1, 0.01);
LangevinIntegrator integrator2(0, 0.1, 0.01);
Context context(system, integrator1, cl);
Context context(system, integrator1, platform);
Context refContext(system, integrator2, reference);
// Set random (but uniformly distributed) positions for all the particles.
......@@ -224,8 +223,10 @@ void testForce(int numParticles, NonbondedForce::NonbondedMethod method, GBSAOBC
}
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testSingleParticle();
testCutoffAndPeriodic();
for (int i = 5; i < 11; i++) {
......
......@@ -47,10 +47,11 @@
using namespace OpenMM;
using namespace std;
CudaPlatform platform;
const double TOL = 1e-5;
void testAngles() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -99,7 +100,6 @@ void testAngles() {
}
void testParallelComputation() {
CudaPlatform platform;
System system;
const int numParticles = 200;
for (int i = 0; i < numParticles; i++)
......@@ -127,8 +127,10 @@ void testParallelComputation() {
ASSERT_EQUAL_VEC(state1.getForces()[i], state2.getForces()[i], 1e-5);
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testAngles();
testParallelComputation();
}
......
......@@ -46,10 +46,11 @@
using namespace OpenMM;
using namespace std;
CudaPlatform platform;
const double TOL = 1e-5;
void testBonds() {
CudaPlatform platform;
System system;
system.addParticle(1.0);
system.addParticle(1.0);
......@@ -90,7 +91,6 @@ void testBonds() {
}
void testParallelComputation() {
CudaPlatform platform;
System system;
const int numParticles = 200;
for (int i = 0; i < numParticles; i++)
......@@ -118,8 +118,10 @@ void testParallelComputation() {
ASSERT_EQUAL_VEC(state1.getForces()[i], state2.getForces()[i], 1e-5);
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testBonds();
testParallelComputation();
}
......
......@@ -48,10 +48,11 @@
using namespace OpenMM;
using namespace std;
CudaPlatform platform;
const double TOL = 1e-5;
void testSingleBond() {
CudaPlatform platform;
System system;
system.addParticle(2.0);
system.addParticle(2.0);
......@@ -97,7 +98,6 @@ void testSingleBond() {
void testTemperature() {
const int numParticles = 8;
const double temp = 100.0;
CudaPlatform platform;
System system;
LangevinIntegrator integrator(temp, 2.0, 0.01);
NonbondedForce* forceField = new NonbondedForce();
......@@ -133,7 +133,6 @@ void testConstraints() {
const int numParticles = 8;
const int numConstraints = 5;
const double temp = 100.0;
CudaPlatform platform;
System system;
LangevinIntegrator integrator(temp, 2.0, 0.01);
integrator.setConstraintTolerance(1e-5);
......@@ -181,7 +180,6 @@ void testConstraints() {
void testRandomSeed() {
const int numParticles = 8;
const double temp = 100.0;
CudaPlatform platform;
System system;
LangevinIntegrator integrator(temp, 2.0, 0.01);
NonbondedForce* forceField = new NonbondedForce();
......@@ -236,8 +234,10 @@ void testRandomSeed() {
}
}
int main() {
int main(int argc, char* argv[]) {
try {
if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", string(argv[1]));
testSingleBond();
testTemperature();
testConstraints();
......
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