Commit f2ad92a4 authored by Christopher Bruns's avatar Christopher Bruns
Browse files

Turn on default building of OpenCL plugin for all platforms.

Unify FindOpenCL.cmake files to one location, under cmake_modules.
Other changes to permit building with nvidia opencl on Windows.
parent 57e0e7e5
...@@ -373,16 +373,13 @@ MARK_AS_ADVANCED(CUDA_VERBOSE_BUILD) ...@@ -373,16 +373,13 @@ MARK_AS_ADVANCED(CUDA_VERBOSE_BUILD)
MARK_AS_ADVANCED(CUDA_BUILD_CUBIN) MARK_AS_ADVANCED(CUDA_BUILD_CUBIN)
MARK_AS_ADVANCED(CUDA_BUILD_EMULATION) MARK_AS_ADVANCED(CUDA_BUILD_EMULATION)
IF(NOT cmv EQUAL "2.4") FIND_PACKAGE(OpenCL QUIET)
FIND_PACKAGE(OpenCL QUIET)
ENDIF(NOT cmv EQUAL "2.4")
# OpenCL only works on Mac for now
# Plus the tesla/linux is taking too long on the tests # Plus the tesla/linux is taking too long on the tests
IF(OPENCL_FOUND AND APPLE) IF(OPENCL_FOUND)
SET(OPENMM_BUILD_OPENCL_LIB ON CACHE BOOL "Build OpenMMOpenCL library for Nvidia GPUs") SET(OPENMM_BUILD_OPENCL_LIB ON CACHE BOOL "Build OpenMMOpenCL library for Nvidia GPUs")
ELSE(OPENCL_FOUND AND APPLE) ELSE(OPENCL_FOUND)
SET(OPENMM_BUILD_OPENCL_LIB OFF CACHE BOOL "Build OpenMMOpenCL library for Nvidia GPUs") SET(OPENMM_BUILD_OPENCL_LIB OFF CACHE BOOL "Build OpenMMOpenCL library for Nvidia GPUs")
ENDIF(OPENCL_FOUND AND APPLE) ENDIF(OPENCL_FOUND)
IF(OPENMM_BUILD_OPENCL_LIB) IF(OPENMM_BUILD_OPENCL_LIB)
ADD_SUBDIRECTORY(platforms/opencl) ADD_SUBDIRECTORY(platforms/opencl)
ENDIF(OPENMM_BUILD_OPENCL_LIB) ENDIF(OPENMM_BUILD_OPENCL_LIB)
......
set(ENV_OPENCL_DIR $ENV{OPENCL_DIR})
if(ENV_OPENCL_DIR)
find_path(OPENCL_INCLUDE_DIR NAMES CL/cl.h PATHS $ENV{OPENCL_DIR}/include NO_DEFAULT_PATH)
if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") ### OPENCL_INCLUDE_DIR ###
# Try OPENCL_DIR variable before looking elsewhere
find_path(OPENCL_INCLUDE_DIR
NAMES OpenCL/cl.h CL/cl.h
PATHS "$ENV{OPENCL_DIR}"
PATH_SUFFIXES "include"
NO_DEFAULT_PATH
)
# As a last resort, look in default include areas and elsewhere
find_path(OPENCL_INCLUDE_DIR
NAMES OpenCL/cl.h CL/cl.h
PATHS
"$ENV{CUDA_INC_PATH}"
"C:/CUDA"
PATH_SUFFIXES "include"
)
### OPENCL_LIBRARY ###
if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
set(path_suffixes "lib/x86")
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} $ENV{OPENCL_DIR}/lib/x86_64) set(path_suffixes "lib/x86_64")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686")
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} $ENV{OPENCL_DIR}/lib/x86)
endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
endif("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") endif("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
find_library(OPENCL_LIBRARY NAMES OpenCL PATHS ${OPENCL_LIB_SEARCH_PATH} NO_DEFAULT_PATH) # First look in OPENCL_DIR variable location
else(ENV_OPENCL_DIR) find_library(OPENCL_LIBRARY
if (APPLE) NAMES OpenCL
find_path(OPENCL_INCLUDE_DIR NAMES OpenCL/cl.h) PATHS $ENV{OPENCL_DIR} ${OPENCL_LIB_SEARCH_PATH} ""
else (APPLE) PATH_SUFFIXES ${path_suffixes} "lib"
find_path(OPENCL_INCLUDE_DIR NAMES CL/cl.h) NO_DEFAULT_PATH
endif(APPLE) )
find_library(OPENCL_LIBRARY NAMES OpenCL) # If above fails, look in system default and other locations
endif(ENV_OPENCL_DIR) find_library(OPENCL_LIBRARY
NAMES OpenCL
PATHS
"$ENV{CUDA_LIB_PATH}"
"C:/CUDA"
PATH_SUFFIXES ${path_suffixes} "lib"
)
include(FindPackageHandleStandardArgs) find_package_handle_standard_args(OPENCL DEFAULT_MSG OPENCL_LIBRARY OPENCL_INCLUDE_DIR)
find_package_handle_standard_args(OpenCL DEFAULT_MSG OPENCL_LIBRARY OPENCL_INCLUDE_DIR)
if(OpenCL_FOUND) if(OPENCL_FOUND)
set(OPENCL_LIBRARIES ${OPENCL_LIBRARY}) set(OPENCL_LIBRARIES ${OPENCL_LIBRARY})
else(OpenCL_FOUND) mark_as_advanced(CLEAR OPENCL_INCLUDE_DIR)
mark_as_advanced(CLEAR OPENCL_LIBRARY)
else(OPENCL_FOUND)
set(OPENCL_LIBRARIES) set(OPENCL_LIBRARIES)
endif(OpenCL_FOUND) mark_as_advanced(OPENCL_INCLUDE_DIR)
mark_as_advanced(OPENCL_LIBRARY)
mark_as_advanced(OPENCL_INCLUDE_DIR OPENCL_LIBRARY) endif(OPENCL_FOUND)
MARK_AS_ADVANCED(CLEAR OPENCL_INCLUDE_DIR)
MARK_AS_ADVANCED(CLEAR OPENCL_LIBRARY)
set(ENV_OPENCL_DIR $ENV{OPENCL_DIR})
if(ENV_OPENCL_DIR)
find_path(OPENCL_INCLUDE_DIR NAMES CL/cl.h PATHS $ENV{OPENCL_DIR}/include NO_DEFAULT_PATH)
if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} $ENV{OPENCL_DIR}/lib/x86_64)
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686")
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} $ENV{OPENCL_DIR}/lib/x86)
endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
endif("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
find_library(OPENCL_LIBRARY NAMES OpenCL PATHS ${OPENCL_LIB_SEARCH_PATH} NO_DEFAULT_PATH)
else(ENV_OPENCL_DIR)
if (APPLE)
find_path(OPENCL_INCLUDE_DIR NAMES OpenCL/cl.h)
else (APPLE)
find_path(OPENCL_INCLUDE_DIR NAMES CL/cl.h)
endif(APPLE)
find_library(OPENCL_LIBRARY NAMES OpenCL)
endif(ENV_OPENCL_DIR)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OPENCL DEFAULT_MSG OPENCL_LIBRARY OPENCL_INCLUDE_DIR)
if(OPENCL_FOUND)
set(OPENCL_LIBRARIES ${OPENCL_LIBRARY})
else(OPENCL_FOUND)
set(OPENCL_LIBRARIES)
endif(OPENCL_FOUND)
# #
# Include OpenCL related files. # Include OpenCL related files.
# #
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/../FindOpenCL.cmake) # INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/../FindOpenCL.cmake)
INCLUDE_DIRECTORIES(${OPENCL_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${OPENCL_INCLUDE_DIR})
FILE(GLOB OPENCL_KERNELS ${CL_SOURCE_DIR}/kernels/*.cl) FILE(GLOB OPENCL_KERNELS ${CL_SOURCE_DIR}/kernels/*.cl)
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "openmm/System.h" #include "openmm/System.h"
#include "OpenCLContext.h" #include "OpenCLContext.h"
#include "openmm/internal/windowsExport.h"
namespace OpenMM { namespace OpenMM {
......
#include "OpenCLSort.h"
template class OpenMM::OpenCLSort<float>;
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
ENABLE_TESTING() ENABLE_TESTING()
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/../FindOpenCL.cmake) # INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/../FindOpenCL.cmake)
INCLUDE_DIRECTORIES(${OPENCL_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${OPENCL_INCLUDE_DIR})
# Automatically create tests using files named "Test*.cpp" # Automatically create tests using files named "Test*.cpp"
......
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