tCMake now used as the build system - sphere - GPU-based 3D discrete element me… | |
git clone git://src.adamsgaard.dk/sphere | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit e498b289dd22fb495f3c0891039f8015b19cf28c | |
parent d30540ae62abcfd984b3eda396cf534e72aaad66 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Wed, 19 Dec 2012 11:01:44 +0100 | |
CMake now used as the build system | |
Diffstat: | |
A CMakeLists.txt | 20 ++++++++++++++++++++ | |
M README.rst | 20 +++++++++++++++----- | |
A src/CMakeLists.txt | 27 +++++++++++++++++++++++++++ | |
3 files changed, 62 insertions(+), 5 deletions(-) | |
--- | |
diff --git a/CMakeLists.txt b/CMakeLists.txt | |
t@@ -0,0 +1,20 @@ | |
+# Create input/output folders | |
+FILE(MAKE_DIRECTORY input) | |
+FILE(MAKE_DIRECTORY output) | |
+FILE(MAKE_DIRECTORY img_out) | |
+ | |
+# The name of the project. | |
+PROJECT(sphere_CUDA) | |
+ | |
+# CMake minimum version required | |
+# FindCUDA script is distributed since version 2.8 | |
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8) | |
+ | |
+# Find CUDA | |
+FIND_PACKAGE(CUDA) | |
+# Find OpenMP | |
+FIND_PACKAGE(OpenMP) | |
+ | |
+ | |
+#Add source directory to project. | |
+ADD_SUBDIRECTORY(src) | |
diff --git a/README.rst b/README.rst | |
t@@ -12,7 +12,8 @@ Requirements | |
------------ | |
The build requirements are: | |
* A Nvidia CUDA-supported version of Linux or Mac OS X (see the `CUDA toolki… | |
- * The `GNU Compiler Collection <http://gcc.gnu.org/>`_ (GCC) | |
+ * `CMake <http://cmake.org>`_, version 2.8 or higher | |
+ * A C/C++ compiler toolkit, e.g. the `GNU Compiler Collection <http://gcc.gn… | |
* The `Nvidia CUDA toolkit and SDK <https://developer.nvidia.com/cuda-downlo… | |
The runtime requirements are: | |
t@@ -31,7 +32,7 @@ Optional tools, required for building the documentation: | |
* `Doxygen <http://www.stack.nl/~dimitri/doxygen/>`_ | |
* `Breathe <http://michaeljones.github.com/breathe/>`_ | |
-Obtaining SPHERE | |
+Obtaining sphere | |
---------------- | |
The best way to keep up to date with subsequent updates, bugfixes | |
and development, is to use the Git version control system. | |
t@@ -41,6 +42,15 @@ To obtain a local copy, execute: | |
Build instructions | |
------------------ | |
- ``cd src/ && make`` | |
- | |
-This will generate a command-line executable in the root folder. | |
+Sphere is built using `cmake`, the platform-specific c/c++ compilers, | |
+and `nvcc` from the cuda toolkit. Execute the following commands from | |
+the root directory:: | |
+ cmake . | |
+ make | |
+ | |
+In some cases the CMake FindCUDA module will have troubles locating the | |
+CUDA SDK directory. In that case, modify the `NVSDKCOMPUTE_ROOT` environment | |
+variable in `INSTALL.sh`, and execute it. | |
+ | |
+After a successfull installation, the `sphere` executable will be located | |
+in the root folder. | |
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt | |
t@@ -0,0 +1,27 @@ | |
+# Create input/output folders | |
+FILE(MAKE_DIRECTORY input) | |
+FILE(MAKE_DIRECTORY output) | |
+FILE(MAKE_DIRECTORY img_out) | |
+ | |
+# Link with libcutil (expected to be in ${CUDA_SDK_ROOT_DIR}/C/lib) | |
+#LINK_LIBRARIES("-L${CUDA_SDK_ROOT_DIR}/lib -lcutil") # For 32 bit syst… | |
+LINK_LIBRARIES("-L${CUDA_SDK_ROOT_DIR}/lib -lcutil_x86_64") # For 64 bit syste… | |
+ | |
+# Ohter folders to include | |
+INCLUDE_DIRECTORIES("${CUDA_SDK_ROOT_DIR}/common/inc") | |
+INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/src") | |
+ | |
+# Include FindCUDA script | |
+INCLUDE(FindCUDA) | |
+ | |
+# Additional NVCC command line arguments | |
+# NOTE: Multiple arguments must be semi-colon selimited | |
+SET(CUDA_NVCC_FLAGS "--use_fast_math;-O3;-gencode=arch=compute_20,code=\"sm_20… | |
+#SET(CUDA_NVCC_FLAGS "--use_fast_math;-O3;-gencode=arch=compute_20,code=\"sm_2… | |
+ | |
+ | |
+ | |
+# Rule to build executable program | |
+CUDA_ADD_EXECUTABLE(../sphere main.cpp file_io.cpp sphere.cpp device.cu utilit… | |
+CUDA_ADD_EXECUTABLE(../porosity porosity.cpp file_io.cpp sphere.cpp device.cu … | |
+ |