[polly] r311471 - [GPUJIT] Make max managed pointers an environment variable.
Siddharth Bhat via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 22 10:32:27 PDT 2017
Author: bollu
Date: Tue Aug 22 10:32:27 2017
New Revision: 311471
URL: http://llvm.org/viewvc/llvm-project?rev=311471&view=rev
Log:
[GPUJIT] Make max managed pointers an environment variable.
This was originally a `#define`. It is much easier to play around with
this as an environment variable when we run on large programs.
Differential Revision: https://reviews.llvm.org/D37012
Modified:
polly/trunk/tools/GPURuntime/GPUJIT.c
Modified: polly/trunk/tools/GPURuntime/GPUJIT.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/tools/GPURuntime/GPUJIT.c?rev=311471&r1=311470&r2=311471&view=diff
==============================================================================
--- polly/trunk/tools/GPURuntime/GPUJIT.c (original)
+++ polly/trunk/tools/GPURuntime/GPUJIT.c Tue Aug 22 10:32:27 2017
@@ -30,6 +30,7 @@
#include <dlfcn.h>
#include <stdarg.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -1419,21 +1420,33 @@ static void launchKernelCUDA(PollyGPUFun
}
// Maximum number of managed memory pointers.
-#define MAX_POINTERS 4000
+#define DEFAULT_MAX_POINTERS 4000
// For the rationale behing a list of free pointers, see `polly_freeManaged`.
-void *g_managedptrs[MAX_POINTERS];
-int g_nmanagedptrs = 0;
+void **g_managedptrs;
+unsigned long long g_nmanagedptrs = 0;
+unsigned long long g_maxmanagedptrs = 0;
+
+__attribute__((constructor)) static void initManagedPtrsBuffer() {
+ g_maxmanagedptrs = DEFAULT_MAX_POINTERS;
+ const char *maxManagedPointersString = getenv("POLLY_MAX_MANAGED_POINTERS");
+ if (maxManagedPointersString)
+ g_maxmanagedptrs = atoll(maxManagedPointersString);
+
+ g_managedptrs = (void **)malloc(sizeof(void *) * g_maxmanagedptrs);
+}
// Add a pointer as being allocated by cuMallocManaged
void addManagedPtr(void *mem) {
- assert(g_nmanagedptrs < MAX_POINTERS && "We have hit the maximum number of "
- "managed pointers allowed. Increase "
- "MAX_POINTERS");
+ assert(g_maxmanagedptrs > 0 && "g_maxmanagedptrs was set to 0!");
+ assert(g_nmanagedptrs < g_maxmanagedptrs &&
+ "We have hit the maximum number of "
+ "managed pointers allowed. Set the "
+ "POLLY_MAX_MANAGED_POINTERS environment variable. ");
g_managedptrs[g_nmanagedptrs++] = mem;
}
int isManagedPtr(void *mem) {
- for (int i = 0; i < g_nmanagedptrs; i++) {
+ for (unsigned long long i = 0; i < g_nmanagedptrs; i++) {
if (g_managedptrs[i] == mem)
return 1;
}
More information about the llvm-commits
mailing list