1ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh#include <stdio.h>
2ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh#include <stdlib.h>
3ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh#include <omp.h>
4ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh
5ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsiehint main(int argc, char *argv[])
6ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh{
7ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh    int iam = 0, np = 1;
8ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh
9ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh    if (!getenv("OMP_NUM_THREADS"))
10ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh        omp_set_num_threads(4);
11ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh
12ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh  #pragma omp parallel default(shared) private(iam, np)
13ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh    {
14ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh      #if defined(_OPENMP)
15ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh        np = omp_get_num_threads();
16ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh        iam = omp_get_thread_num();
17ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh      #endif
18ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh        printf("Hello from thread %d out of %d\n", iam, np);
19ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh    }
20ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh
21ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh    return 0;
22ba7c0c855e4487629cf7150e463a75fde774bf66Andrew Hsieh}
23