[Rd] gomp library with Rtools212
Dear developers, I am a maintainer of the CORElearn package which uses OpenMP multithreading to speed up some computations. When producing a new release we tested the package with the latest R 2.12.0. On Linux the package works normally. On Windows we installed a recommended version of Rtools (Rtools212) but the linker fails with the messages below. ... g++ -I"C:/Util/R/R-2.12.0/include" -fopenmp -O2 -Wall -c trutilReg.cpp -o trutilReg.o g++ -I"C:/Util/R/R-2.12.0/include" -fopenmp -O2 -Wall -c utils.cpp -o utils.o g++ -shared -s -static-libgcc -o CORElearn.dll tmp.def Rconvert.o Rfront.o binarize.o binarizeReg.o binnode.o binnodeReg.o binpart.o bintree.o bintreeReg.o c45read.o calibrate.o constrct.o constrctReg.o cost.o dataStore.o error.o estCommon.o estOrdAttr.o estimator.o estimatorReg.o expr.o exprReg.o frontend.o ftree.o kdtree.o mathutil.o menu.o model.o modelReg.o mstring.o new_new.o nrutil.o options.o printUtil.o prune.o pruneReg.o random.o regtree.o relieff.o rfRegularize.o rfUtil.o rndforest.o rrelieff.o treenode.o treenodeReg.o trutil.o trutilReg.o utils.o -fopenmp -LC:/Util/R/R-2.12.0/bin/i386 -lR c:/util/rtools/mingw/bin/../lib/gcc/mingw32/4.5.0/libgomp.a(parallel.o):(.te xt+0x19): undefined reference to `_imp__pthread_getspecific' c:/util/rtools/mingw/bin/../lib/gcc/mingw32/4.5.0/libgomp.a(parallel.o):(.te xt+0x7a): undefined reference to `_imp__pthread_mutex_lock' c:/util/rtools/mingw/bin/../lib/gcc/mingw32/4.5.0/libgomp.a(parallel.o):(.te xt+0x9a): undefined reference to `_imp__pthread_mutex_unlock' c:/util/rtools/mingw/bin/../lib/gcc/mingw32/4.5.0/libgomp.a(parallel.o):(.te xt+0xfa): undefined reference to `_imp__pthread_getspecific' ... hundreds of error messages follow... On R 2.11.1 and 32 bit Windows the package worked fine. Since Rtools now uses gcc 4.5.0 and libgomp-4.5.0, which do support OpenMP, I do not know what is wrong. In Makevars.win I use PKG_CXXFLAGS = -fopenmp PKG_LIBS = -fopenmp Suspecting that errors may be caused by a wrong underscore convention I experimented with the SYMPAT variable in etc/Makeconf, but without success. My guess is that gomp library provided with Rtools212 is using a different underscore convention as the rest of the gcc. Can you suggest some solution, please? Best regards, Marko __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] gomp library with Rtools212
> On November 19, 2010 07:58:40 am Marko Robnik-Šikonja wrote: > > I am a maintainer of the CORElearn package which uses OpenMP > > multithreading to speed up some computations. When producing a new > > release we tested the package with the latest R 2.12.0. On Linux the > > package works normally. On Windows we installed a recommended > version of Rtools (Rtools212) but the linker fails with the messages below. > [...] > > Suspecting that errors may be caused by a wrong underscore convention > > I experimented with the SYMPAT variable in etc/Makeconf, but without > > success. My guess is that gomp library provided with > > Rtools212 is using a different underscore convention as the rest of > > the gcc. Can you suggest some solution, please? > > On November 19, 2010 22:12 Davor Cubranic wrote: > The cause is that Rtools does not include libthread, which libgomp depends > on. I ran into the same problem as you (see the thread: > http://article.gmane.org/gmane.comp.lang.r.devel/25764/). It didn't look > like libthread will be allowed into RTools, so now we turn OpenMP off on > Windows. Please let me know if you figure out a better solution. Thank you, Davor for your suggestion, as well as Prof Ripley for his explanation posted to r-windows list. I have discovered TDM MinGW toolchain http://tdm-gcc.tdragon.net/ which does contain pthreads in both 32 and 64 bit version of the package. Using Makevars.win below I can produce both 32 and 64 bit version of the package. ARCH_FLAG = -m32 ifeq ($(R_ARCH),/x64) ARCH_FLAG = -m64 endif PKG_CXXFLAGS = $(ARCH_FLAG) -fopenmp PKG_LIBS = $(ARCH_FLAG) -fopenmp As long as Rtools do not support openMP I will publish multithreaded Windows packages only on my website and diasble it on CRAN. Greetings, Marko __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel