brintos

brintos / llvm-project-archived public Read only

0
0
Text · 800 B · 0b97823 Raw
37 lines · cpp
1// RUN: %libomptarget-compilexx-run-and-check-generic2 3// REQUIRES: gpu4// UNSUPPORTED: nvptx64-nvidia-cuda5// UNSUPPORTED: nvptx64-nvidia-cuda-LTO6// UNSUPPORTED: amdgcn-amd-amdhsa7 8#include <omp.h>9#include <stdio.h>10 11#define N 100000012 13int A[N];14int main() {15  for (int i = 0; i < N; i++)16    A[i] = 1;17 18  int sum[1];19  sum[0] = 0;20 21#pragma omp target teams distribute parallel for num_teams(256)                \22    schedule(static, 1) map(to                                                 \23                            : A[:N]) map(tofrom                                \24                                         : sum[:1])25  {26    for (int i = 0; i < N; i++) {27#pragma omp critical28      { sum[0] += A[i]; }29    }30  }31 32  // CHECK: SUM = 100000033  printf("SUM = %d\n", sum[0]);34 35  return 0;36}37