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

Added createStreamImpl() to BrookStreamFactory w/o context argument

Added  'OPENMM_EXPORT'  to class declaration to deal w/ linking issue associated w/ virtual methods in class
Modified brook/brook-cmake/FindBrook.cmake to only look in $BROOKROOT directory for Brook files
parent 5824286d
...@@ -132,15 +132,15 @@ LINK_DIRECTORIES(${${BROOK_brook_LIBRARY}}) ...@@ -132,15 +132,15 @@ LINK_DIRECTORIES(${${BROOK_brook_LIBRARY}})
# get *br files # get *br files
FILE(GLOB BROOK_SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/gpu/*.br) FILE(GLOB BROOK_SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/kernels/*.br)
FILE(GLOB BROOK_INCLUDE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/gpu/*.h) FILE(GLOB BROOK_INCLUDE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/kernels/*.h)
FILE( APPEND ${LOG_FILE} "BROOK_SRC_FILES=${BROOK_SRC_FILES}\n" ) FILE( APPEND ${LOG_FILE} "BROOK_SRC_FILES=${BROOK_SRC_FILES}\n" )
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
IF(LOG) IF(LOG)
LOG_DIR( ${LOG_FILE} "Brook src" ${BROOK_SRC_FILES} ) # LOG_DIR( ${LOG_FILE} "Brook src" ${BROOK_SRC_FILES} )
LOG_DIR( ${LOG_FILE} "Brook include" ${BROOK_INCLUDE_FILES} ) # LOG_DIR( ${LOG_FILE} "Brook include" ${BROOK_INCLUDE_FILES} )
ENDIF(LOG) ENDIF(LOG)
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
...@@ -153,7 +153,7 @@ ENDFOREACH(brookFile) ...@@ -153,7 +153,7 @@ ENDFOREACH(brookFile)
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
IF(LOG) IF(LOG)
LOG_DIR( ${LOG_FILE} "Brook cpp" ${BROOK_CPP_FILES} ) # LOG_DIR( ${LOG_FILE} "Brook cpp" ${BROOK_CPP_FILES} )
ENDIF(LOG) ENDIF(LOG)
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
...@@ -170,16 +170,28 @@ IF(LOG) ...@@ -170,16 +170,28 @@ IF(LOG)
ENDIF(LOG) ENDIF(LOG)
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# shared
TARGET_LINK_LIBRARIES(${SHARED_BROOK_TARGET} debug ${OPENMM_LIBRARY_NAME}_d optimized ${OPENMM_LIBRARY_NAME}) TARGET_LINK_LIBRARIES(${SHARED_BROOK_TARGET} debug ${OPENMM_LIBRARY_NAME}_d optimized ${OPENMM_LIBRARY_NAME})
TARGET_LINK_LIBRARIES(${SHARED_BROOK_TARGET} debug brook_d optimized brook )
TARGET_LINK_LIBRARIES(${SHARED_BROOK_TARGET} ${SHARED_TARGET} ) # the line below does not work for some reason
# using the following 3 lines in its place until understand more fully source of problem
# TARGET_LINK_LIBRARIES(${SHARED_BROOK_TARGET} debug brook_d optimized brook)
SET(BrookLib ${BROOK_LIB_PATH}/brook.lib)
SET(BrookDebugLib ${BROOK_LIB_PATH}/brook_d.lib)
TARGET_LINK_LIBRARIES(${SHARED_BROOK_TARGET} debug ${BrookDebugLib} optimized ${BrookLib})
LINK_DIRECTORIES(${SHARED_BROOK_TARGET} ${BROOK_LIB_PATH}) LINK_DIRECTORIES(${SHARED_BROOK_TARGET} ${BROOK_LIB_PATH})
LINK_DIRECTORIES(${SHARED_BROOK_TARGET} ${PROJECT_BINARY_DIR}) LINK_DIRECTORIES(${SHARED_BROOK_TARGET} ${PROJECT_BINARY_DIR})
# ----------------------------------------------------------------------------
#static
TARGET_LINK_LIBRARIES(${STATIC_BROOK_TARGET} debug ${OPENMM_LIBRARY_NAME}_static_d optimized ${OPENMM_LIBRARY_NAME}_static) TARGET_LINK_LIBRARIES(${STATIC_BROOK_TARGET} debug ${OPENMM_LIBRARY_NAME}_static_d optimized ${OPENMM_LIBRARY_NAME}_static)
TARGET_LINK_LIBRARIES(${STATIC_BROOK_TARGET} debug brook_d optimized brook) TARGET_LINK_LIBRARIES(${STATIC_BROOK_TARGET} debug brook_d optimized brook)
TARGET_LINK_LIBRARIES(${STATIC_BROOK_TARGET} ${STATIC_TARGET}) TARGET_LINK_LIBRARIES(${STATIC_BROOK_TARGET} ${STATIC_TARGET})
LINK_DIRECTORIES(${STATIC_BROOK_TARGET} ${BROOK_LIB_PATH}) LINK_DIRECTORIES(${STATIC_BROOK_TARGET} ${BROOK_LIB_PATH})
#--------------------------------------------------- # ----------------------------------------------------------------------------
...@@ -12,26 +12,12 @@ ...@@ -12,26 +12,12 @@
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
FIND_PATH(BROOK_INCLUDE_DIR brook FIND_PATH(BROOK_INCLUDE_DIR brook $ENV{BROOKROOT}/sdk/include)
$ENV{BROOKDIR}/include
$ENV{BROOKROOT}/sdk/include
/usr/include/
/usr/local/include/
~/src/cvs/brook/include
~/src/brook/include
~/brook/include)
SET(BROOK_CXXFLAGS "-I${BROOK_INCLUDE_DIR}") SET(BROOK_CXXFLAGS "-I${BROOK_INCLUDE_DIR}")
SET(BROOK_CFLAGS "${BROOK_CXXFLAGS}") SET(BROOK_CFLAGS "${BROOK_CXXFLAGS}")
FIND_PROGRAM(BROOK_CC brcc FIND_PROGRAM(BROOK_CC brcc $ENV{BROOKROOT}/sdk/bin)
$ENV{BROOKDIR}/bin
$ENV{BROOKROOT}/sdk/bin
/usr/bin/
/usr/local/bin/
~/src/cvs/brook/bin
~/src/brook/bin
~/brook/bin)
# Search for all libraries # Search for all libraries
# - both BASE and RUNTIME TARGETS # - both BASE and RUNTIME TARGETS
...@@ -43,13 +29,7 @@ FIND_LIBRARY(BROOK_brook_LIBRARY ...@@ -43,13 +29,7 @@ FIND_LIBRARY(BROOK_brook_LIBRARY
brook brook
brook_d brook_d
PATHS PATHS
$ENV{BROOKDIR}/lib $ENV{BROOKROOT}/sdk/lib)
$ENV{BROOKDIR}/bin
$ENV{BROOKROOT}/sdk/lib
/usr/lib
/usr/local/lib
~/src/brook/bin
~/brook/bin)
# if found, add to list # if found, add to list
...@@ -76,7 +56,7 @@ ENDIF(LOG) ...@@ -76,7 +56,7 @@ ENDIF(LOG)
# check if includes and main lib are here # check if includes and main lib are here
IF (BROOK_INCLUDE_DIR AND BROOK_brook_LIBRARY AND BROOK_CC) # IF (BROOK_INCLUDE_DIR AND BROOK_brook_LIBRARY AND BROOK_CC)
SET(BROOK_FOUND TRUE) SET(BROOK_FOUND TRUE)
...@@ -102,7 +82,7 @@ IF (BROOK_INCLUDE_DIR AND BROOK_brook_LIBRARY AND BROOK_CC) ...@@ -102,7 +82,7 @@ IF (BROOK_INCLUDE_DIR AND BROOK_brook_LIBRARY AND BROOK_CC)
# File names # File names
SET(OUTPATH "${CMAKE_CURRENT_BINARY_DIR}/src/gpu") SET(OUTPATH "${CMAKE_CURRENT_BINARY_DIR}/src/kernels")
SET(BROOK_PREFIX "${OUTPATH}/${HEAD}") SET(BROOK_PREFIX "${OUTPATH}/${HEAD}")
SET(OUTFILE "${BROOK_PREFIX}.cpp") # file produced by Brook SET(OUTFILE "${BROOK_PREFIX}.cpp") # file produced by Brook
# SET(INFILE "${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME}") # canonical input name # SET(INFILE "${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME}") # canonical input name
...@@ -141,9 +121,9 @@ IF (BROOK_INCLUDE_DIR AND BROOK_brook_LIBRARY AND BROOK_CC) ...@@ -141,9 +121,9 @@ IF (BROOK_INCLUDE_DIR AND BROOK_brook_LIBRARY AND BROOK_CC)
SET(BROOK_CPP_FILES ${BROOK_CPP_FILES} ${OUTFILE}) SET(BROOK_CPP_FILES ${BROOK_CPP_FILES} ${OUTFILE})
ENDMACRO(BROOK_FILE) ENDMACRO(BROOK_FILE)
ELSE (BROOK_INCLUDE_DIR AND BROOK_brook_LIBRARY AND BROOK_CC) # ELSE (BROOK_INCLUDE_DIR AND BROOK_brook_LIBRARY AND BROOK_CC)
SET(BROOK_FOUND FALSE) # SET(BROOK_FOUND FALSE)
ENDIF (BROOK_INCLUDE_DIR AND BROOK_brook_LIBRARY AND BROOK_CC) #ENDIF (BROOK_INCLUDE_DIR AND BROOK_brook_LIBRARY AND BROOK_CC)
# Some verbosity # Some verbosity
......
...@@ -41,8 +41,10 @@ namespace OpenMM { ...@@ -41,8 +41,10 @@ namespace OpenMM {
*/ */
class BrookKernelFactory : public KernelFactory { class BrookKernelFactory : public KernelFactory {
public:
KernelImpl* createKernelImpl( std::string name, const Platform& platform, OpenMMContextImpl& context ) const; public:
KernelImpl* createKernelImpl( std::string name, const Platform& platform, OpenMMContextImpl& context ) const;
}; };
} // namespace OpenMM } // namespace OpenMM
......
...@@ -294,6 +294,8 @@ class OPENMM_EXPORT BrookPlatform : public Platform { ...@@ -294,6 +294,8 @@ class OPENMM_EXPORT BrookPlatform : public Platform {
FILE* _log; FILE* _log;
// default stream factory
BrookStreamFactory _defaultStreamFactory; BrookStreamFactory _defaultStreamFactory;
// default stream width // default stream width
......
...@@ -41,11 +41,22 @@ namespace OpenMM { ...@@ -41,11 +41,22 @@ namespace OpenMM {
* This StreamFactory creates all streams for BrookPlatform. * This StreamFactory creates all streams for BrookPlatform.
*/ */
class BrookStreamFactory : public StreamFactory { class OPENMM_EXPORT BrookStreamFactory : public StreamFactory {
public: public:
/**
* BrookStreamFactory constructor
*
*/
BrookStreamFactory( ); BrookStreamFactory( );
/**
* BrookStreamFactory destructor
*
*/
~BrookStreamFactory( ); ~BrookStreamFactory( );
// 'external' streams // 'external' streams
...@@ -68,6 +79,19 @@ class BrookStreamFactory : public StreamFactory { ...@@ -68,6 +79,19 @@ class BrookStreamFactory : public StreamFactory {
StreamImpl* createStreamImpl( std::string name, int size, Stream::DataType type, const Platform& platform, OpenMMContextImpl& context ) const; StreamImpl* createStreamImpl( std::string name, int size, Stream::DataType type, const Platform& platform, OpenMMContextImpl& context ) const;
/**
* Create StreamImpl
*
* @param name stream name
* @param size stream size
* @param type data type (float, float2, ...)
* @param platform platform reference
*
* @return StreamImpl
*/
StreamImpl* createStreamImpl( std::string name, int size, Stream::DataType type, const Platform& platform ) const;
/** /**
* Get particle stream width * Get particle stream width
* *
......
...@@ -310,3 +310,33 @@ StreamImpl* BrookStreamFactory::createStreamImpl( std::string name, int size, St ...@@ -310,3 +310,33 @@ StreamImpl* BrookStreamFactory::createStreamImpl( std::string name, int size, St
return brookStreamImpl; return brookStreamImpl;
} }
/**
* Create StreamInternal
*
* @param name stream name
* @param size stream size
* @param type data type (float, float2, ...)
* @param platform platform reference
*
* @return StreamInternal
*/
StreamImpl* BrookStreamFactory::createStreamImpl( std::string name, int size, Stream::DataType type,
const Platform& platform ) const {
// ---------------------------------------------------------------------------------------
//static const std::string methodName = "BrookStreamFactory::createStreamImpl";
// ---------------------------------------------------------------------------------------
// stream width hould be based on name & value set in platform; for now only particle stream types
int streamWidth = getDefaultParticleStreamWidth();
BrookStreamImpl* brookStreamImpl = new BrookStreamImpl( name, size, streamWidth, type, platform );
return brookStreamImpl;
}
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