[PATCH] D33198: Header file to help forcibly link GPURuntime
Singapuram Sanjay Srivallabh via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue May 23 06:27:02 PDT 2017
singam-sanjay updated this revision to Diff 99895.
singam-sanjay added a comment.
Not pulling in entire GPUJIT anymore.
Repository:
rL LLVM
https://reviews.llvm.org/D33198
Files:
CMakeLists.txt
include/polly/Support/LinkGPURuntime.h
Index: include/polly/Support/LinkGPURuntime.h
===================================================================
--- /dev/null
+++ include/polly/Support/LinkGPURuntime.h
@@ -0,0 +1,45 @@
+//===- Support/LinkGPURuntime.h -- Headerfile to help force-link GPURuntime --------------------===//
+//////
+////// The LLVM Compiler Infrastructure
+//////
+////// This file is distributed under the University of Illinois Open Source
+////// License. See LICENSE.TXT for details.
+//////
+//////===----------------------------------------------------------------------===//
+//////
+////// This header helps pull in libGPURuntime.so
+//////
+//////===----------------------------------------------------------------------===//
+//////
+//
+#ifndef POLLY_LINK_GPURUNTIME
+#define POLLY_LINK_GPURUNTIME
+
+extern "C" {
+#include "GPURuntime/GPUJIT.h"
+}
+
+namespace polly {
+ struct ForceGPURuntimeLinking {
+ ForceGPURuntimeLinking() {
+ if (std::getenv("bar") != (char*) -1)
+ return;
+ // We must reference GPURuntime in such a way that compilers will not
+ // delete it all as dead code, even with whole program optimization,
+ // yet is effectively a NO-OP. As the compiler isn't smart enough
+ // to know that getenv() never returns -1, this will do the job.
+ polly_initContextCL();
+ polly_initContextCUDA();
+ polly_getKernel(nullptr, nullptr);
+ polly_freeKernel(nullptr);
+ polly_copyFromHostToDevice(nullptr, nullptr, 0);
+ polly_copyFromDeviceToHost(nullptr, nullptr, 0);
+ polly_synchronizeDevice();
+ polly_launchKernel(nullptr, 0, 0, 0, 0, 0, nullptr);
+ polly_freeDeviceMemory(nullptr);
+ polly_freeContext(nullptr);
+ polly_synchronizeDevice();
+ }
+ } structure;
+}
+#endif
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -206,6 +206,7 @@
${JSONCPP_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/lib/External/pet/include
${CMAKE_CURRENT_SOURCE_DIR}/lib/External
+ ${CMAKE_CURRENT_SOURCE_DIR}/tools
${CMAKE_CURRENT_BINARY_DIR}/include
)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D33198.99895.patch
Type: text/x-patch
Size: 2157 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170523/fdf2cd9e/attachment.bin>
More information about the llvm-commits
mailing list