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?