openMPIライブラリを使用して異なるプロセッサ間でメッセージを渡すc++プログラムがあります。これは、遺伝的アルゴリズムを使用して巡回セールスマン問題の優れたソリューションを取得する並列プログラムです。自宅にある2台のデュアルプロセッサコンピューターでMPI環境をセットアップして、実行できるようにしようとしています。1年前にこのプログラムを最初に作成したとき、自分で設定していないクラスターで正常に実行できました。私が今抱えている問題は、実行するたびに、すべてのプロセスがランク0であると言っていることです。ノード1、2、および3ではなく3つのノードがある場合、それらはすべてノード0です。誰かが何が起こっているのか知っているなら、私は確かにいくつかの助けをいただければ幸いです。ありがとう。
2 に答える
3
問題が何であるかがわかりました。mpirun コマンドを使用する 2 つのパッケージをインストールしました。openmpi と mpich パッケージの両方だったと思います。私はopenmpiを削除しましたが、うまくいきました。
于 2008-12-11T02:30:50.367 に答える
1
おそらく、初期化が間違っているか、ランクのチェックでエラーが発生しています。これはこれを行う正しい方法です:
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("I am process %d of %d.\n", rank, size);
しかし、私はあなたがそれを正しく行ったと思うので、Harleqin に同意します。あなたが使用するコマンド/スクリプトを示すことは役に立ちます。
于 2008-12-08T08:28:42.127 に答える