Why OpenMP program runs only in one thread
Solution 1
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.
Solution 2
I had this problem in visual studio and finally I understood that I had forgotten to enable Open MP support in visual studio. It didn't give me any error but executed the program just for one thread
Solution 3
first choose project _> properties -> c/c++ -> language -> open mp support -> choose yes and then you will find above conformance mode (make it no )
Admin
Updated on June 04, 2022Comments
-
Admin almost 2 years
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 atthread 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?