I went to try to reproduce the problem Larry Baker reported w/ the PGI 10.3 compilers and undefined references in libopen-pal.so when linking opal_wrapper. Instead I encountered a different error that does not (as best I can tell) correspond to any of the issues Larry has reported recently. Once I disable the error-inducing VT code, I am unable to reproduce Larry's problem with the 10.3, 10.5 or 10.8 PGI compilers.

My system and the errors:

$ cat /etc/redhat-release
Scientific Linux SL release 5.4 (Boron)

$ uname -a
Linux cvrsvc01 2.6.18-164.9.1.el5c-perf #1 SMP Wed Jun 9 14:40:25 PDT 2010 x86_64 x86_64 x86_64 GNU/Linux

$ /lib64/libc.so.6 GNU C Library stable release version 2.5, by Roland McGrath et al.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.1.2 20080704 (Red Hat 4.1.2-44).
Compiled on a Linux 2.6.9 system on 2009-09-02.
Available extensions:
       The C stubs add-on version 2.1.2.
       crypt add-on version 2.1 by Michael Glad and others
       GNU Libidn by Simon Josefsson
       GNU libio by Per Bothner
       NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
       Native POSIX Threads Library by Ulrich Drepper et al
       BIND-8.2.3-T5B
       RT using linux kernel aio
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

$ pgcc -V pgcc 10.5-0 64-bit target on x86-64 Linux -tp nehalem-64
Copyright 1989-2000, The Portland Group, Inc.  All Rights Reserved.
Copyright 2000-2010, STMicroelectronics, Inc.  All Rights Reserved.

$ [path_to]/openmpi-1.5rc5/configure CC=pgcc CXX=pgCC F77=pgf77 FC=pgf90
[...]

$ make
[...]
make[9]: Entering directory `/global/scratch/sd/hargrove/ompi-1.5rc5-pgi-10.5/ompi/contrib/vt/vt/extlib/otf/tools/otfprofile'
 CXX    otfprofile-otfprofile.o
"/global/common/carver/usg/pgi/10.5/linux86-64/10.5/include/omp.h", line 41: error:
         expected an identifier
 extern int omp_get_thread_num(void);
            ^

"/global/common/carver/usg/pgi/10.5/linux86-64/10.5/include/omp.h", line 43: error:
         expected an identifier
 extern int omp_get_num_threads(void);
            ^

"../../../../../../../../../openmpi-1.5rc5/ompi/contrib/vt/vt/extlib/otf/tools/otfprofile/otfprofile.cpp", line 572: error:
         this kind of pragma may not be used here
 #                             pragma omp barrier
                                      ^

"../../../../../../../../../openmpi-1.5rc5/ompi/contrib/vt/vt/extlib/otf/tools/otfprofile/otfprofile.cpp", line 607: error:
         this kind of pragma may not be used here
 #                                     pragma omp barrier
                                              ^

"../../../../../../../../../openmpi-1.5rc5/ompi/contrib/vt/vt/extlib/otf/tools/otfprofile/otfprofile.cpp", line 648: error:
         this kind of pragma may not be used here
 #                     pragma omp barrier
                              ^

5 errors detected in the compilation of "../../../../../../../../../openmpi-1.5rc5/ompi/contrib/vt/vt/extlib/otf/tools/otfprofile/otfprofile.cpp".
[...]

It appears that the source file in question ALREADY contains a work-around for this issue:
/* Disable OpenMP if the PGI compiler is used to work around the following errors:

compiler version  compiler error
< 9.0-3           PGCC-S-0000-Internal compiler error. calc_dw_tag:no tag
(see Technical Problem Report 4337 at http://www.pgroup.com/support/release_tprs_90.htm)

10.1 - 10.6       this kind of pragma may not be used here
                  #pargma omp barrier
*/
#if defined(_OPENMP) && defined(__PGI)
#       undef _OPENMP
#endif


#ifdef _OPENMP
#       include <omp.h>
#else
#       define omp_get_thread_num() 0
#       define omp_get_num_threads() 1
#endif

However, it appears that the C++ STL headers (included via Summary.h) are indirectly including omp.h, leading to this failure: the "expected an identifier" due to the two #defines in the work-around, and the "this kind of pragma..." errors due to the original issue resurfacing.

I have reproduced this problem with PGI versions 10.3, 10.5 and 10.8.

If I configure with --disable-vt then I (obviously) don't encounter this error. In that case I am able to complete the build of 1.5rc5 with no errors. This means an INABILITY to reproduce Larry's undefined references problem.

-Paul

--
Paul H. Hargrove                          phhargr...@lbl.gov
Future Technologies Group
HPC Research Department                   Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900

Reply via email to