brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1004 B · d6d8697 Raw
43 lines · cpp
1// RUN: %libomptarget-compilexx-run-and-check-generic2 3#include <omp.h>4 5#include <cassert>6#include <iostream>7 8int main(int argc, char *argv[]) {9#pragma omp parallel for10  for (int i = 0; i < 16; ++i) {11    for (int n = 1; n < (1 << 13); n <<= 1) {12      void *p = omp_target_alloc(n * sizeof(int), 0);13      omp_target_free(p, 0);14    }15  }16 17#pragma omp parallel for18  for (int i = 0; i < 16; ++i) {19    for (int n = 1; n < (1 << 13); n <<= 1) {20      int *p = (int *)omp_target_alloc(n * sizeof(int), 0);21#pragma omp target teams distribute parallel for is_device_ptr(p)22      for (int j = 0; j < n; ++j) {23        p[j] = i;24      }25      int buffer[n];26#pragma omp target teams distribute parallel for is_device_ptr(p)              \27    map(from : buffer)28      for (int j = 0; j < n; ++j) {29        buffer[j] = p[j];30      }31      for (int j = 0; j < n; ++j) {32        assert(buffer[j] == i);33      }34      omp_target_free(p, 0);35    }36  }37 38  std::cout << "PASS\n";39  return 0;40}41 42// CHECK: PASS43