Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
openmm
Commits
18c9a78a
Commit
18c9a78a
authored
Sep 19, 2008
by
Peter Eastman
Browse files
Attempting to get Cuda code to compile
parent
6a4a17f8
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
82 additions
and
35 deletions
+82
-35
CMakeLists.txt
CMakeLists.txt
+1
-1
platforms/cuda/CMakeLists.txt
platforms/cuda/CMakeLists.txt
+11
-3
platforms/cuda/cuda-cmake/FindCuda.cmake
platforms/cuda/cuda-cmake/FindCuda.cmake
+69
-19
platforms/cuda/src/CudaPlatform.cpp
platforms/cuda/src/CudaPlatform.cpp
+1
-11
platforms/reference/tests/TestReferenceRandom.cpp
platforms/reference/tests/TestReferenceRandom.cpp
+0
-1
No files found.
CMakeLists.txt
View file @
18c9a78a
...
@@ -22,7 +22,7 @@ ENDIF( NOT PROJECT_NAME )
...
@@ -22,7 +22,7 @@ ENDIF( NOT PROJECT_NAME )
INCLUDE
(
Dart
)
INCLUDE
(
Dart
)
SUBDIRS
(
tests platforms/reference/tests
)
SUBDIRS
(
tests platforms/reference/tests
platforms/cuda
)
ADD_DEFINITIONS
(
-DOPENMM_BUILDING_SHARED_LIBRARY
)
ADD_DEFINITIONS
(
-DOPENMM_BUILDING_SHARED_LIBRARY
)
...
...
platforms/cuda/CMakeLists.txt
View file @
18c9a78a
...
@@ -90,11 +90,19 @@ INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/cuda-cmake/FindCuda.cmake)
...
@@ -90,11 +90,19 @@ INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/cuda-cmake/FindCuda.cmake)
INCLUDE_DIRECTORIES
(
${
CUDA_INCLUDE
}
)
INCLUDE_DIRECTORIES
(
${
CUDA_INCLUDE
}
)
LINK_DIRECTORIES
(
${
CUDA_TARGET_LINK
}
)
LINK_DIRECTORIES
(
${
CUDA_TARGET_LINK
}
)
FOREACH
(
subdir
${
OPENMM_SOURCE_SUBDIRS
}
)
FOREACH
(
subdir
${
OPENMM_SOURCE_SUBDIRS
}
)
# FILE(GLOB src_files ${subdir}/src/*.cu ${subdir}/src/*/*.cu)
FILE
(
GLOB src_files
${
CMAKE_CURRENT_SOURCE_DIR
}
/
${
subdir
}
/src/*.cu
${
CMAKE_CURRENT_SOURCE_DIR
}
/
${
subdir
}
/src/*/*.cu
)
# SET(SOURCE_FILES ${SOURCE_FILES} ${src_files}) #append
FOREACH
(
file
${
src_files
}
)
CUDA_INCLUDE_DIRECTORIES
(
BEFORE
${
PROJECT_SOURCE_DIR
}
/
${
subdir
}
/include
)
FILE
(
RELATIVE_PATH file
${
CMAKE_CURRENT_SOURCE_DIR
}
${
file
}
)
MESSAGE
(
${
file
}
)
SET
(
SOURCE_FILES
${
SOURCE_FILES
}
${
file
}
)
#append
ENDFOREACH
(
file
)
CUDA_INCLUDE_DIRECTORIES
(
BEFORE
${
CMAKE_CURRENT_SOURCE_DIR
}
/
${
subdir
}
/include
)
ENDFOREACH
(
subdir
)
ENDFOREACH
(
subdir
)
CUDA_INCLUDE_DIRECTORIES
(
BEFORE
${
CMAKE_CURRENT_SOURCE_DIR
}
/src
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
CUDA_ADD_LIBRARY
(
${
STATIC_TARGET
}
STATIC
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
CUDA_ADD_LIBRARY
(
${
STATIC_TARGET
}
STATIC
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
_d optimized
${
OPENMM_LIBRARY_NAME
}
)
TARGET_LINK_LIBRARIES
(
${
STATIC_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
_static_d optimized
${
OPENMM_LIBRARY_NAME
}
_static
)
platforms/cuda/cuda-cmake/FindCuda.cmake
View file @
18c9a78a
...
@@ -26,8 +26,8 @@
...
@@ -26,8 +26,8 @@
# DEALINGS IN THE SOFTWARE.
# DEALINGS IN THE SOFTWARE.
#
#
# This script locates the Nvidia Compute Unified Driver Architecture (CUDA)
# This script locates the Nvidia Compute Unified Driver Architecture (CUDA)
# tools. It should
on both
linux
and
windows, and should be reasonably
up to
# tools. It should
work on
linux
,
windows, and
mac and
should be reasonably
# date with cuda releases.
#
up to
date with cuda releases.
#
#
# The script will prompt the user to specify CUDA_INSTALL_PREFIX if the
# The script will prompt the user to specify CUDA_INSTALL_PREFIX if the
# prefix cannot be determined by the location of nvcc in the system path. To
# prefix cannot be determined by the location of nvcc in the system path. To
...
@@ -39,10 +39,8 @@
...
@@ -39,10 +39,8 @@
# _DEVICEEMU is defined in "Emulation" mode.
# _DEVICEEMU is defined in "Emulation" mode.
#
#
# Set CUDA_BUILD_CUBIN to "ON" or "OFF" to enable and extra compilation pass
# Set CUDA_BUILD_CUBIN to "ON" or "OFF" to enable and extra compilation pass
# with the -cubin option in Device mode.
# with the -cubin option in Device mode. The output is parsed and register,
#
# shared memory usage is printed during build. Default ON.
# The output is parsed and register, shared memory usage is printed during
# build. Default ON.
#
#
# The script creates the following macros:
# The script creates the following macros:
# CUDA_INCLUDE_DIRECTORIES( path0 path1 ... )
# CUDA_INCLUDE_DIRECTORIES( path0 path1 ... )
...
@@ -53,7 +51,7 @@
...
@@ -53,7 +51,7 @@
# CUDA_ADD_LIBRARY( cuda_target file0 file1 ... )
# CUDA_ADD_LIBRARY( cuda_target file0 file1 ... )
# -- Creates a shared library "cuda_target" which contains all of the source
# -- Creates a shared library "cuda_target" which contains all of the source
# (*.c, *.cc, etc.) specified and all of the nvcc'ed .cu files specified.
# (*.c, *.cc, etc.) specified and all of the nvcc'ed .cu files specified.
# All of the specified source files and generated .c files are compiled
# All of the specified source files and generated .c
pp
files are compiled
# using the standard CMake compiler, so the normal INCLUDE_DIRECTORIES,
# using the standard CMake compiler, so the normal INCLUDE_DIRECTORIES,
# LINK_DIRECTORIES, and TARGET_LINK_LIBRARIES can be used to affect their
# LINK_DIRECTORIES, and TARGET_LINK_LIBRARIES can be used to affect their
# build and link.
# build and link.
...
@@ -61,6 +59,10 @@
...
@@ -61,6 +59,10 @@
# CUDA_ADD_EXECUTABLE( cuda_target file0 file1 ... )
# CUDA_ADD_EXECUTABLE( cuda_target file0 file1 ... )
# -- Same as CUDA_ADD_LIBRARY except that an exectuable is created.
# -- Same as CUDA_ADD_LIBRARY except that an exectuable is created.
#
#
# CUDA_COMPILE( cuda_files file0 file1 ... )
# -- Returns a list of build commands in the first argument to be used with
# ADD_LIBRARY or ADD_EXECUTABLE.
#
# The script defines the following variables:
# The script defines the following variables:
#
#
# ( Note CUDA_ADD_* macros setup cuda/cut library dependencies automatically.
# ( Note CUDA_ADD_* macros setup cuda/cut library dependencies automatically.
...
@@ -74,6 +76,11 @@
...
@@ -74,6 +76,11 @@
# CUDA_NVCC_FLAGS -- Additional NVCC command line arguments. NOTE:
# CUDA_NVCC_FLAGS -- Additional NVCC command line arguments. NOTE:
# multiple arguments must be semi-colon delimited
# multiple arguments must be semi-colon delimited
# e.g. --compiler-options;-Wall
# e.g. --compiler-options;-Wall
# CUBLAS_TARGET_LINK-- cublas library name.
# CUFFT_TARGET_LINK -- cubfft library name.
#
# The nvcc flag "--host-compilation;c++" should be used if functions declared
# as __host__ contain C++ code.
#
#
# It might be necessary to set CUDA_INSTALL_PATH manually on certain platforms,
# It might be necessary to set CUDA_INSTALL_PATH manually on certain platforms,
# or to use a cuda runtime not installed in the default location. In newer
# or to use a cuda runtime not installed in the default location. In newer
...
@@ -85,8 +92,7 @@
...
@@ -85,8 +92,7 @@
###############################################################################
###############################################################################
# FindCuda.cmake
# FindCuda.cmake
CMAKE_MINIMUM_REQUIRED
(
VERSION 2.4
)
SET
(
CMAKE_BACKWARDS_COMPATIBILITY 2.2
)
INCLUDE
(
${
CMAKE_CURRENT_SOURCE_DIR
}
/cuda-cmake/CudaDependency.cmake
)
INCLUDE
(
${
CMAKE_CURRENT_SOURCE_DIR
}
/cuda-cmake/CudaDependency.cmake
)
...
@@ -261,6 +267,40 @@ IF(NOT CUDA_CUT_TARGET_LINK)
...
@@ -261,6 +267,40 @@ IF(NOT CUDA_CUT_TARGET_LINK)
FOUND_CUT
FOUND_CUT
)
)
ENDIF
(
FOUND_CUT
)
ENDIF
(
FOUND_CUT
)
# Add variables for cufft and cublas target link
FIND_LIBRARY
(
FOUND_CUFFTEMU
cufftemu
PATHS
${
CUDA_INSTALL_PREFIX
}
/lib $ENV{CUDA_LIB_PATH}
DOC
"
\"
cufftemu
\"
library"
)
FIND_LIBRARY
(
FOUND_CUBLASEMU
cublasemu
PATHS
${
CUDA_INSTALL_PREFIX
}
/lib $ENV{CUDA_LIB_PATH}
DOC
"
\"
cublasemu
\"
library"
)
FIND_LIBRARY
(
FOUND_CUFFT
cufft
PATHS
${
CUDA_INSTALL_PREFIX
}
/lib $ENV{CUDA_LIB_PATH}
DOC
"
\"
cufft
\"
library"
)
FIND_LIBRARY
(
FOUND_CUBLAS
cublas
PATHS
${
CUDA_INSTALL_PREFIX
}
/lib $ENV{CUDA_LIB_PATH}
DOC
"
\"
cublas
\"
library"
)
IF
(
CUDA_BUILD_TYPE MATCHES
"Emulation"
)
SET
(
CUFFT_TARGET_LINK
${
FOUND_CUFFTEMU
}
)
SET
(
CUBLAS_TARGET_LINK
${
FOUND_CUBLASEMU
}
)
ELSE
(
CUDA_BUILD_TYPE MATCHES
"Emulation"
)
SET
(
CUFFT_TARGET_LINK
${
FOUND_CUFFT
}
)
SET
(
CUBLAS_TARGET_LINK
${
FOUND_CUBLAS
}
)
ENDIF
(
CUDA_BUILD_TYPE MATCHES
"Emulation"
)
ENDIF
(
NOT CUDA_CUT_TARGET_LINK
)
ENDIF
(
NOT CUDA_CUT_TARGET_LINK
)
...
@@ -277,7 +317,7 @@ ENDMACRO(CUDA_INCLUDE_DIRECTORIES)
...
@@ -277,7 +317,7 @@ ENDMACRO(CUDA_INCLUDE_DIRECTORIES)
##############################################################################
##############################################################################
# This helper macro populates the following variables and setups up custom commands and targets to
# This helper macro populates the following variables and setups up custom commands and targets to
# invoke the nvcc compiler. The compiler is invoked once with -M to generate a dependency file and
# invoke the nvcc compiler. The compiler is invoked once with -M to generate a dependency file and
# a second time with -cuda to generate a .c file
# a second time with -cuda to generate a .c
pp
file
# ${target_srcs}
# ${target_srcs}
# ${cuda_cu_sources}
# ${cuda_cu_sources}
##############################################################################
##############################################################################
...
@@ -293,16 +333,13 @@ MACRO(CUDA_add_custom_commands cuda_target)
...
@@ -293,16 +333,13 @@ MACRO(CUDA_add_custom_commands cuda_target)
FOREACH
(
file
${
ARGN
}
)
FOREACH
(
file
${
ARGN
}
)
IF
(
${
file
}
MATCHES
".*
\\
.cu$"
)
IF
(
${
file
}
MATCHES
".*
\\
.cu$"
)
# Add a custom target to generate a c
pp
file.
# Add a custom target to generate a c file.
SET
(
generated_file
"
${
CMAKE_BINARY_DIR
}
/src/cuda/
${
file
}
_
${
cuda_target
}
_generated.c
c
"
)
SET
(
generated_file
"
${
CMAKE_BINARY_DIR
}
/src/cuda/
${
file
}
_
${
cuda_target
}
_generated.c
pp
"
)
SET
(
generated_target
"
${
file
}
_target"
)
SET
(
generated_target
"
${
file
}
_target"
)
FILE
(
MAKE_DIRECTORY
${
CMAKE_BINARY_DIR
}
/src/cuda
)
FILE
(
MAKE_DIRECTORY
${
CMAKE_BINARY_DIR
}
/src/cuda
)
SET
(
source_file
${
file
}
)
SET
(
source_file
${
CMAKE_CURRENT_SOURCE_DIR
}
/
${
file
}
)
# Note that -cuda generates a .c file not a c++ file.
SET_SOURCE_FILES_PROPERTIES
(
${
source_file
}
PROPERTIES CPLUSPLUS ON
)
# MESSAGE("${CUDA_NVCC} ${source_file} ${CUDA_NVCC_FLAGS} ${nvcc_flags} -cuda -o ${generated_file} ${CUDA_NVCC_INCLUDE_ARGS}")
# MESSAGE("${CUDA_NVCC} ${source_file} ${CUDA_NVCC_FLAGS} ${nvcc_flags} -cuda -o ${generated_file} ${CUDA_NVCC_INCLUDE_ARGS}")
...
@@ -341,7 +378,7 @@ MACRO(CUDA_add_custom_commands cuda_target)
...
@@ -341,7 +378,7 @@ MACRO(CUDA_add_custom_commands cuda_target)
COMMENT
"Building NVCC -cubin File:
${
NVCC_generated_cubin_file
}
\n
"
COMMENT
"Building
(
${
CUDA_BUILD_TYPE
}
)
NVCC -cubin File:
${
NVCC_generated_cubin_file
}
\n
"
)
)
ELSE
(
CUDA_BUILD_TYPE MATCHES
"Device"
AND CUDA_BUILD_CUBIN
)
ELSE
(
CUDA_BUILD_TYPE MATCHES
"Device"
AND CUDA_BUILD_CUBIN
)
# Depend on something that will exist.
# Depend on something that will exist.
...
@@ -362,7 +399,7 @@ MACRO(CUDA_add_custom_commands cuda_target)
...
@@ -362,7 +399,7 @@ MACRO(CUDA_add_custom_commands cuda_target)
# MAIN_DEPENDENCY ${source_file}
# MAIN_DEPENDENCY ${source_file}
DEPENDS
${
source_file
}
DEPENDS
${
source_file
}
DEPENDS
${
CUDA_NVCC_DEPEND
}
DEPENDS
${
CUDA_NVCC_DEPEND
}
COMMENT
"Building NVCC Dependency File:
${
NVCC_generated_dependency_file
}
\n
"
COMMENT
"Building
(
${
CUDA_BUILD_TYPE
}
)
NVCC Dependency File:
${
NVCC_generated_dependency_file
}
\n
"
)
)
# Build the CMake readible dependency file
# Build the CMake readible dependency file
...
@@ -391,7 +428,7 @@ MACRO(CUDA_add_custom_commands cuda_target)
...
@@ -391,7 +428,7 @@ MACRO(CUDA_add_custom_commands cuda_target)
--keep
--keep
-cuda -o
${
generated_file
}
-cuda -o
${
generated_file
}
${
CUDA_NVCC_INCLUDE_ARGS
}
${
CUDA_NVCC_INCLUDE_ARGS
}
COMMENT
"Building NVCC
${
source_file
}
:
${
generated_file
}
\n
"
COMMENT
"Building
(
${
CUDA_BUILD_TYPE
}
)
NVCC
${
source_file
}
:
${
generated_file
}
\n
"
)
)
SET
(
cuda_cu_sources
${
cuda_cu_sources
}
${
source_file
}
)
SET
(
cuda_cu_sources
${
cuda_cu_sources
}
${
source_file
}
)
...
@@ -455,3 +492,16 @@ MACRO(CUDA_ADD_EXECUTABLE cuda_target)
...
@@ -455,3 +492,16 @@ MACRO(CUDA_ADD_EXECUTABLE cuda_target)
ENDMACRO
(
CUDA_ADD_EXECUTABLE cuda_target
)
ENDMACRO
(
CUDA_ADD_EXECUTABLE cuda_target
)
###############################################################################
###############################################################################
# ADD EXECUTABLE
###############################################################################
###############################################################################
MACRO
(
CUDA_COMPILE file_variable
)
# Create custom commands and targets for each file.
CUDA_add_custom_commands
(
cuda_compile
${
ARGN
}
)
SET
(
file_variable
${
target_srcs
}
${
cuda_cu_sources
}
)
ENDMACRO
(
CUDA_COMPILE
)
\ No newline at end of file
platforms/cuda/src/CudaPlatform.cpp
View file @
18c9a78a
...
@@ -36,16 +36,6 @@
...
@@ -36,16 +36,6 @@
#include "kernels/gpuTypes.h"
#include "kernels/gpuTypes.h"
#include "System.h"
#include "System.h"
extern
"C"
gpuContext
gpuInit
(
int
natoms
,
int
atomstrwidth
,
int
testmode
,
FILE
*
log
);
extern
"C"
void
gpuShutDown
(
gpuContext
gpu
);
using
namespace
OpenMM
;
using
namespace
OpenMM
;
CudaPlatform
::
CudaPlatform
()
{
CudaPlatform
::
CudaPlatform
()
{
...
@@ -70,7 +60,7 @@ const StreamFactory& CudaPlatform::getDefaultStreamFactory() const {
...
@@ -70,7 +60,7 @@ const StreamFactory& CudaPlatform::getDefaultStreamFactory() const {
void
CudaPlatform
::
contextCreated
(
OpenMMContextImpl
&
context
)
const
{
void
CudaPlatform
::
contextCreated
(
OpenMMContextImpl
&
context
)
const
{
int
numAtoms
=
context
.
getSystem
().
getNumAtoms
();
int
numAtoms
=
context
.
getSystem
().
getNumAtoms
();
_gpuContext
*
gpu
=
gpuInit
(
numAtoms
,
0
/* ignored? */
,
0
,
stdout
);
_gpuContext
*
gpu
=
(
_gpuContext
*
)
gpuInit
(
numAtoms
);
context
.
setPlatformData
(
gpu
);
context
.
setPlatformData
(
gpu
);
}
}
...
...
platforms/reference/tests/TestReferenceRandom.cpp
View file @
18c9a78a
...
@@ -41,7 +41,6 @@ using namespace OpenMM;
...
@@ -41,7 +41,6 @@ using namespace OpenMM;
using
namespace
std
;
using
namespace
std
;
void
testGaussian
()
{
void
testGaussian
()
{
mt_init
(
0
);
const
int
numValues
=
10000000
;
const
int
numValues
=
10000000
;
double
mean
=
0.0
;
double
mean
=
0.0
;
double
var
=
0.0
;
double
var
=
0.0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment