Commit 38c2015e authored by Mark Friedrichs's avatar Mark Friedrichs
Browse files

Update to nonbonded and implicit solvent tests

parent 7b5344db
...@@ -242,6 +242,10 @@ void kReduceGBVIBornSum(gpuContext gpu) ...@@ -242,6 +242,10 @@ void kReduceGBVIBornSum(gpuContext gpu)
LAUNCHERROR("kReduceGBVIBornSum"); LAUNCHERROR("kReduceGBVIBornSum");
} }
static int isNanOrInfinity( float number ){
return (number != number || number == std::numeric_limits<float>::infinity() || number == -std::numeric_limits<float>::infinity()) ? 1 : 0;
}
void kPrintGBVI( gpuContext gpu, std::string callId, int call, FILE* log) void kPrintGBVI( gpuContext gpu, std::string callId, int call, FILE* log)
{ {
...@@ -252,13 +256,33 @@ void kPrintGBVI( gpuContext gpu, std::string callId, int call, FILE* log) ...@@ -252,13 +256,33 @@ void kPrintGBVI( gpuContext gpu, std::string callId, int call, FILE* log)
gpu->psPosq4->Download(); gpu->psPosq4->Download();
gpu->psSigEps2->Download(); gpu->psSigEps2->Download();
(void) fprintf( log, "kPrintGBVI Cuda comp bR bF prm sigeps2\n" ); int printOnlyOnNan = 1;
(void) fprintf( stderr, "kCalculateGBVIBornSum: bOutputBufferPerWarp=%u blks=%u th/blk=%u wu=%u %u shrd=%u\n", gpu->bOutputBufferPerWarp, int foundNan = 0;
gpu->sim.nonbond_blocks, gpu->sim.nonbond_threads_per_block, gpu->sim.workUnits, gpu->psWorkUnit->_pSysStream[0][0], if( printOnlyOnNan ){
sizeof(Atom)*gpu->sim.nonbond_threads_per_block ); for( int ii = 0; ii < gpu->sim.paddedNumberOfAtoms && foundNan == 0; ii++ ){
(void) fprintf( stderr, "bR bF swd r scR ...\n" ); foundNan += isNanOrInfinity( gpu->psBornRadii->_pSysData[ii] );
for( int ii = 0; ii < gpu->sim.paddedNumberOfAtoms; ii++ ){ foundNan += isNanOrInfinity( gpu->psBornForce->_pSysData[ii] );
(void) fprintf( log, "%6d %15.7e %15.7e %15.7e %15.7e %15.7e %15.7e %15.7e %15.7e %15.7e\n", ii, foundNan += isNanOrInfinity( gpu->psGBVISwitchDerivative->_pSysData[ii] );
}
if( foundNan ){
log = stderr;
(void) fprintf( log, "kPrintGBVI found nan \n", gpu->sim.paddedNumberOfAtoms );
for( int ii = 0; ii < gpu->sim.paddedNumberOfAtoms; ii++ ){
(void) fprintf( log, "%6d %15.7e %15.7e %15.7e\n", ii,
gpu->psPosq4->_pSysData[ii].x,
gpu->psPosq4->_pSysData[ii].y,
gpu->psPosq4->_pSysData[ii].z );
}
}
}
if( !printOnlyOnNan || foundNan ){
(void) fprintf( log, "kPrintGBVI Cuda comp bR bF prm sigeps2\n" );
(void) fprintf( stderr, "kCalculateGBVIBornSum: bOutputBufferPerWarp=%u blks=%u th/blk=%u wu=%u %u shrd=%u\n", gpu->bOutputBufferPerWarp,
gpu->sim.nonbond_blocks, gpu->sim.nonbond_threads_per_block, gpu->sim.workUnits, gpu->psWorkUnit->_pSysStream[0][0],
sizeof(Atom)*gpu->sim.nonbond_threads_per_block );
(void) fprintf( stderr, "bR bF swd r scR ...\n" );
for( int ii = 0; ii < gpu->sim.paddedNumberOfAtoms; ii++ ){
(void) fprintf( log, "%6d %15.7e %15.7e %15.7e %15.7e %15.7e %15.7e %15.7e %15.7e %15.7e\n", ii,
gpu->psBornRadii->_pSysData[ii], gpu->psBornRadii->_pSysData[ii],
gpu->psBornForce->_pSysData[ii], gpu->psBornForce->_pSysData[ii],
gpu->psGBVISwitchDerivative->_pSysData[ii], gpu->psGBVISwitchDerivative->_pSysData[ii],
...@@ -270,6 +294,10 @@ void kPrintGBVI( gpuContext gpu, std::string callId, int call, FILE* log) ...@@ -270,6 +294,10 @@ void kPrintGBVI( gpuContext gpu, std::string callId, int call, FILE* log)
gpu->psSigEps2->_pSysData[ii].x, gpu->psSigEps2->_pSysData[ii].x,
gpu->psSigEps2->_pSysData[ii].y ); gpu->psSigEps2->_pSysData[ii].y );
}
if( foundNan ){
exit(0);
}
} }
} }
......
...@@ -15,7 +15,6 @@ IF( INCLUDE_SERIALIZATION ) ...@@ -15,7 +15,6 @@ IF( INCLUDE_SERIALIZATION )
SET( SHARED_OPENMM_SERIALIZATION OpenMMSerialization ) SET( SHARED_OPENMM_SERIALIZATION OpenMMSerialization )
ENDIF( INCLUDE_SERIALIZATION ) ENDIF( INCLUDE_SERIALIZATION )
# Automatically create tests using files named "Test*.cpp" # Automatically create tests using files named "Test*.cpp"
FILE(GLOB TEST_PROGS "*Test*.cpp") FILE(GLOB TEST_PROGS "*Test*.cpp")
# TestCudaRandom has never worked on windows, so let's stop polluting the dashboard with it. # TestCudaRandom has never worked on windows, so let's stop polluting the dashboard with it.
...@@ -28,9 +27,17 @@ FOREACH(TEST_PROG ${TEST_PROGS}) ...@@ -28,9 +27,17 @@ FOREACH(TEST_PROG ${TEST_PROGS})
GET_FILENAME_COMPONENT(TEST_ROOT ${TEST_PROG} NAME_WE) GET_FILENAME_COMPONENT(TEST_ROOT ${TEST_PROG} NAME_WE)
# Link with shared library # Link with shared library
CUDA_ADD_EXECUTABLE(${TEST_ROOT} ${TEST_PROG}) CUDA_ADD_EXECUTABLE(${TEST_ROOT} ${TEST_PROG})
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${SHARED_TARGET}) TARGET_LINK_LIBRARIES(${TEST_ROOT} ${SHARED_TARGET})
# Three tests are created from the file TestCudaGBVIForce2.cpp by
# setting preprocessor definitions
# TestCudaNonbondForce2
# TestCudaGBSAOBCForce2
# TestCudaGBVIForce2
IF( ${TEST_ROOT} STREQUAL "TestCudaGBVIForce2" ) IF( ${TEST_ROOT} STREQUAL "TestCudaGBVIForce2" )
# serialize # serialize
...@@ -38,9 +45,6 @@ FOREACH(TEST_PROG ${TEST_PROGS}) ...@@ -38,9 +45,6 @@ FOREACH(TEST_PROG ${TEST_PROGS})
SET(DEFINE_STRING "-DTEST_PLATFORM=0 ") SET(DEFINE_STRING "-DTEST_PLATFORM=0 ")
IF( INCLUDE_SERIALIZATION ) IF( INCLUDE_SERIALIZATION )
SET(DEFINE_STRING "${DEFINE_STRING} -DOPENMM_SERIALIZE ") SET(DEFINE_STRING "${DEFINE_STRING} -DOPENMM_SERIALIZE ")
SET(TARGET_LINK_LIBRARIES_STRING "${SHARED_TARGET} ${SHARED_OPENMM_SERIALIZATION}")
ELSE( INCLUDE_SERIALIZATION )
SET(TARGET_LINK_LIBRARIES_STRING "${SHARED_TARGET}")
ENDIF( INCLUDE_SERIALIZATION ) ENDIF( INCLUDE_SERIALIZATION )
# obc # obc
...@@ -48,12 +52,6 @@ FOREACH(TEST_PROG ${TEST_PROGS}) ...@@ -48,12 +52,6 @@ FOREACH(TEST_PROG ${TEST_PROGS})
SET(OBC_DEFINE_STRING "${DEFINE_STRING} -DIMPLICIT_SOLVENT=1") SET(OBC_DEFINE_STRING "${DEFINE_STRING} -DIMPLICIT_SOLVENT=1")
SET(OBC_TEST "TestCudaGBSAOBCForce2") SET(OBC_TEST "TestCudaGBSAOBCForce2")
CUDA_ADD_EXECUTABLE(${OBC_TEST} ${TEST_PROG}) CUDA_ADD_EXECUTABLE(${OBC_TEST} ${TEST_PROG})
IF( INCLUDE_SERIALIZATION )
TARGET_LINK_LIBRARIES(${OBC_TEST} ${SHARED_TARGET} ${SHARED_OPENMM_SERIALIZATION} )
ELSE( INCLUDE_SERIALIZATION )
TARGET_LINK_LIBRARIES(${OBC_TEST} ${SHARED_TARGET})
ENDIF( INCLUDE_SERIALIZATION )
SET_TARGET_PROPERTIES(${OBC_TEST} PROPERTIES COMPILE_FLAGS ${OBC_DEFINE_STRING} ) SET_TARGET_PROPERTIES(${OBC_TEST} PROPERTIES COMPILE_FLAGS ${OBC_DEFINE_STRING} )
ADD_TEST(${OBC_TEST} ${EXECUTABLE_OUTPUT_PATH}/${OBC_TEST}) ADD_TEST(${OBC_TEST} ${EXECUTABLE_OUTPUT_PATH}/${OBC_TEST})
...@@ -62,12 +60,6 @@ FOREACH(TEST_PROG ${TEST_PROGS}) ...@@ -62,12 +60,6 @@ FOREACH(TEST_PROG ${TEST_PROGS})
SET(NONBOND_DEFINE_STRING "${DEFINE_STRING} -DIMPLICIT_SOLVENT=0") SET(NONBOND_DEFINE_STRING "${DEFINE_STRING} -DIMPLICIT_SOLVENT=0")
SET(NONBOND_TEST "TestCudaNonbondForce2") SET(NONBOND_TEST "TestCudaNonbondForce2")
CUDA_ADD_EXECUTABLE(${NONBOND_TEST} ${TEST_PROG}) CUDA_ADD_EXECUTABLE(${NONBOND_TEST} ${TEST_PROG})
IF( INCLUDE_SERIALIZATION )
TARGET_LINK_LIBRARIES(${NONBOND_TEST} ${SHARED_TARGET} ${SHARED_OPENMM_SERIALIZATION} )
ELSE( INCLUDE_SERIALIZATION )
TARGET_LINK_LIBRARIES(${NONBOND_TEST} ${SHARED_TARGET})
ENDIF( INCLUDE_SERIALIZATION )
SET_TARGET_PROPERTIES(${NONBOND_TEST} PROPERTIES COMPILE_FLAGS ${NONBOND_DEFINE_STRING} ) SET_TARGET_PROPERTIES(${NONBOND_TEST} PROPERTIES COMPILE_FLAGS ${NONBOND_DEFINE_STRING} )
ADD_TEST(${NONBOND_TEST} ${EXECUTABLE_OUTPUT_PATH}/${NONBOND_TEST}) ADD_TEST(${NONBOND_TEST} ${EXECUTABLE_OUTPUT_PATH}/${NONBOND_TEST})
...@@ -76,6 +68,18 @@ FOREACH(TEST_PROG ${TEST_PROGS}) ...@@ -76,6 +68,18 @@ FOREACH(TEST_PROG ${TEST_PROGS})
SET(DEFINE_STRING "${DEFINE_STRING} -DIMPLICIT_SOLVENT=2") SET(DEFINE_STRING "${DEFINE_STRING} -DIMPLICIT_SOLVENT=2")
SET_TARGET_PROPERTIES(${TEST_ROOT} PROPERTIES COMPILE_FLAGS ${DEFINE_STRING} ) SET_TARGET_PROPERTIES(${TEST_ROOT} PROPERTIES COMPILE_FLAGS ${DEFINE_STRING} )
# libs
IF( INCLUDE_SERIALIZATION )
TARGET_LINK_LIBRARIES(${OBC_TEST} ${SHARED_TARGET} ${SHARED_OPENMM_SERIALIZATION} )
TARGET_LINK_LIBRARIES(${NONBOND_TEST} ${SHARED_TARGET} ${SHARED_OPENMM_SERIALIZATION} )
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${SHARED_TARGET} ${SHARED_OPENMM_SERIALIZATION} )
ELSE( INCLUDE_SERIALIZATION )
TARGET_LINK_LIBRARIES(${OBC_TEST} ${SHARED_TARGET})
TARGET_LINK_LIBRARIES(${NONBOND_TEST} ${SHARED_TARGET})
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${SHARED_TARGET})
ENDIF( INCLUDE_SERIALIZATION )
ENDIF( ${TEST_ROOT} STREQUAL "TestCudaGBVIForce2" ) ENDIF( ${TEST_ROOT} STREQUAL "TestCudaGBVIForce2" )
#MESSAGE( "vcm ${TEST_ROOT} ${DEFINE_STRING}" ) #MESSAGE( "vcm ${TEST_ROOT} ${DEFINE_STRING}" )
...@@ -94,11 +98,6 @@ FOREACH(TEST_PROG ${TEST_PROGS}) ...@@ -94,11 +98,6 @@ FOREACH(TEST_PROG ${TEST_PROGS})
ENDFOREACH(TEST_PROG ${TEST_PROGS}) ENDFOREACH(TEST_PROG ${TEST_PROGS})
SET(TEST_PROG TstCudaUsingParameterFile.cpp)
SET(TEST_STATIC ${TEST_ROOT}Static)
SET(INCLUDE_CUDA_STATIC 1)
#ENDIF(INCLUDE_CUDA_STATIC)
install(TARGETS TestCudaHarmonicBondForce install(TARGETS TestCudaHarmonicBondForce
RUNTIME DESTINATION bin) RUNTIME DESTINATION bin)
This diff is collapsed.
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