1

Writing R Extensionsのマニュアルを少し読んだのですが、これを完全に理解することはできません。makevarsの-fopenmpフラグはどこに置くのですか?設定できます

PKG_FCFLAGS = -fopenmp

これは正常にコンパイルされます。しかし、私もそれを設定する必要があるかどうかはわかりませんPKG_LIBSPKG_CPPFLAGS

試してみるとPKG_LIBSエラーになります

i686-apple-darwin8-gfortran-4.2: libgomp.spec: No such file or directory

しかし、それをそのまま使用すると、PKG_FCFLAGS正常にコンパイルされたとしても、Rでルーチンを使用しようとすると、

Error in dyn.load("correlate.so") : 
unable to load shared object '/Users/Steven/Documents/PhD/npsR/correlate.so':
dlopen(/Users/Steven/Documents/PhD/npsR/correlate.so, 6): Symbol not found: _GOMP_parallel_end
Referenced from: /Users/Steven/Documents/PhD/npsR/correlate.so
Expected in: dynamic lookup

したがって、明らかにgompライブラリは正しくリンクされていません。何か案は?

乾杯。

4

2 に答える 2

3

Luke Tierneyのpnmathパッケージhttp://homepage.stat.uiowa.edu/~luke/R/experimental/はOpenMPを使用しており、Makevarsには次のものがあります。

PKG_CFLAGS=-fopenmp
PKG_LIBS=-lgomp

およびMakevars.win:

PKG_CFLAGS=-fopenmp
PKG_LIBS=-mthreads -lgomp -lpthreadGC2

あなたはMacを使用しているようですので、どちらも機能しない可能性があります。しかし、設定PKG_LIBS=-lgompは重要に見えます。

于 2012-09-20T11:03:16.927 に答える
0

だから私はこの問題を解決しました(私は今、ワームの別の缶を開けましたが...)。問題を解決したために何をしたかは正確にはわかりませんが、ここで何をしたかをリストします。

fortranプログラム自体がコンパイルされてopenMPとリンクしないことを発見した後(Rではまったくカウントされません)、それはgfortranのインストールと関係があると思いました。だから私がしたことは:

  • アンインストールされたR
  • アンインストールされたgfortran
  • http://r.research.att.com/tools/gcc-42-5666.3-darwin11.pkgからgccとgfortranをダウンロードしました
  • 更新されたgcc+gfortran(gfortran v4.2.4)をインストールしました
  • インストールされたR2.15.1
  • PATH = /usr/bin:$PATH私のラインを設定します.bash_profile
  • Makevarsに2行を設定します:PKG_FCFLAGS = -fopenmpPKG_LIBS = -fopenmp。これらの両方が必要なようです。

それからそれはうまくいきました!ちなみに、これはOS X 10.7(Lion)にあります。

みんなの助けてくれてありがとう。

于 2012-09-24T10:44:06.633 に答える