In contrast to MPP where MPI is a standard, in the world of SMP pthreads are de facto standard way to make your program execute in parallel. But there is another standard, OpenMP.
test_parallel.c
test_parallel.c
#include <stdio.h>
#include <unistd.h>
#ifdef _OPENMP
#include <omp.h>
#else
#define omp_get_thread_num() 0
#endif
int main(int argc, char *argv) {
int n = 10;
int i;
#pragma omp parallel
{
printf("thread %d\n", omp_get_thread_num());
#pragma omp for
for (i = 1; i <= n; i++ ) {
sleep(1);
}
}
}
Test
gcc test_parallel.c time ./a.out thread 0 real 0m10.002s user 0m0.000s sys 0m0.001sEnable OpenMP
gcc -fopenmp test_parallel.c time ./a.out thread 3 thread 7 thread 0 thread 4 thread 1 thread 5 thread 6 thread 2 real 0m2.002s user 0m0.009s sys 0m0.004s
No comments:
Post a Comment