#include #include int get_num_threads(); int get_thread_id(); int main() { int nthreads = -1; nthreads = get_num_threads(); printf("\nSerial: %d\n\n",nthreads); // Outer parallel region #pragma omp parallel private(nthreads) { int idx = 0; nthreads = get_num_threads(); idx = get_thread_id(); #pragma omp single printf("Outer parallel: %d\n\n",nthreads); // Inner parallel region #pragma omp parallel num_threads(idx+1) private(nthreads) { nthreads = get_num_threads(); #pragma omp single printf("Inner parallel: %d\n",nthreads); } #pragma omp barrier #pragma omp single printf("\n"); } return 0; } int get_num_threads() { return -1; } int get_thread_id() { return -1; }