Fortran を使用する R パッケージの作成方法を学ぶために、モンテカルロ シミュレーションで Pi を計算する簡単なパッケージを作成しました。現在、Fortran コードを MPI と並列化しようとしています。
use MPI
Fortran コードに追加して Rstudio のボタンをクリックするBuild and Reload
と、次のエラーが発生します。
==> R CMD INSTALL --no-multiarch --with-keep.source MyPi
* installing to library ‘/home/ignacio/R/x86_64-pc-linux-gnu-library/3.2’
* installing *source* package ‘MyPi’ ...
gfortran -fpic -g -O2 -fstack-protector-strong -c Fpi.f90 -o Fpi.o
/usr/lib/R/etc/Makeconf:161: recipe for target 'Fpi.o' failed
** libs
Fpi.f90:2.4:
use mpi
1
Fatal Error: Can't open module file 'mpi.mod' for reading at (1): No such file or directory
make: *** [Fpi.o] Error 1
ERROR: compilation failed for package ‘MyPi’
* removing ‘/home/ignacio/R/x86_64-pc-linux-gnu-library/3.2/MyPi’
* restoring previous ‘/home/ignacio/R/x86_64-pc-linux-gnu-library/3.2/MyPi’
Exited with status 1.
問題は、Rstudio が mpi90 の代わりに gfortran を使用してコンパイルしようとしていることだと思います。この投稿に従って、非常に基本的な Hello World を実行できますが、コードを次のようにコンパイルします。mpif90 -fpic -shared -o test.so test.f90
Rstudio にmpif90 -fpic -shared
の代わりに使用するように指示するにはどうすればよいgfortran
ですか?
これを追加しましたsrc/Makevars
FC=mpif90
これは私が得るものです:
==> R CMD INSTALL --no-multiarch --with-keep.source MyPi
* installing to library ‘/home/ignacio/R/x86_64-pc-linux-gnu-library/3.2’
* installing *source* package ‘MyPi’ ...
gfortran -fpic -g -O2 -fstack-protector-strong -c Fpi.f90 -o Fpi.o
/usr/lib/R/etc/Makeconf:161: recipe for target 'Fpi.o' failed
** libs
Fpi.f90:2.4:
USE MPI
1
Fatal Error: Can't open module file 'mpi.mod' for reading at (1): No such file or directory
make: *** [Fpi.o] Error 1
ERROR: compilation failed for package ‘MyPi’
* removing ‘/home/ignacio/R/x86_64-pc-linux-gnu-library/3.2/MyPi’
* restoring previous ‘/home/ignacio/R/x86_64-pc-linux-gnu-library/3.2/MyPi’
Exited with status 1.