1

icpc でビルドされたメイクファイルを使用して大規模なプロジェクトをビルドしていますが、g++ で実行する必要があります。

openmp を使用するファイルをコンパイルすると、-c フラグが使用され、ライブラリは使用されないため、openmp ではなくシリアルになります。私が見ているすべての例は、この -c フラグを使用していません。

リンクせずにopenmpを使用してコンパイルする方法はありますか?

編集:

-lgomp フラグを使用しています (ライブラリはライブラリ パス上にあります):

g++ -lgomp -c -w -O4 mainS.cpp
g++: -lgomp: リンクが行われていないため、リンカー入力ファイルは使用されていません

編集: 私の上司は、コード、makefile、およびドキュメントでいくつかの間違いを犯しました。時間を無駄にして申し訳ありません。少なくとも、私が費やした 5 時間よりも短い時間でした =/

4

2 に答える 2

4

OpenMP を有効にするフラグを渡していますか (IIRC は -fopenmp のようなものですか?そうでない場合、コンパイラは OpenMP 関連のプリミティブを無視し、シリアル コードのみを生成します。

-c (つまり、コンパイルのみ、好きではない)があなたの問題とは何の関係もないと思います。

于 2010-08-16T17:45:40.930 に答える
-1

おそらくドキュメントが役立ちます...

于 2010-08-16T17:56:23.277 に答える