Why OpenMP program runs only in one thread

c++, multithreading, openmp

Solution

Your problem is here:

#pragma omp parallel for num_thread(4) <---

The correct clause is `num_threads(4)`, not `num_thread(4)`. Incorrect openmp pragmas are ignored and so you ended up with a sequential program. :)

I'm surprised you didn't get a compiler warning, because I did.

Problem

I just tried OpenMP with a simple c program ``` test() { for(int i=0;i<100000000;i++); } main() { printf("Num of CPU: %d\n", omp_get_num_procs()); #pragma omp parallel for num_threads(4) for(int i=0;i<100;i++) test(); } ``` Compiled with `g++ -fopenmp`. It can correctly print out that I have 4 CPUs, but all test functions are running at `thread 0`. I tried to modify the `OMP_NUM_THREADS`. But it has no effect also. I had everything the same as the online examples but why wouldn't I get it to work?

Original source