OpenMPで並列化されているソルバーと比較しようとしています。ソルバーはすべて、Fixed Form Fortran 77を使用してOpenMPIで並列実行されています。 mpif77では、オブジェクトファイルを-fopenmpスイッチとリンクさせることはできません。 Makeは実行可能ファイルを作成しません。私はOpenMPソースファイルをgfortranと別々にコンパイルしようとしてから、mpif77
とリンクしようとしました - うまくいきません。私はスイッチを使用しない場合には、一般的なエラーがスローされます。OpenMPIでOpenMPを使用してMPIプログラムをコンパイルできない
Undefined symbols for architecture x86_64:
"_GOMP_parallel", referenced from:
_parmatdiff_ in matdiff.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make: *** [solvercomp] Error
私の質問はありませんOpenMPIのサポートOpenMPのではいた場合、どのように私はリンクが機能に作成したオブジェクトファイルを「作る」ことを保証しますOpenMPライブラリでは?ここで
私のメイクファイルのコピーです:
SOURCES = solvcomp.f matdiff.f seqjacobi.f seqconjgrad.f parsor.f
FCC = mpif77
MPIRUN = mpirun
OBJECTS = $(SOURCES:.f=.o)
TARGET = soln
FFLAGS = -o
CFLAGS = -c
NP = 4
all: $(TARGET) clean
$(TARGET): $(OBJECTS)
$(FCC) $(FFLAGS) $(TARGET) $(OBJECTS)
$(OBJECTS): $(SOURCES)
$(FCC) $(CFLAGS) $(SOURCES)
clean:
rm -rf *.o *.dSYM
Open MPIのどのバージョンを使用していますか? 'mpif77 -fopenmp'で生成されたエラーを投稿できますか? –
OpenMPIは多くのMPI実装のうちの1つに過ぎず、OpenMPは標準であることに注意してください。だから2つの非常に異なるもの。もっと詳しく知る必要があります([ask]参照)。どのバージョンを使用していますか? 'mpif77 -v'は何を印刷しますか? 'make 'によって最後に実行されたコマンドはどのように見えますか? 'make'の完全な出力はどのように見えますか? –
また、「mpif77でオブジェクトファイルを-fopenmpスイッチにリンクさせることができません」というときにはどうなりましたか?詳細、詳細、詳細が必要ですか?エラーメッセージはありますか?どのコマンランドが実行するのですか? *完全な出力は何ですか?エラーメッセージはありますか?あなたはどこのフラグをMakefileに入れましたか? –