On Sun, Feb 17, 2008 at 12:00:51PM -0500, CSights wrote:
> 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!
Perhaps Darwin doesn't define _SC_NPROCESSORS_ONLN or
sysconf (_SC_NPROCESSORS_ONLN) doesn't work properly on Darwin?
If so, someone familiar with Darwin needs to provide (a tested) darwin specific
proc.c implementation which can be added to libgomp/config/darwin/proc.c
to replace the libgomp/config/posix/proc.c version.
Jakub