#include <stdio.h> #include <unistd.h> #ifdef _OPENMP #include <omp.h> #endif void print_omp_info(const char taskname[], const int sleeptime) { double start_time = omp_get_wtime(); #pragma omp critical printf("procs = %i, rank = %i, size = %i %s\n", omp_get_num_procs(), omp_get_thread_num(), omp_get_num_threads(), taskname); sleep(sleeptime); #pragma omp critical printf("Time consumption: %g\n", omp_get_wtime() - start_time); } int main(int argc, char *argv[]) { #ifdef _OPENMP #pragma omp parallel sections { #pragma omp section print_omp_info("task1", 1); #pragma omp section print_omp_info("task2", 2); } printf("Time resolution: %g\n", omp_get_wtick()); /* procs = 4, rank = 3, size = 4 task2 procs = 4, rank = 0, size = 4 task1 Time consumption: 1.0002 Time consumption: 2.00018 Time resolution: 1e-09 */ #else printf("No OpenMP support\n"); #endif return 0; }