Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

libptread.a on X86_64 error

choingjoo
Beginner
588 Views
Hi.
With my ifort 11.1, I tried to compile 'SMOKE'. But there are some errors with libpthread.a
ENV : Fedora 12, quad core, 8G,
the error message is below.
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/../../../../lib64/libpthread.a(libpthread.o): In function `sem_open':
(.text+0x765d): warning: the use of `mktemp' is dangerous, better use `mkstemp'
/home/choingjoo/Model/SMOKE/subsys/ioapi/Linux2_x86ifc/libioapi.a(ll2utm.o): In function `ll2utm_':
/opt/ioapi/ioapi/ll2utm.f:(.text+0x213): undefined reference to `__kmpc_global_thread_num'
/opt/ioapi/ioapi/ll2utm.f:(.text+0x22c): undefined reference to `__kmpc_critical'
/opt/ioapi/ioapi/ll2utm.f:(.text+0x280): undefined reference to `__kmpc_end_critical'
`__kmpc_end_critical'make: *** [normbeis3] Error 1
And I install the glibc-static for libthread.a using 'yum'. and there are some warning message like this.
Warning: RPMDB altered outside of yum.
** Found 18 pre-existing rpmdb problem(s), 'yum check' output follows:
intel-cproc073-11.1-1.x86_64 has missing requires of lsb >= ('0', '3.0', None)
intel-cprocsdk073-11.1-1.noarch has missing requires of lsb >= ('0', '3.0', None)
intel-cprof073-11.1-1.x86_64 has missing requires of lsb >= ('0', '3.0', None)
intel-cproflib073-11.1-1.x86_64 has missing requires of lsb >= ('0', '3.0', None)
intel-cprofsdk073-11.1-1.noarch has missing requires of lsb >= ('0', '3.0', None)
intel-cproidb073-11.1-1.x86_64 has missing requires of lsb >= ('0', '3.0', None)
intel-cproidbcdt073-11.1-1.noarch has missing requires of lsb >= ('0', '3.0', None)
intel-cproidbsdk073-11.1-1.noarch has missing requires of lsb >= ('0', '3.0', None)
intel-cproipp073-11.1-1.noarch has missing requires of lsb >= ('0', '3.0', None)
intel-cproipplib073-11.1-1.x86_64 has missing requires of lsb >= ('0', '3.0', None)
intel-cproipplibdev073-11.1-1.x86_64 has missing requires of lsb >= ('0', '3.0', None)
intel-cprolib073-11.1-1.x86_64 has missing requires of lsb >= ('0', '3.0', None)
intel-cprolibdev073-11.1-1.x86_64 has missing requires of lsb >= ('0', '3.0', None)
intel-cpromkl073-11.1-1.noarch has missing requires of lsb >= ('0', '3.0', None)
intel-cpromklib073-11.1-1.x86_64 has missing requires of lsb >= ('0', '3.0', None)
intel-cpromklibdev073-11.1-1.x86_64 has missing requires of lsb >= ('0', '3.0', None)
intel-cprotbblib073-11.1-1.noarch has missing requires of lsb >= ('0', '3.0', None)
intel-cprotbblibdev073-11.1-1.noarch has missing requires of lsb >= ('0', '3.0', None)
Did it occur misconfigure the 'mpich2'? please help this problem.

Yongjoo Choi
0 Kudos
5 Replies
TimP
Honored Contributor III
588 Views
Quoting choingjoo

With my ifort 11.1, I tried to compile 'SMOKE'. But there are some errors with libpthread.a
ENV : Fedora 12, quad core, 8G,

/opt/ioapi/ioapi/ll2utm.f:(.text+0x213): undefined reference to `__kmpc_global_thread_num'
/opt/ioapi/ioapi/ll2utm.f:(.text+0x22c): undefined reference to `__kmpc_critical'
/opt/ioapi/ioapi/ll2utm.f:(.text+0x280): undefined reference to `__kmpc_end_critical'
`__kmpc_end_critical'make: *** [normbeis3] Error 1

Those errors indicate that you didn't link libiomp5, or, if you linked the dynamic one, you didn't have LD_LIBRARY_PATH set when you tried to run.
As you mentioned MPICH2, going all the way back, you must configure, with all ifort environment variables set, and build MPICH2 so that mpif90 and mpif77 and Fortran libraries correspond with your ifort.
Then, when you link, (again with the ifort environment variables set), if you require OpenMP, setting the link options as you would do for non-MPI build, but using mpif90 or mpif77 in place of ifort, you should succeed. If my guesses haven't covered what you are doing, please be more specific.

If you want to do a yum install, you must have root privilege for the rpm update, e.g. sudo yum install. If you have totally messed up your rpmdb, there must be ways to recover, but I would suggest a Fedora help forum for that.
0 Kudos
choingjoo
Beginner
588 Views
Thank you for you advising. It is little difficult to figure it out. So, I tried again as you mentioned

1. libiomp5.so linked in my enviroment.

[bash]LD_LIBRARY_PATH=/opt/intel/Compiler/11.1/073/lib/intel64:/opt/intelc/lib/intel64:/opt/intel/Compiler/11.1/073/lib/intel64:/opt/intelc/lib/intel64:/opt/intel/Compiler/11.1/073/lib/intel64:/opt/intelc/lib/intel64:/opt/intel/Compiler/11.1/073/lib/intel64:/opt/intelc/lib/intel64:/opt/intel/Compiler/11.1/073/bin/intel64:/opt/intel/Compiler/11.1/073/lib/intel64
[/bash]

2. I reinstalled the 'glibc-static-2.11.2-3', and there are no error message,
3. I reinstalled mpich2-1.3.1 with following FLAGS

[bash]setenv CC icc
setenv CXX icpc
setenv CFLAGS "-O3 -xT -ip -no-prec-div -static-intel"
setenv CXXFLAGS "-O3 -xT -ip -no-prec-div -static-intel"

setenv F77 ifort
setenv FC ifort
setenv F90 ifort
setenv FFLAGS "-O3 -xT -ip -no-prec-div -static-intel"

setenv CPP "icc -E"
setenv CXXCPP "icpc -E"[/bash]

4. I also reinstalled I/OAPI with following FLAGS
[bash]AR   = ar
CC = mpicc
FC = mpif90 -auto -cm -w90 -w95 -warn notruncated_source -static-intel
M4 = m4
LINK = $(CC)

MFLAGS = -traceback

OMPFLAGS = -openmp
OMPLIBS = -openmp
COPTFLAGS = -O3 ${MFLAGS}
FOPTFLAGS = -O3 -no-fp-port -unroll -stack_temps -safe_cray_ptr ${MFLAGS}
FPPFLAGS = -DF90=1
FSFLAGS = -save[/bash]

5. Finally, when I install the SMOKE of CMAQ with following FLAGS which is recommanded flags in manual for ifort, but the error message is also same.
[bash] setenv FC /usr/local/mpich2/intel/bin/mpif90 
setenv FFLAG "-O2 -save -zero -extend_source -nbs -W0"
setenv DBGFLAG "-g -CB -CS -CU -extend_source -save -zero nbs"
setenv LINK_FLAGS "-static-intel"
setenv M6_FFLAG "-O2 -save -zero -nbs -extend_source -W0 -mp1"
setenv F_UFMTENDIAN big[/bash]
And the error message.
[bash]/usr/lib/gcc/x86_64-redhat-linux/4.4.4/../../../../lib64/libpthread.a(libpthread.o): In function `sem_open':
(.text+0x765d): warning: the use of `mktemp' is dangerous, better use `mkstemp'
/home/choingjoo/Model/SMOKE/subsys/ioapi/Linux2_x86ifc/libioapi.a(ll2utm.o): In function `ll2utm_':
/opt/ioapi/ioapi/ll2utm.f:(.text+0x213): undefined reference to `__kmpc_global_thread_num'
/opt/ioapi/ioapi/ll2utm.f:(.text+0x22c): undefined reference to `__kmpc_critical'
/opt/ioapi/ioapi/ll2utm.f:(.text+0x280): undefined reference to `__kmpc_end_critical'
/home/choingjoo/Model/SMOKE/subsys/ioapi/Linux2_x86ifc/libioapi.a(desc3.o): In function `desc3_':
/opt/ioapi/ioapi/desc3.F:(.text+0x23a): undefined reference to `__kmpc_global_thread_num'
/opt/ioapi/ioapi/desc3.F:(.text+0x251): undefined reference to `__kmpc_critical'
/opt/ioapi/ioapi/desc3.F:(.text+0x1a33): undefined reference to `__kmpc_end_critical'
/home/choingjoo/Model/SMOKE/subsys/ioapi/Linux2_x86ifc/libioapi.a(getefile.o): In function `getefile_':
/opt/ioapi/ioapi/getefile.F:(.text+0x3a): undefined reference to `__kmpc_global_thread_num'
/opt/ioapi/ioapi/getefile.F:(.text+0x54): undefined reference to `__kmpc_critical'
/opt/ioapi/ioapi/getefile.F:(.text+0x73): undefined reference to `__kmpc_end_critical'
....[/bash]

And I searched google for fixing this error, I saw some article that FLAGS change from "-static" to "-static-intel". However it didn't work.
please give some advise for me.

Yongjoo Choi
0 Kudos
TimP
Honored Contributor III
588 Views
Apparently, you have built the I/OAPI with OpenMP references, so you would require -openmp also in the LINK_FLAGS for the application which links those libraries.
0 Kudos
choingjoo
Beginner
588 Views
Thank you for advising. Above the env for installing IOAPI, It added -openmp flag to OMPFLAGS.
But I didn't understading about LINK_FLAGS.
Does it just add to Makefile?

Thank you

Yongjoo Choi
0 Kudos
TimP
Honored Contributor III
588 Views
You didn't give any indication that SMOKE observes OMPFLAGS. Of the settings you quoted, LINK_FLAGS looks like the place to add -openmp (unless you prefer to spell out as -liomp5 -lpthreads).
0 Kudos
Reply