多くの人が同じような質問をしていることは知っていますが、私に合った答えを見つけることができません。mpiライブラリに依存するzeus-mpというプログラムをコンパイルして最終的に実行しようとしています。私は単にコードで提供された指示に従い、それを実行しようとしているシステムを反映するようにmakeファイルを編集しました。実行するmake all
と、次の出力が得られます。
ifort -O2 -msse2 -I/usr/include/mpi -I/hpcwarwick/ompi/1.4.5/intel/12.1/include -o ../exe/zeusmp.x advx1.o advx2.o advx3.o avisc.o avisc_d.o bndyflgs.o bval3d.o bvalemf.o clocks.o ct.o dataio.o diverg.o empty.o findno.o forces.o forces_d.o fourn.o ggen.o grdv.o hdfall.o hsmoc.o intchk.o lorentz.o lorentz_d.o maxmin.o mnmx.o momx1.o momx2.o momx3.o movie.o msave2.o mget2.o mstart.o newdt.o newgrid.o newvg.o newx1.o newx2.o nudt.o pdv.o pdv_d.o pressure.o printd.o restart.o setup.o spenergy.o srcstep.o strtoi.o transprt.o tranx1.o tranx2.o tranx3.o tslice.o zeusmp.o writeout.o textdmp.o linpck.o debug.o rad_loss.o kin_visc.o tconduct.o modulo.o pnewt.o nantest.o box.o bcdflt.o checkin.o mmIsFinite.o mmIsNan.o -L/usr/lib64 - L/usr/lib/mpi/lib -L/hpcwarwick/ompi/1.4.5/intel/12.1/lib - L/storage/home/maths/marxzq/HDF4/hdf4lib/lib -ldl -lnsl -lutil -lmfhdf - ldf -lmpi -lmpif -lpthread
ld: cannot find -lmpif
make: *** [../exe/zeusmp.x] Error 1
ファイルmpif.hは、ディレクトリ/hpcwarwick/ompi/1.4.5/intel/12.1/includeにあり、正しくリンクされていると思います。makeが実行されているディレクトリにmpif.hを移動しようとしましたが、同じエラーで失敗しました。誰か助けてくれたら本当にありがたいです、よろしくお願いします。
適切な回答にコピーされたコメントの最終的な解決策:
適切なMPIライブラリを処理するクラスターに固有のラッパーが必要です。これらのラッパーはしばしばなどと呼ばれmpif77
、mpif90
HPCワーウィックではと呼ばれているようmpifort
です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加