#include #include #include "compat.h" /* Test several work-distribution and task constructs, so we can generate a * trace that includes most of the states. */ int main(void) { #pragma omp parallel { #pragma omp for for (int i = 0; i < 100; i++) { sleep_us(1); } #pragma omp sections { #pragma omp section { sleep_us(101); printf("101\n"); } #pragma omp section { sleep_us(102); printf("102\n"); } #pragma omp section { sleep_us(103); printf("103\n"); } #pragma omp section { sleep_us(104); printf("104\n"); } } #pragma omp for for (int i = 0; i < 100; i++) { sleep_us(1); } #pragma omp single for (int i = 0; i < 100; i++) { #pragma omp task sleep_us(10); } } #pragma omp parallel { #pragma omp critical sleep_us(20); #pragma omp barrier #pragma omp for for (int i = 0; i < 100; i++) { sleep_us(1); } #pragma omp for schedule(dynamic, 1) for (int i = 0; i < 100; i++) { sleep_us(i); } } // FIXME: Crashes OpenMP-V runtime //#pragma omp distribute parallel for //for (int i = 0; i < 1000; i++) { // sleep_us(1); //} return 0; }