summaryrefslogtreecommitdiffstats
path: root/Tests/CudaOnly/ResolveDeviceSymbols/file2.cu
diff options
context:
space:
mode:
authorRobert Maynard <robert.maynard@kitware.com>2017-04-25 20:09:56 (GMT)
committerRobert Maynard <robert.maynard@kitware.com>2017-04-26 20:18:25 (GMT)
commit493671a5212c6548b2d7376c7065f5f76692a792 (patch)
treeb6e861120d50f15946603919b3637806a4e93596 /Tests/CudaOnly/ResolveDeviceSymbols/file2.cu
parent8fb85c68bb0090b44df22c27dabc03da63602e5e (diff)
downloadCMake-493671a5212c6548b2d7376c7065f5f76692a792.zip
CMake-493671a5212c6548b2d7376c7065f5f76692a792.tar.gz
CMake-493671a5212c6548b2d7376c7065f5f76692a792.tar.bz2
CUDA: Static libraries can now explicitly resolve device symbols
If a static library has the property CUDA_RESOLVE_DEVICE_SYMBOLS enabled it will now perform the device link step. The normal behavior is to delay calling device link until the static library is consumed by a shared library or an executable.
Diffstat (limited to 'Tests/CudaOnly/ResolveDeviceSymbols/file2.cu')
-rw-r--r--Tests/CudaOnly/ResolveDeviceSymbols/file2.cu25
1 files changed, 25 insertions, 0 deletions
diff --git a/Tests/CudaOnly/ResolveDeviceSymbols/file2.cu b/Tests/CudaOnly/ResolveDeviceSymbols/file2.cu
new file mode 100644
index 0000000..278fd6c
--- /dev/null
+++ b/Tests/CudaOnly/ResolveDeviceSymbols/file2.cu
@@ -0,0 +1,25 @@
+
+#include "file2.h"
+
+result_type __device__ file1_func(int x);
+
+result_type_dynamic __device__ file2_func(int x)
+{
+ const result_type r = file1_func(x);
+ const result_type_dynamic rd{ r.input, r.sum, true };
+ return rd;
+}
+
+static __global__ void file2_kernel(result_type_dynamic& r, int x)
+{
+ // call static_func which is a method that is defined in the
+ // static library that is always out of date
+ r = file2_func(x);
+}
+
+int file2_launch_kernel(int x)
+{
+ result_type_dynamic r;
+ file2_kernel<<<1, 1>>>(r, x);
+ return r.sum;
+}