0

Linux で BLACS パッケージをコンパイルしています。パッケージ、INSTALL ディレクトリの内容をコンパイルしました。ディレクトリ TESTING の内容をビルドしようとすると、エラーが発生します

blacstest.f:(.text+0xb9): undefined reference to `blacs_gridinit_'

ライブラリで関数を探してみたところ、メッセージは次のとおりです。

~/sources/BLACS/LIB$ nm blacs_MPI-LINUX-0.a | less | grep blacs_gridinit_
blacs_gridinit_.o:
0000000000000000 T blacs_gridinit__
Cblacs_gridinit_.oo:

したがって、関数は存在しますが、アンダースコアが 2 つ付いています。1つだけにする方法は?

Bmake.incでいくつか試してみました。

#   INTFACE = -Df77IsF2C
#   INTFACE = -fno-underscoring
    INTFACE = -DAdd_

しかし、どれもうまくいかないようです。誰でもこれについて経験がありますか?

ありがとう、エラン。

編集: BLACS には、すべてが構成された .inc ファイルが付属しています。私は持っている:

   F77            = mpif77
   F77NO_OPTFLAGS = 
   F77FLAGS       = $(F77NO_OPTFLAGS) -O -fPIC 
   F77LOADER      = $(F77)
   F77LOADFLAGS   = 
   CC             = mpicc
   CCFLAGS        = -O4 -fPIC
   CCLOADER       = $(CC)
   CCLOADFLAGS    =

-assume 2underscore は、どちらのコンパイル フラグでも受け入れられませんでした。さらに、テンプレート .inc ファイルには次のように記載されています。

#  ---------------------------------------------------------------------------
#  The Fortran 77 to C interface to be used.  If you are unsure of the correct
#  setting for your platform, compile and run BLACS/INSTALL/xintface.
#  Choices are: Add_, NoChange, UpCase, or f77IsF2C.
#  ---------------------------------------------------------------------------
#   INTFACE = -Df77IsF2C
4

1 に答える 1

2

EasyBuild はこの問題を (部分的に) 解決します。BLACS のビルド手順を実装する Python コードについては、https://github.com/hpcugent/easybuild-easyblocks/blob/master/easybuild/easyblocks/b/blacs.pyを参照してください。

テストは (まだ) ビルドされませんが、BLACS は正しい方法でビルドされます。

template.inc ファイルで既に見たように、xintface ツールをビルドして実行する必要があります。これにより、INTFACE の正しい設定を把握するのに役立ちます。TRANSCOMM 設定が正しいことも確認する必要があります。これには xtc_CsameF77 および xtc_UseMpich ツールを使用できます。

INTFACE と TRANSCOMM の値を把握したら、BLACS を再構築し、make コマンド ラインでこれらを設定します。次に、テストのビルドを再試行します (同じオプションを使用)。

于 2012-06-20T05:43:38.653 に答える