Hi,
        I'm not able to detect the number of processors using 
omp_get_num_procs()  on 
a macintosh.
        I've installed gcc/g++ v4.3 from hpc.sourceforge.net (the "Tiger" 
version)
[Url 1 below].  (Installed = extracted to /)
$ g++ --version
g++ (GCC) 4.3.0 20080125 (experimental)
        I compile the code below with no problems.
$ g++ -fopenmp main.cpp -o openmpTest
        When the code executes omp_get_num_procs() detects 1 processor.
$ ./openmpTest
num procs 1
thread 0  i: 0
thread 0  i: 1
thread 0  i: 2
thread 0  i: 3
thread 0  i: 4
thread 0  i: 5
thread 0  i: 6
thread 0  i: 7
thread 0  i: 8
thread 0  i: 9

        This macintosh has two physical chips and 2 cores per chip.
$ sysctl hw 
[...]
hw.ncpu: 4
hw.activecpu: 4
[...]

        Does anybody know why omp_get_num_procs() is returning 1 on this 
machine?  
Let me know if you need more info!

Thanks,
        C.


[1]http://prdownloads.sourceforge.net/hpc/gcc-intel-bin.tar.gz?download


-----------------------------------------------------------------------------
// "g++ -fopenmp  main.cpp -o openmpTest"
#include <iostream>

#ifdef _OPENMP          // defined at compile time by -fopenmp
#include <omp.h>
#endif

using namespace std;

int main (int argc, char **argv) {
        int n_iters = 10;

        #ifdef OMP_H                    // defined in header omp.h
        cout<<"num procs "<<omp_get_num_procs()<<endl;
        #pragma omp parallel num_threads(omp_get_num_procs())
        #pragma omp for schedule(dynamic, 1)
        #endif
        for (int i = 0; i < n_iters; ++i) {
                #ifdef OMP_H                    // defined in header omp.h
                cout<<"thread "<<omp_get_thread_num()<<"  ";
                #endif
                cout<<"i: "<<i<<endl;
                sleep(5/(i+1));         // simulate a load
        }

        return 0;
}
-----------------------------------------------------------------------------

Reply via email to