#include #include #include #include void workload() { // We are simulating a workload by sleeping the thread // This is obviously not an accurate representation // of real computation, but it works for this example usleep(100000); } int main(int argc, const char *argv[]) { // this sets the default number of threads to 5 // you can still overwrite the number of threads used in a parallel region with a clause omp_set_num_threads(5); // We use openMP functions to measure our programs run time. double start = omp_get_wtime(); #pragma omp parallel { // A for loop inside a parallel section can be parallelized using // the for directive // TODO: Share the workload of the loop below among all threads for (int i = 0; i<10; i++) { workload(); printf("Iteration %d in thread: %d\n", i, omp_get_thread_num()); } } double end = omp_get_wtime(); printf("That took a total of %f seconds.\n", end - start); return 0; }