This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libgomp/37586] OpenMP thinks that I have 1 processor on an 8 processor pc
- From: "rrpeter at sandia dot gov" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Sep 2008 15:54:23 -0000
- Subject: [Bug libgomp/37586] OpenMP thinks that I have 1 processor on an 8 processor pc
- References: <bug-37586-4376@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #6 from rrpeter at sandia dot gov 2008-09-30 15:54 -------
Subject: Re: OpenMP thinks that I have 1 processor
on an 8 processor pc
jakub at gcc dot gnu dot org wrote:
> ------- Comment #5 from jakub at gcc dot gnu dot org 2008-09-20 08:22 -------
> No, I didn't mean to ask you to try to work around it, I asked you to
> investigate why omp_get_num_procs returns 1 instead of 8. The gcc 4.3 vs. 4.4
> difference only affects omp_get_max_threads, not omp_get_num_procs, so even
> omp_get_num_procs reports 1, the options are 1) the process has affinity set to
> just one CPU 2) GOMP_CPU_AFFINITY has been used 3) you have omp_get_num_procs
> defined elsewhere in your program, verify that libgomp function is really used.
> strace -f -e sched_getaffinity dump of the program could reveal 1), 2) can be
> determined by looking at the scripts you use to start the program (or by adding
> getenv call in the program to print that for you), 3) can be seen in the
> debugger and/or by using LD_DEBUG=all env var.
>
>
> --
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37586
>
> ------- You are receiving this mail because: -------
> You reported the bug, or are watching the reporter.
>
>
Hi Jakub,
I finally have a bit of time respond to your last email!
I may be new enough to this to be missing something important. Why
don't we start at the beginning?
I compiled everything with -fopenmp flag on the compiler (4.3.2 is the
version for g++ and gcc)
*****************************************
Openmp code exists in only one place in my software.
[hopper@babs rwm]$ find . -name "*.*pp" -exec grep -n -H omp.h {} \;
./umbraModCDF/umbModCDFDataSet.cpp:237:#include <omp.h>
[hopper@babs rwm]$ find . -name "*.*pp" -exec grep -n -H
omp_get_num_procs {} \;
./umbraModCDF/umbModCDFDataSet.cpp:246: cerr << " OPENMP is " <<
_OPENMP << " Number of processors available:" << omp_get_num_procs() <<
" MAX number of OpenMP threads " << omp_get_max_threads() << endl;
[hopper@babs rwm]$
All of the OpenMP code that I have is in the following function
**********************************
#include <omp.h>
void test_openmp()
{
cerr << "\nEnter test_openmp() " << endl;
#ifdef _OPENMP
// omp_set_dynamic(true);
// omp_set_num_threads(8);
cerr << " OPENMP is " << _OPENMP << " Number of processors
available:" << omp_get_num_procs() << " MAX number of OpenMP threads "
<< omp_get_max_threads() << endl;
char *GCU = getenv("GOMP_CPU_AFFINITY");
if(GCU != NULL)
cerr << " GOMP_CPU_AFFINITY is " << GCU << "!!!!\n"<< endl;
else
cerr << " GOMP_CPU_AFFINITY is unknown" << endl;
#endif
cerr << "\nExit test_openmp()\n" << endl;
cerr.flush();
}
***********
Output snippet is:
Enter test_openmp()
OPENMP is 200505 Number of processors available:1 MAX number of OpenMP
threads 1
GOMP_CPU_AFFINITY is unknown
Exit test_openmp()
************
I ran strace and I got some results. In the output I see:
sched_getaffinity(3502, 128, { ff, 0, 0, 0 }) = 32
....
sched_getaffinity(3502, 128, { 1, 0, 0, 0 }) = 32
...
sched_getaffinity(3502, 128, { 1, 0, 0, 0 }) = 32
I will let you interpret the output which is reproduce in full below.
[hopper@babs rwm]$ strace -f -e sched_getaffinity uview
./viewer_scripts/viewer_CDF.tcl
Process 3503 attached (waiting for parent)
Process 3503 resumed (parent 3502 ready)
Process 3503 detached
--- SIGCHLD (Child exited) @ 0 (0) ---
provided packge "ucl" version 4.7.1
STATUS> Umbra installed at UmbraPath -> /home/hopper/UMBRA_4
STATUS> Use UmbraPath variable to refer to this location
STATUS> uview is using gui from developerViewer
STATUS> loading umbraConfig.tcl from uclLoad.tcl
STATUS> searching for umbra config files in path
/home/hopper/UMBRA_4/umbra/SNL/rwm . /home/hopper/UMBRA_4
library r {umb {4.7.1 debug {Sep 29 2008} 13:08:47}} {usg {4.7.1 debug
{Sep 29 2008} 13:08:56}} {ucl {4.7.1 debug {Sep 29 2008} 13:08:55}}
STATUS> loading ustk library from uclLoad.tcl
*-----------------------------------------------------------------------------*
* The C-Space Toolkit (C) software contained in this program is
the *
* property of Sandia
Corporation. *
* Copyright 1995-2003 (C) Sandia Corporation. All rights
reserved. *
*
*
* The C-Space Toolkit (``CSTk'') was developed at Sandia
National *
* Laboratories, which is operated by the Sandia Corporation under
contract *
* for the United States Department of Energy. The CSTk is is protected
by *
* copyright under the laws of the United States. CSTk software is not
to *
* be used, disclosed, or duplicated without explicit written
authorization *
* from Sandia
Corporation. *
*-----------------------------------------------------------------------------*
STATUS> loading general.tcl from umbra/core/ucl directory
STATUS> loading iTclUtilities.tcl from umbra/core/ucl directory
STATUS> loading monitor.tcl from umbra/core/ucl directory
STATUS> loading XmlSaxParserCore.tcl from umbra/core/ucl directory
STATUS> loading XmlUtils.tcl from umbra/core/ucl directory
STATUS> loading umbTime.tcl from from umbra/core/ucl directory
STATUS> Time Modules simClock & wallClock built
STATUS> loading tkconUmb.tcl from uclLoad.tcl
loading tkconUmb.tcl ... modified version of tkcon.tcl for umbra
STATUS> loading umbraConsole.tcl from uclLoad.tcl
STATUS> loading mkConsoleUmb.tcl from uclLoad.tcl
STATUS> Making the umbra console and a usg::Scene scene
STATUS> All tcl output will now go to umbra console
STATUS> Only cout/cerr from C++ will go to this window
--------------------------------------------------------------------------------
NOTE: usg::Scene using usg default data file path list
path =
.:/usr/local/share/OpenSceneGraph/data:/usr/local/share/OpenSceneGraph/data/Env:/usr/local/share/OpenSceneGraph/data/fonts:/usr/local/share/OpenSceneGraph/data/Images:/usr/share/OpenSceneGraph/data:/usr/share/OpenSceneGraph/data/Env:/usr/share/OpenSceneGraph/data/fonts:/usr/share/OpenSceneGraph/data/Images
camera number: 0
sched_getaffinity(3502, 128, { ff, 0, 0, 0 }) = 32
INFO> navigation mode set to umbra
Warning: font file "fonts/arial.ttf" not found.
Setting savConfigCB to '::guiWrapper saveConfig'
sched_getaffinity(3502, 128, { 1, 0, 0, 0 }) = 32
sLoadFile filename:/home/vision_data/geometry_objects/test.cdf
fileType: lineRowCnt=-1 lineColCnt=-1
std::string UmbModCDFDataSet::LoadFile(const s....
Enter test_openmp()
sched_getaffinity(3502, 128, { 1, 0, 0, 0 }) = 32
OPENMP is 200505 Number of processors available:1 MAX number of OpenMP
threads 1
GOMP_CPU_AFFINITY is unknown
Exit test_openmp()
After test_openmp()
Processing CDF File: /home/vision_data/geometry_objects/test.cdf
M(9): Start of CDF Version 1.0 stream
M(1292): End of CDF Version 1.0 stream
Entering UmbModCutCDFDataSet::_CutData(...) cdf_cut
Acummulator replacing data. New CDF contains 469 points.
No texturing as there are no images
Plotting data for 469 points and 466 polygons.
entering CDFDataSet::plotData
Shape:0 / 13 NumberPoints =8 NumberPolygns=12 NumberLineSegments=0
Shape:1 / 13 NumberPoints =8 NumberPolygns=12 NumberLineSegments=0
Shape:2 / 13 NumberPoints =8 NumberPolygns=12 NumberLineSegments=0
Shape:3 / 13 NumberPoints =62 NumberPolygns=120 NumberLineSegments=0
Shape:4 / 13 NumberPoints =62 NumberPolygns=120 NumberLineSegments=0
Shape:5 / 13 NumberPoints =14 NumberPolygns=24 NumberLineSegments=0
Shape:6 / 13 NumberPoints =14 NumberPolygns=24 NumberLineSegments=0
Shape:7 / 13 NumberPoints =12 NumberPolygns=20 NumberLineSegments=0
Shape:8 / 13 NumberPoints =62 NumberPolygns=120 NumberLineSegments=0
Shape:9 / 13 NumberPoints =4 NumberPolygns=2 NumberLineSegments=0
Shape:10 / 13 NumberPoints =112 NumberPolygns=0 NumberLineSegments=0
Shape:11 / 13 NumberPoints =60 NumberPolygns=0 NumberLineSegments=0
Shape:12 / 13 NumberPoints =36 NumberPolygns=0 NumberLineSegments=0
Shape:13 / 13 NumberPoints =7 NumberPolygns=0 NumberLineSegments=6
exiting CDFDataSet::plotData
DEBUG: Trying to exit.
DEBUG: main loop all done... bye.
End-of-run CumTimer timing results
Number of entries: 2 Total run time: 2.62966 secs
Id:cdf_cutUmbModCutCDFDataSet::_CutData():
TotalTime:6.91414e-06 Frac:2.62929e-06 Count:1
Id:cdf_rot_tr_sclRotateTranslateScaleData()
TotalTime:6.50883e-05 Frac:2.47516e-05 Count:1
BasicDrawParmsGuarantor::cleanup()
cstk::ilWin::finalCleanup() Cleaning up known windows.
DistEngine::DeleteDfltInst() called.
[hopper@babs rwm]$
***************************************
I hope this helps to find the problem! Please email me with further
questions as they arise,
Ralph
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37586