diff options
Diffstat (limited to 'final/runtime/test/api/omp_pause_resource.c')
-rw-r--r-- | final/runtime/test/api/omp_pause_resource.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/final/runtime/test/api/omp_pause_resource.c b/final/runtime/test/api/omp_pause_resource.c new file mode 100644 index 0000000..32c1120 --- /dev/null +++ b/final/runtime/test/api/omp_pause_resource.c @@ -0,0 +1,58 @@ +// RUN: %libomp-compile-and-run +#include <stdio.h> +#include "omp_testsuite.h" + +int test_omp_pause_resource() { + int fails, nthreads, my_dev; + + fails = 0; + nthreads = 0; + my_dev = omp_get_initial_device(); + +#pragma omp parallel +#pragma omp single + nthreads = omp_get_num_threads(); + + if (omp_pause_resource(omp_pause_soft, my_dev)) + fails++; + +#pragma omp parallel shared(nthreads) +#pragma omp single + nthreads = omp_get_num_threads(); + + if (nthreads == 0) + fails++; + if (omp_pause_resource(omp_pause_hard, my_dev)) + fails++; + nthreads = 0; + +#pragma omp parallel shared(nthreads) +#pragma omp single + nthreads = omp_get_num_threads(); + + if (nthreads == 0) + fails++; + if (omp_pause_resource_all(omp_pause_soft)) + fails++; + nthreads = 0; + +#pragma omp parallel shared(nthreads) +#pragma omp single + nthreads = omp_get_num_threads(); + + if (nthreads == 0) + fails++; + return fails == 0; +} + +int main() { + int i; + int num_failed = 0; + + for (i = 0; i < REPETITIONS; i++) { + if (!test_omp_pause_resource()) { + num_failed++; + } + } + return num_failed; +} |