1*41ca9104SJonathan Peyton // RUN: %libomp-compile-and-run 2*41ca9104SJonathan Peyton #include <stdio.h> 3*41ca9104SJonathan Peyton #include <stdlib.h> 4*41ca9104SJonathan Peyton 5*41ca9104SJonathan Peyton int a; 6*41ca9104SJonathan Peyton run(int nteams,int nth)7*41ca9104SJonathan Peytonvoid run(int nteams, int nth) { 8*41ca9104SJonathan Peyton a = 0; 9*41ca9104SJonathan Peyton #pragma omp teams num_teams(nteams) 10*41ca9104SJonathan Peyton { 11*41ca9104SJonathan Peyton #pragma omp parallel num_threads(nth) 12*41ca9104SJonathan Peyton { 13*41ca9104SJonathan Peyton #pragma omp task 14*41ca9104SJonathan Peyton { 15*41ca9104SJonathan Peyton #pragma omp atomic 16*41ca9104SJonathan Peyton a++; 17*41ca9104SJonathan Peyton } 18*41ca9104SJonathan Peyton } 19*41ca9104SJonathan Peyton } 20*41ca9104SJonathan Peyton if (a == 0) 21*41ca9104SJonathan Peyton exit(EXIT_FAILURE); 22*41ca9104SJonathan Peyton } 23*41ca9104SJonathan Peyton main()24*41ca9104SJonathan Peytonint main() { 25*41ca9104SJonathan Peyton int i, nteams, nth; 26*41ca9104SJonathan Peyton for (nteams = 1; nteams <= 2; ++nteams) 27*41ca9104SJonathan Peyton for (nth = 1; nth <= 3; ++nth) 28*41ca9104SJonathan Peyton for (i = 0; i < 10; ++i) { 29*41ca9104SJonathan Peyton printf("run(%d, %d)\n", nteams, nth); 30*41ca9104SJonathan Peyton run(nteams, nth); 31*41ca9104SJonathan Peyton } 32*41ca9104SJonathan Peyton return EXIT_SUCCESS; 33*41ca9104SJonathan Peyton } 34