#include #include int main() { int i_am, k, v[5]; v[0]=v[1]=v[2]=v[3]=v[4]=-1; /* Max number of procs and threads. */ printf("num_procs = %d\n", omp_get_num_procs()); printf("max_threads = %d\n", omp_get_max_threads()); /* I have given the following unix-command: setenv OMP_NUM_THREADS 10 (4 is enough). */ /* Set no. of threads dynamically. */ omp_set_num_threads(4); /* A parallel section. Note { }. */ #pragma omp parallel private(i_am) shared(v) { #pragma omp single printf("num_threads = %d\n", omp_get_num_threads()); i_am = omp_get_thread_num(); v[i_am] = i_am; } printf("v = %d %d %d %d %d\n", v[0], v[1], v[2], v[3], v[4]); /* A parallel for-loop. */ #pragma omp parallel for private(k) shared(v) for(k = 0; k < 5; k++) v[k] = k * k; printf("v = %d %d %d %d %d\n", v[0], v[1], v[2], v[3], v[4]); return 0; }