summaryrefslogtreecommitdiff
path: root/offload/test/api/omp_device_managed_memory_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'offload/test/api/omp_device_managed_memory_alloc.c')
-rw-r--r--offload/test/api/omp_device_managed_memory_alloc.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/offload/test/api/omp_device_managed_memory_alloc.c b/offload/test/api/omp_device_managed_memory_alloc.c
new file mode 100644
index 000000000000..c48866922deb
--- /dev/null
+++ b/offload/test/api/omp_device_managed_memory_alloc.c
@@ -0,0 +1,28 @@
+// RUN: %libomptarget-compile-run-and-check-generic
+// RUN: %libomptarget-compileopt-run-and-check-generic
+
+#include <omp.h>
+#include <stdio.h>
+
+int main() {
+ const int N = 64;
+
+ // Allocates device managed memory that is shared between the host and device.
+ int *shared_ptr =
+ omp_alloc(N * sizeof(int), llvm_omp_target_shared_mem_alloc);
+
+#pragma omp target teams distribute parallel for is_device_ptr(shared_ptr)
+ for (int i = 0; i < N; ++i) {
+ shared_ptr[i] = 1;
+ }
+
+ int sum = 0;
+ for (int i = 0; i < N; ++i)
+ sum += shared_ptr[i];
+
+ // CHECK: PASS
+ if (sum == N)
+ printf("PASS\n");
+
+ omp_free(shared_ptr, llvm_omp_target_shared_mem_alloc);
+}