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