申し訳ありません。ここで尋ねるのが良いかどうか、Stack Overflowに尋ねる方が良いかどうかわかりません。しかし、これは新しいFedora 39のインストールに関するもので、dnfを介してインストールされたパッケージであるmpich-devel、openmpiを使用しました。 devel と (linux-homebrew で) openmpi でも同じ問題が発生します。どうやらシステムと関連があるようで、ここに聞いてみた方がいいと思いました。
デフォルトでは、MPI_Initを含むMPIプログラムを実行しようとすると実行されますが、実際には起動に時間がかかります。すぐに現れず、top
何らかの理由で遅れているようです。そうした時、予想したほど速く働きました。これはFortran言語で書かれた単純なHello World MPIプログラムです。
program hello_world
use mpi
implicit none
integer :: mpi_size, mpi_rank
integer :: ierr
double precision :: t1, t2
call MPI_Init(ierr)
t1 = MPI_Wtime()
call MPI_Comm_size(MPI_COMM_WORLD, mpi_size, ierr)
call MPI_Comm_rank(MPI_COMM_WORLD, mpi_rank, ierr)
print*, "Hello from rank ", mpi_rank, " of ", mpi_size, "."
t2 = MPI_Wtime()
print*, "time for full program", t2-t1
call MPI_Finalize(ierr)
end program hello_world
mpif90(エラーなし)でコンパイルし、数分遅れて実行できます。この問題の原因が何であるかを調べ、同様の投稿で他のプログラムを閉じてWi-Fiを無効にすることを提案しましたが(理由はわかりません)、どちらも役に立ちませんでした。
これが出力ですtime mpirun -np 2 ./a.out
Hello from rank 0 of 2 .
time for full program 1.3940195000000001E-002
Hello from rank 1 of 2 .
time for full program 1.4017349000000000E-002
real 2m27.524s
user 0m0.033s
sys 0m0.163s
比較のために、ここでより簡単なHello Worldプログラムがあります。
program hello
print *, 'Hello, World!'
end program hello
を使用してコンパイルしmpif90
て時間を測定すると(ここではgfortranと比較するために1つのプロセッサを使用して実行)、次の結果が得られます。
Hello, World!
real 1m13.201s
user 0m0.016s
sys 0m0.074s
./a.out
gfortranを使用する(または使用して実行しても構いませんmpirun -np 1 ./a.out
)
Hello, World!
real 0m0.002s
user 0m0.001s
sys 0m0.001s
また、待たずに断続的に動作するようです。 (更新で問題が解決したと思って問題を削除しても十分でしたが、再実行したときに問題が再発生しました。)
編集:何とか問題があるようですMPI_Init
。次のようにダイヤルできます。
call date_and_time(values=values)
print *, values(5),":",values(6),":",values(7),":",values(8)
特定の行の時間を見つけると、ボトルネックが発生しますMPI_Init
。
例: プログラム開始時間:
17 : 20 : 6 : 221
後ろにMPI_Init
:
17 : 21 : 21 : 128
後ろにMPI_Finalize
:
17 : 21 : 21 : 132
答え1
mpiexec -n 4 ./my_program
私は実際に何もする前にタスク全体が90秒以上実行される同様の問題を解決しました。プログラム自体はMPIなしで約0.15秒で実行されます。
回避策は、すべてのネットワーク接続を無効にすることです。(WiFi、VPN...)ランタイムがmpiexec
1秒未満に短縮されます。
何百ものデバイスを介してeduroam WiFiに接続し、パブリックIPアドレスを持っています。これは、バックグラウンドのネットワークタイムアウトの問題が原因で発生する可能性があります。
誰かがCygwinメーリングリストで同様の問題をすでに解決しています。 https://sourceware.org/legacy-ml/cygwin/2016-12/msg00192.html。 Kernel 6.6.26、OpenMPI 5.0.2、および g++ 12.3.0 を実行する Linux ボックスで同じ問題に直面しているため、この問題は Windows システムと Cygwin にのみ関連しない場合があります。
ヘルプを有効または無効に設定すると、-H localhost
効果は最初の段落でこれらのパラメータなしで実行するのと同じです-H 127.0.0.1
。mpiexec