10

D プログラミング言語で MPI を使用しようとしています。D は C ABI を完全にサポートし、任意の C コードとリンクして呼び出すことができます。私は明白なことを行い、MPI ヘッダーを D に変換しました。次に、テスト プログラムを Wikipediaから D に変換しました。次のコマンドでコンパイルしました。

dmd test.d -L-lmpistubs

を実行するだけで機能し、次のよう./testに出力されます。

0: We have 1 processors

ただし、で実行するとmpiexec -n 8 test、何も出力されません。私の理解では、MPI 実行可能ファイルには一連の奇妙なリンク オプションが必要ですmpicc。そのため、プロセスを自動化するためのツールが存在します。ただし、D で MPI を使用しようとしている場合、これは役に立ちません。適切なリンカー オプションを使用していないためだと思います。mpiccDMDに同じことをさせる方法と方法を教えてください。

編集: を使用して答えを見つけましたmpicc -showme。これは、どのコマンドmpiccが に転送されるかを示していますgcc。ただし、ヘッダー ファイルの変換が間違っていることにも気付きました。次の質問: どのようにそれを正しく行うか.

4

1 に答える 1

2

mpicc は、さまざまなスクリプトやプログラムの一般的な名前です。それらのいくつかは、実際に呼び出されているものを表示するために、、、、または環境オプションのようなオプションを持って-echo-showます。-compile-info-link-info-showme

実際に何が入っているか確認してみてください

 file -k `which mpicc`

スクリプトであればsh、bash、perl、pythonで書けます。簡単に表示して正しいオプションを見つけることができます。プログラムの場合は、実行してみてください

 strings `which mpicc`

stringsスクリプトの動作を制御するオプション名や環境変数を抽出できる場合があります。

また、ほとんどの mpicc は CC 環境変数をチェックしてコンパイラの名前を取得します。引数を出力し、このプログラムに CC env を設定するだけのスクリプトまたはプログラムを作成できます。

于 2011-08-04T18:04:45.580 に答える