diff options
author | Robert Maynard <robert.maynard@kitware.com> | 2016-11-01 20:11:51 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-11-14 21:40:50 (GMT) |
commit | 7b9131da64b4b569e10ec145fab0c8e22fa69761 (patch) | |
tree | bf3cf32fa6515c1d197e7950262094290b797e6e /Tests/Cuda/ObjectLibrary | |
parent | 9cf5b98d54497b425fe341e4ad5bc188d9fa5445 (diff) | |
download | CMake-7b9131da64b4b569e10ec145fab0c8e22fa69761.zip CMake-7b9131da64b4b569e10ec145fab0c8e22fa69761.tar.gz CMake-7b9131da64b4b569e10ec145fab0c8e22fa69761.tar.bz2 |
CUDA: Add tests to verify CUDA compiler works properly.
Diffstat (limited to 'Tests/Cuda/ObjectLibrary')
-rw-r--r-- | Tests/Cuda/ObjectLibrary/CMakeLists.txt | 12 | ||||
-rw-r--r-- | Tests/Cuda/ObjectLibrary/main.cpp | 20 | ||||
-rw-r--r-- | Tests/Cuda/ObjectLibrary/static.cpp | 6 | ||||
-rw-r--r-- | Tests/Cuda/ObjectLibrary/static.cu | 21 |
4 files changed, 59 insertions, 0 deletions
diff --git a/Tests/Cuda/ObjectLibrary/CMakeLists.txt b/Tests/Cuda/ObjectLibrary/CMakeLists.txt new file mode 100644 index 0000000..cbe1e67 --- /dev/null +++ b/Tests/Cuda/ObjectLibrary/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.7) +project (CudaObjectLibrary CUDA CXX) +#Goal for this example: + +#build a object files some with cuda and some without than +#embed these into an executable + +add_library(CudaMixedObjectLib OBJECT static.cu static.cpp) + +add_executable(CudaObjectLibrary + main.cpp + $<TARGET_OBJECTS:CudaMixedObjectLib>) diff --git a/Tests/Cuda/ObjectLibrary/main.cpp b/Tests/Cuda/ObjectLibrary/main.cpp new file mode 100644 index 0000000..1a70a99 --- /dev/null +++ b/Tests/Cuda/ObjectLibrary/main.cpp @@ -0,0 +1,20 @@ + +#include <iostream> + +int static_func(int); +int file1_sq_func(int); + +void test_functions() +{ + file1_sq_func(static_func(42)); +} + +int main(int argc, char** argv) +{ + test_functions(); + std::cout + << "this executable doesn't use cuda code, just call methods defined" + << std::endl; + std::cout << "in object files that have cuda code" << std::endl; + return 0; +} diff --git a/Tests/Cuda/ObjectLibrary/static.cpp b/Tests/Cuda/ObjectLibrary/static.cpp new file mode 100644 index 0000000..6db1f91 --- /dev/null +++ b/Tests/Cuda/ObjectLibrary/static.cpp @@ -0,0 +1,6 @@ +int file1_sq_func(int); + +int static_func(int x) +{ + return file1_sq_func(x); +} diff --git a/Tests/Cuda/ObjectLibrary/static.cu b/Tests/Cuda/ObjectLibrary/static.cu new file mode 100644 index 0000000..2374c23 --- /dev/null +++ b/Tests/Cuda/ObjectLibrary/static.cu @@ -0,0 +1,21 @@ + +#include <cuda.h> +#include <cuda_runtime.h> +#include <iostream> + +int __host__ file1_sq_func(int x) +{ + cudaError_t err; + int nDevices = 0; + err = cudaGetDeviceCount(&nDevices); + if(err != cudaSuccess) + { + std::cout << "nDevices: " << nDevices << std::endl; + std::cout << "err: " << err << std::endl; + return 1; + } + std::cout << "this library uses cuda code" << std::endl; + std::cout << "you have " << nDevices << " devices that support cuda" << std::endl; + + return x * x; +} |