2012-02-27 11 views
0

Fortranプログラムでpthreadsを使いたいのですが、コンパイルすることさえできません。私は、Cプログラムでpthreadsを使用して、私のFORTRANのプログラムのためにそれを必要とするが、次のエラーでuse f_pthread結果に呼び出しています:fortranのpthreadsを使用する

Fatal Error: Can't open module file 'f_pthread.mod' for reading at (1): No such file or directory

のでかなり明らかに私はf_pthread.modリンクを持っていません。 f_pthread.modはどこにありますか?それをどうやって作るのですか?私が見たすべてのものは、プログラム例の冒頭で「f_pthreadを使う」というように、fortranでpthreadを使う方法について話しましたが、そのモジュールを正しくリンクする方法を理解できていないようです。

答えて

4

IBM/AIXインストールでモジュールf_pthreadを見つけただけです。そのようなインストールをお持ちの場合は、豊富なIBMのドキュメントでその点を指摘してください。あなたが持っていない場合、あなたはそのモジュールを持っていると思いますか?あなたのプラットフォーム上のコンパイラは、モジュールファイルをどこに置いていますか?あなたはf_pthread.modを探しましたか?

なぜあなたのFortranプログラムにpthreadsが必要ですか? OpenMPを使用するほうがはるかに簡単であり、OpenMPが実行できないpthreadsや、ほとんどのFortranプログラムがやりたいことがいくつかあります。

+0

pthreadsにスレッドプールを作成する方がはるかに簡単であるため、openmpが必要です。私は何千回も何千ものエコーを受けた小さな(〜800)ループを持っています。 openmpを使用すると、ループを呼び出すたびに新しいスレッドが起動する可能性があり、これは非効率的なので、私はこれをスレッドしたいと思います。 – drjrm3

+9

この時点でOpenMPの実装を信頼したいだけかもしれません。現在のOpenMPの実装では、スレッドプールを作成し、スレッドを常に作成および削除するのではなく、再利用します。その後、標準に準拠したプログラムで終わり、どこでもFortranコンパイラで動作するはずです。 –

+0

@ JonathanDursiとHighPerformanceMarkの場合、Fortranプログラムでは、並列化だけでなく、別々のタスクに2つの別々の機能スレッドが必要な場合はどうなりますか? – patrickvacek

関連する問題