105c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh#include <stdio.h>
205c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh#include <stdlib.h>
305c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh#include <omp.h>
405c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh#include <sys/sysconf.h>
505c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh
605c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsiehint main (int argc, char *argv[])
705c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh{
805c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh    int nthreads, tid;
905c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh    printf("SC_NPROCESSORS_ONLN: %d\n", sysconf (_SC_NPROCESSORS_ONLN));
10c1ed11ce27477f27da49da85e953475b6c47d992Andrew Hsieh    printf("SC_NPROCESSORS_CONF: %d\n", sysconf (_SC_NPROCESSORS_CONF));
1105c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh  #pragma omp parallel default(shared) private(nthreads, tid)
1205c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh    /* Fork a team of threads giving them their own copies of variables */
1305c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh    {
1405c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh      /* Obtain thread number */
1505c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh        tid = omp_get_thread_num();
1605c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh        printf("Hello World from thread = %d\n", tid);
1705c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh      /* Only master thread does this */
1805c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh        if (tid == 0)
1905c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh        {
2005c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh            nthreads = omp_get_num_threads();
2105c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh            printf("Number of threads = %d\n", nthreads);
2205c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh        }
2305c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh    }  /* All threads join master thread and disband */
2405c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh
2505c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh  return 0;
2605c9d7bff3feb6be2b5cfb9a83caa612baf66104Andrew Hsieh}
27