Why OpenMP program runs only in one thread

16,373

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 )

Share:
16,373
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    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 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?