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?
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With