[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 12/14 09:11 / Filesize : 124 KB / Number-of Response : 392
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Message Passing Interface (MPI) 統合スレ



1 名前:デフォルトの名無しさん [04/11/07 18:25:56]
MPIによる並列プログラミングについて話し合う統合スレッドです。

とりあえず本家
www-unix.mcs.anl.gov/mpi/



77 名前:デフォルトの名無しさん mailto:sage [2005/11/17(木) 16:56:14 ]
方法はMPIの実装に依る


78 名前:デフォルトの名無しさん mailto:sage [2005/12/21(水) 23:26:52 ]
>>67
www-lab.imr.tohoku.ac.jp/~t-nissie/computer/wolfchen/doc/HomeWolfchenProject.html

79 名前:デフォルトの名無しさん [2006/01/12(木) 23:20:44 ]
お客さんの16CPUマシン(8node, SMP 2way)向けにC言語でMPIプログラムを書いています。単純に差分法で計算するプログラムです。でも私の開発環境は、Pen4の1CPU、fedora3マシンなのです。その1CPUマシンで

mpirun -c 16 myprog.exe

で実行すると、16個のプロセスが動き始めるのですが、問題があります。
それは、プログラムを実行すると、データファイルを読み込んで、処理が始まるのですが、データファイルはいくつかの大きさのものを用意しているのですが、
あるデータファイルでは、正しく計算が完了するのですが、あるデータファイルでは
計算開始直後にエラーで終了してしまいます。調べたところ、MPI_Bcast()で
エラーしていました。
また、正しく計算できるデータファイルを使って、
mpirun -c 8 myprog.exe
のように変えるとエラーする場合もあります。
そこで教えていただきたいのですが、そもそも1CPUマシンで、このような並列計算を
実行することは、何か問題がありますでしょうか?
よろしく。

80 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 06:41:19 ]
基本的に動かないとまずい。
メモリ不足とかじゃなきゃ、プログラムのバグだろうね


81 名前:デフォルトの名無しさん [2006/01/13(金) 11:50:49 ]
アドバイスありがとうございます。
>基本的に動かないとまずい。
>メモリ不足とかじゃなきゃ、プログラムのバグだろうね
やはりそうですか。
実際、プログラムを単純化して、単に16プロセスでMPI_Bcast()するだけというプログラムでは、問題なく動きます。
16以外のどんな数字でも問題ありません。なので、プログラムのバグの可能性が高いのですが、一つ気になる点は、
エラーするケースでも、エラーしないケースでも、いずれの場合でもプロセスをps -ef などでモニタしていると、
実行中に16プロセスそれぞれの親プロセスIDがころころ変わっているのが確認できるのですが、何かそのあたり
に関係しているのではと思うのですが、どなたか詳しい方、ヒントなどお願いします。


82 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 08:59:30 ]
mpichでもlamでも、実機でもなるってんだったら、
プログラムのバグ。
MPI_Barrier()で、きちんと同期とって
MPI_Bcast()で起こってるなら
MPI実装を疑ってもいい。

まあ、なんだ。
漏れには「FedoraのMPIでエラー終了」じゃ、
どのMPI環境なのかも
どんな異常終了かもサパーリですよ。


83 名前:デフォルトの名無しさん [2006/01/15(日) 14:56:36 ]
>実際プログラムを単純化して、単に16プロセスでMPI_Bcast()するだけというプログラムでは、問題なく動きます

(1) 単純化したプログラムと、エラーが起こる実プログラムで、
送信データの大きさは同じですか?

(2)どういうエラーメッセージが出ますか?

(3)mpi_bcastの前後にprintfでランクの値を書き出した場合、
どうなりますか?
(全プロセスがmpi_bcast前しか表示しないのか、
それともプロセスによってはmpi_bcast後も表示するのか)

(4)エラーが起こるデータファイルで、プロセス数が16より少ないときは
どうなりますか?

84 名前:デフォルトの名無しさん [2006/01/16(月) 00:57:31 ]
皆さん、アドバイスありがとうございます。
>(1) 単純化したプログラムと、エラーが起こる実プログラムで、
>送信データの大きさは同じですか?
はい。MPI_INTを一個です。

>(2)どういうエラーメッセージが出ますか?
今自宅なので、正確には覚えていませんが、英語のメッセージで、
『どれかのプロセスでエラーしました』とか言う感じだったと思います。

>(3)mpi_bcastの前後にprintfでランクの値を書き出した場合、
>どうなりますか?
正しく、自分のランク値が表示されます。

>(全プロセスがmpi_bcast前しか表示しないのか、
>それともプロセスによってはmpi_bcast後も表示するのか)
全プロセスで、MPI_Bcast前に正しいランク値が表示されますが、
MPI_Bcast後には、どのプロセスも何も表示されません。


85 名前:デフォルトの名無しさん [2006/01/16(月) 00:58:31 ]
>(4)エラーが起こるデータファイルで、プロセス数が16より少ないときは
>どうなりますか?
ええっと、その後、いろいろ試してみたら以下のようになりました。
分割数    大きいデータ  小さいデータ
2       OK       エラー
4       OK       OK
5       エラー     エラー
6       エラー     エラー
7       エラー     エラー
8       エラー     OK
9       エラー     OK
10       エラー     OK
11       エラー     OK
12       OK      OK
13       エラー     OK
14       OK      OK
15       エラー     OK
16       エラー     OK
20       エラー     OK
というわけで、よく分かりません。
ちなみに、MPI_Barrier同期は、まったく問題なく動きます。
今のところ、MPI_Bcastを使うのをやめて、MPI_Send/MPI_Recvで同等の処理を
することで、エラーを回避できたようなのですが、MPI_Bcastがエラーする
原因が分からないので、ちょっと気がかりです。



86 名前:デフォルトの名無しさん [2006/01/16(月) 04:45:45 ]
(5)
>はい。MPI_INTを一個です。
確認ですが、一個というのは、下記の2つ目の引数が1という意味ですか?
MPI_Bcast(a,1,MPI_INT,〜);

(6) 上記MPI_BCASTの4つ目の引数(送信元プロセスのランク値)は、
全プロセスで同じ値になっていますか?
また、2,3つ目の引数(送受信バッファーの個数と型)も
全プロセスで同じ値になっていますか?

(7)下記の表の意味ですが、1CPUで2プロセス(mpirun -np 2)で実行し、
小さいデータを入力させた場合でもエラーになるという意味ですか?
またこれは何度やっても同じ結果ですか?
(つまり同じケースでもOKになったりエラーになったりすることはないか)

分割数    大きいデータ  小さいデータ
2       OK       エラー



87 名前:デフォルトの名無しさん [2006/01/16(月) 04:50:20 ]
(8) 問題のMPI_Bcastに到達する前に、MPIの他の通信は行っていますか?

(9) 実プログラムが下記のような構成になっているとして
(a)の部分をすべてコメントにすれば、
  (単純化したプログラムではうまくいくとのことなので)
  うまく動くと思いますが、
  その後で、(a)の部分を前半から少しずつ
  コメントをはずしてはテストしを繰り返せば、
  どこかで再びエラーとなるはずです。
  それによって、エラーの原因となっている個所が特定できるかもしれません。

あるいは逆に、(b)と同等の通信を(送信バッファーの中身は空でも可)
  まず(a)の直前で行い、うまくいったら、
  (a)内を少しずつ後ろへずらしていっても同じテストができます。

MPI_Init();
(a) 入力ファイルの読み込み等
(b) MPI_Bcast(a,1,MPI_INT,〜);
(c) 計算
MPI_Finalize();

88 名前:デフォルトの名無しさん [2006/01/16(月) 05:13:37 ]
(5)の訂正

>はい。MPI_INTを一個です。
確認ですが、一個というのは、下記の2つ目の引数が1という意味ですか?
MPI_Bcast(a,1,MPI_INT,〜);
また、下記の大きいデータの場合も小さいデータの場合も1ですか?

分割数    大きいデータ  小さいデータ
2       OK       エラー


89 名前:デフォルトの名無しさん [2006/01/16(月) 18:19:54 ]
長文のアドバイスありがとうございます。
>(5)の訂正
>確認ですが、一個というのは、下記の2つ目の引数が1という意味ですか?
>MPI_Bcast(a,1,MPI_INT,〜);
はい、そうです。
>また、下記の大きいデータの場合も小さいデータの場合も1ですか?
>分割数    大きいデータ  小さいデータ
>2       OK       エラー
はい。
>(6) 上記MPI_BCASTの4つ目の引数(送信元プロセスのランク値)は、
>全プロセスで同じ値になっていますか?
はい、そうなっています。printfで確認しました。
>また、2,3つ目の引数(送受信バッファーの個数と型)も
>全プロセスで同じ値になっていますか?
はい、同じです。
>(7)下記の表の意味ですが、1CPUで2プロセス(mpirun -np 2)で実行し、
>小さいデータを入力させた場合でもエラーになるという意味ですか?
はいそうです。
>またこれは何度やっても同じ結果ですか?
>(つまり同じケースでもOKになったりエラーになったりすることはないか)
再現されます。同じデータ、同じ分割数で、数回実験しましたが、その時は再現しました。
でも、何十回も同じ条件でテストしたわけではありません。
>(8) 問題のMPI_Bcastに到達する前に、MPIの他の通信は行っていますか?
他に行っているのは、MPI_Barrierのみです。同期をたくさん入れれば問題が解決するんじゃあ
ないかと思って、たくさん入れました。
>(9) 実プログラムが下記のような構成になっているとして
>(a)の部分をすべてコメントにすれば、
これらのテスト結果の報告は、後日させていただきます。

90 名前:sage [2006/01/19(木) 03:41:50 ]
mpichをインストールをしたいのですがconfigureで指定しなければならない
オプションをちょっと教えていただけないでしょうか?
osはfedora core4  コンパイラーにintel fortran compilar 9.0
mpich-1.2.7p1 を使用しています。
よろしくおねがいします。



91 名前:デフォルトの名無しさん [2006/01/19(木) 17:54:06 ]
こんなふうに、実数型と整数型を一緒にするとエラーがでます。
if ( myid .eq. 0 ) then
call MPI_IRecv(retunum,90,MPI_REAL8,1,itag(myid+2),MPI_COMM_WORLD,ireq2,ierr)
elseif ( myid .eq. 1 ) then
call MPI_ISend(retunum,60,MPI_REAL8,0,itag(myid+1),MPI_COMM_WORLD,ireq2,ierr)
end if
if ( myid .eq. 0 ) then
call MPI_IRecv(iretunum,90,MPI_INTEGER,1,itag(myid+2),MPI_COMM_WORLD,istaus,ierr)
elseif ( myid .eq. 1 ) then
call MPI_ISend(iretunum,60,MPI_INTEGER,0,itag(myid+1),MPI_COMM_WORLD,ierr)
end if
以下のように、何故ですか?わかる人教えて下さい。
test-calcul2.f:99: warning:
call MPI_IRecv(retunum,90,MPI_REAL8,
1
test-calcul2.f:106: (continued):
call MPI_IRecv(iretunum,90,MPI_INTEGER,
2
Argument #1 of `mpi_irecv' is one type at (2) but is some other type at (1) [info -f g77 M GLOBALS]

92 名前:デフォルトの名無しさん [2006/01/19(木) 17:56:58 ]
あ、タイプミスだ。
> if ( myid .eq. 0 ) then
> call MPI_IRecv(iretunum,90,MPI_INTEGER,1,itag(myid+2),MPI_COMM_WORLD,istaus,ierr)
> elseif ( myid .eq. 1 ) then
> call MPI_ISend(iretunum,60,MPI_INTEGER,0,itag(myid+1),MPI_COMM_WORLD,ierr)
> end if
if ( myid .eq. 0 ) then
call MPI_IRecv(iretunum,90,MPI_INTEGER,1,itag(myid+2),MPI_COMM_WORLD,ireq2,ierr)
elseif ( myid .eq. 1 ) then
call MPI_ISend(iretunum,60,MPI_INTEGER,0,itag(myid+1),MPI_COMM_WORLD,ireq2,ierr)
end if
です。

93 名前:デフォルトの名無しさん [2006/01/20(金) 00:14:20 ]
下記のプログラムでも同じエラーが出ますか?
もし同じエラーが出たとしたら、
同じサブルーチンの同じ引数に異なる型を指定しているという
警告で、MPIとは関係ないと思います。

program test
call sub(a)
call sub(i)
end
subroutine sub(a)
a=1
end

94 名前:デフォルトの名無しさん [2006/01/20(金) 00:21:15 ]
それから念のため補足ですが
-2つのif文を1つにまとめた方がすっきりすると思います。
-例えばランク0プロセスが同じireq2を(mpi_waitする前に)2回使うのはまずいです。
片方を例えばireq1にしてください。
また2回のcall mpi_xxxの後でmpi_waitが2回必要となります。
あるいはmpi_sendrecvを使う手もあります。

95 名前:91 [2006/01/23(月) 16:20:18 ]
>>93
まさにそれでした。
>>94
なるほど、了解です。
ところで、送信バッファーに3次元の配列を持たせたいのですが
送受信がうまくいきません。何故かわかる方いますか?
if ( myid .eq. 0 ) then
call MPI_Recv(test(i,j,1),3,MPI_REAL8,1,itag,
& MPI_COMM_WORLD,istaus,ierr)
else
call MPI_Send(test(i,j,1),3,MPI_REAL8,0,itag,
& MPI_COMM_WORLD,ierr)
endif
test(1〜50,1〜100,1〜3)です。





96 名前:デフォルトの名無しさん [2006/01/23(月) 18:40:47 ]
(1) test(i,j,1)のiとjには何が指定されてますか?
(2) 送る要素数は3個ですか?
(3) istatusは大きさmpi_status_sizeで配列宣言してますか?
(4) itagには何が指定されてますか?
(5) 実行するとどういうエラーになりますか?

97 名前:91 [2006/01/24(火) 11:15:33 ]
>>96
(1) test(i,j,1)のiとjには何が指定されてますか?
i=1,100とj=1,300です。DOループで指定されます。
(2) 送る要素数は3個ですか?
はい、南北方向・東西方向・上下方向の意味なので、3個です。
(3) istatusは大きさmpi_status_sizeで配列宣言してますか?
integer istatus(MPI_STATUS_SIZE)で宣言しています。
(4) itagには何が指定されてますか?
itag=1です。
(5) 実行するとどういうエラーになりますか?
テストプログラムで行った結果、エラー文は出ませんでしたが
入っているはずの値が入っていませんでした。
たとえば、10.5が入るはずなのに、0.0のままであったりします。



98 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 18:43:50 ]
動かない並列プログラムを無料でデバッグしてくれるスレはここですか?

99 名前:デフォルトの名無しさん [2006/01/24(火) 18:46:04 ]
例えばi=1,j=1のとき、送りたいデータは以下(A)(B)のどちらですか?
(Fortranの場合は(A)が送られます。)

(A)
test(1,1,1)
test(2,1,1)
test(3,1,1)

(B)
test(1,1,1)
test(1,1,2)
test(1,1,3)

余談ですが、通信回数が多いと通信時間がかかるので、
普通は送りたいデータをまとめて1回で送るようにします。
従ってループ内で通信を行うということはあまりしません。

100 名前:デフォルトの名無しさん [2006/01/26(木) 13:56:53 ]
MPIf77でコンパイルできても
MPIf90でコンパイルできねー!!
↓こんな感じのエラーしかでねー!!
IPO Error: unresolved : mpi_type_dup_fn_
Referenced in newfile.o
IPO Error: unresolved : mpi_win_dup_fn_
Referenced in newfile.o
newfile.o(.text+0x20): In function `MAIN__':
: undefined reference to `mpi_init_'
newfile.o(.text+0x34): In function `MAIN__':
: undefined reference to `mpi_comm_rank_'
MPIのインストールの時おかしな事したのか?おれ


101 名前:デフォルトの名無しさん [2006/01/31(火) 15:53:13 ]
age

102 名前:デフォルトの名無しさん [2006/01/31(火) 19:28:15 ]
こんなエラーがでるんだが誰れか原因解かりますか?
[root@clust-gri00 test]# mpif90 -o testfile testfile.f
/usr/local/mpich-1.2.6/lib/libmpich.a(farg.o)(.text+0x7): In function `mpir_iargc__':
: undefined reference to `f__xargc'


103 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 06:24:47 ]
まあせめて中のコンパイラぐらい書こうな

104 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 08:24:55 ]
あと大学名と担当教官名も

105 名前:デフォルトの名無しさん [2006/02/01(水) 18:04:38 ]
Intel Fortran Compiler 8.1 から Intel Fortran Compiler 9.0に入れ換えたらこんなのがでるようになった.
glibcのヴァージョンが古いのか?動くっちゃ動くし結果も間違っていないが、何か気持ちわるい。
誰れか改善方法しりませんか?
/opt/intel/fc/9.0/lib/libifcore.a(for_open_proc.o)(.text+0xc14): In function `for__compute_filename.':
: warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/local/mpich-1.2.6/lib/libmpich.a(p4_secure.o)(.text+0x87): In function `start_slave':
: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/local/mpich-1.2.6/lib/libmpich.a(chnodename.o)(.text+0x29): In function `MPID_Node_name':
: warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking




106 名前:デフォルトの名無しさん [2006/02/02(木) 04:11:56 ]
めっせーじぱっしんぐってなあに?

107 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 04:29:29 ]
読んで字の如く

108 名前:デフォルトの名無しさん [2006/02/02(木) 05:39:40 ]
いじわる><

109 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 19:20:57 ]
>>105
>103-104

110 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 13:03:09 ]
>>109

何が言いたいの?日本語わかる?
せめて会話くらいしろよ。キチガイ

111 名前:デフォルトの名無しさん [2006/02/09(木) 13:02:07 ]
age

112 名前:デフォルトの名無しさん [2006/02/09(木) 14:40:46 ]
MPICH2のC++バインドのクラス一覧が載ってるサイト知りませんか?
ユーザーガイドにも載ってないし。


113 名前:デフォルトの名無しさん mailto:sage [2006/03/01(水) 11:53:27 ]
>>105
インテルのサイトにも書いた?
softwareforums.intel.com/ids/board/message?board.id=11&message.id=3060

114 名前:デフォルトの名無しさん [2006/03/02(木) 23:48:55 ]
MPI初心者なんですけど、
MPICHダウンロードして、一緒についてきたサンプルプログラムを
MPICH Configurationで参加するノードを設定してから実行すると

Failed to launch the root process:
"C:\Documents and Settings\XXXXX\cpi"
LaunchProcess failed, LogonUser failed, ログオン失敗: ユーザー名を認識できないか
、またはパスワードが間違っています。

というエラーが返ってきます。
設定しなければローカルで動くんだけど、何でだろう?



115 名前:デフォルトの名無しさん mailto:sage [2006/03/03(金) 10:12:08 ]
www-unix.mcs.anl.gov/mpi/mpich/mpich-nt/mpich.nt.faq.html

Q. Why do I get this error, "Logon failure: unknown user name or bad password"?

Q. Why do I get this error, "LaunchProcess failed, CreateProcessAsUser failed, The system cannot find the file specified."?




116 名前:114 [2006/03/03(金) 17:57:11 ]
>>115
ありがとう!
やってみるね!


117 名前:デフォルトの名無しさん [2006/03/07(火) 16:00:54 ]
独学でisend bcastなどの基本的な関数は一通り使い方がわかったのですが、
なんか練習問題みたいなのはないですか?

そんな大規模演算をする機会もないし、
練習用に何かお勧めなものはありますか?

118 名前:デフォルトの名無しさん [2006/03/07(火) 17:20:48 ]
sendとrecvだけでbcast,scatter,gather,allgatherと同じ機能を作る
ヤコビ法の並列化
LU分解の並列化
2次元FFTの並列化

119 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 17:27:38 ]
π計算の並列化
e計算の並列化

120 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 19:24:56 ]
実用的なのは、

コマンド1
コマンド2
.
.
.
コマンドN
という独立したジョブが書いてあるテキストファイルを読み込んで、
P個のプロセッサで実行させるプログラム。
コマンドに依存関係つけるとなおよし。


121 名前:デフォルトの名無しさん [2006/03/12(日) 16:05:09 ]
MPI_Sendで送る際、相手が受け取るまでプログラムの実行を停止するにはどうしたらよいのでしょうか?

122 名前:デフォルトの名無しさん [2006/03/12(日) 16:09:32 ]
synchronous sendにすりゃいいのと違う?

123 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 21:03:03 ]
MPI_Sendだと送信バッファにコピーした状態で戻る実装が多いっぽいね。
↓にモードの説明が。
www.mpi-forum.org/docs/mpi-11-html/node40.html

MPI_Ssendがない実装もあるようだし、返答をMPI_RecvかMPI_Barrierするのが確実じゃない?
バンド幅を測るとかの場合、受信が完全に終了したのを確認するにはこれしか方法がなさげ。


124 名前:http://www.vector.co.jp/soft/win95/util/se072729.html mailto:http://msdn2.microsoft.com/ja-jp/library/h2k70f3s.aspx [2006/03/18(土) 21:10:21 ]
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

そういや64bitにネイティブ対応している2chブラウザてありましたっけ?





125 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 11:52:28 ]
C++BuilderでMPIを使うにはどうしたらよいのでしょうか?



126 名前:デフォルトの名無しさん [2006/03/24(金) 20:00:53 ]
MPICH2のWindows版を使っているのですが、
以下のようなプログラムでも時間が3秒かかります。(VC++、IntelC++とも)
MPI_Finalizeの終了処理に時間がかかっているようですけど
対策をご存知の方いっらいしゃますすか。

#include "mpi.h"
int main(int argc, char **argv) {
MPI_Init(&argc, &argv);
MPI_Finalize();
return 0;
}

127 名前:デフォルトの名無しさん [2006/04/13(木) 06:48:21 ]
ノンブロッキング通信というのは、簡単に言うとどういうものなのでしょうか?

128 名前:デフォルトの名無しさん mailto:sage [2006/04/13(木) 08:13:11 ]
バックグラウンドで通信処理をさせることで
一度に複数の相手と通信したり、
通信中に別の計算させたりするもの


129 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 21:15:20 ]
ほしゅしゅ

130 名前:デフォルトの名無しさん [2006/05/11(木) 15:37:35 ]
hoshu

131 名前:デフォルトの名無しさん [2006/06/02(金) 08:31:40 ]
あまり大きなサイズで一度に通信しようとすると、デッドロックするのは仕様ですか?

132 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 01:56:38 ]
実装によるだろ
そんな仕様はない

133 名前:デフォルトの名無しさん [2006/07/30(日) 21:08:39 ]
ちょ・・・こんな有益なスレがあったなんて。。
明日からmpi使うらしいんで勉強してきます

134 名前:・∀・)っ-○◎● ◆R.I.S.K.0. mailto:sage [2006/07/30(日) 22:45:31 ]
John the RipperのMPI対応版出たけど
アレって単にプロセス間通信やるだけよね?

プロセスレベルマルチタスクであってスレッドレベルマルチタスクじゃないよね?


135 名前:デフォルトの名無しさん [2006/09/05(火) 22:49:52 ]
Linuxにmpich-1.2.3を突っ込んで
int main(int argc, char **argv){
int procs, id;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &id);
MPI_Comm_size(MPI_COMM_WORLD, &procs);
printf("#### %d, %d ####\n", id, procs);
MPI_Finalize();
return 0;
}
なmain.cソースファイルを生成し,
mpicc main.c
mpirun -np 1 a.out
したところ
0 - <NO ERROR MESSAGE> : Could not convert index 1140850688 into a pointer
The index may be an incorrect argument.
Possible sources of this problem are a missing "include 'mpif.h'",
a misspelled MPI object (e.g., MPI_COM_WORLD instead of MPI_COMM_WORLD)
or a misspelled user variable for an MPI object (e.g.,
com instead of comm).
[0] Aborting program !
[0] Aborting program!
p0_11706: p4_error: : 9039
と言われてしまいました.
fortranプログラムでもないし,COMMをCOMと打ち間違えてもいないし……というわけで,原因・解決方法をご存知の方おりましたらご教授くださいませ.



136 名前:135 mailto:sage [2006/09/05(火) 23:46:15 ]
mpich-1.2.7拾ってきてぶっこんだら動きました.
吊ってきます.

137 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 11:29:00 ]
保守党

138 名前:デフォルトの名無しさん [2006/11/16(木) 01:19:10 ]
MPICH2をFedora Core3にて実行しようとしています。
mpdはローカルであれば、正常に起動してicpiなどきちんつ動いているのですが、
ネットワーク越しのリモートで分散させようとすると(mpdboot, rshに書き換え済み)
動作しません。

failed to ping mpd ...といったエラーがでます。

ちなみにrshは単体ではパスワードなしで動作しています。

Fedoreの設定はファイヤーウォールはインストールしていますが、
「ファイヤーウォールは無効」でやっています。

むしろmpdというよりもFedoraの設定のような気がしますが、同様な症状を
経験された方はおられますでしょうか?

139 名前:デフォルトの名無しさん [2006/11/28(火) 16:48:25 ]
WindowsXPのVC環境で、3次元空間内におけるある種のシミュレーションプログラムを作って、
それをLinux fedora3のgccとMPI環境で並列化しました。
いまのところWin1CPU版とFedoraMPI版は同じ結果を出してくれるので、いいのですが、
ソースをメンテナンスするときに、まず1CPU版で試して、それをMPI版に移植する作業
が結構わずらわしいので困っています。
MPI版はシミュレーション空間をn分割(n≧2)する仕様になっているので、n=1として
Windows上で動かすことはできません。
そこで思ったのですが、DUAL COREのWindowsマシンならば、そこにMPICH2をインストールして、
n=2で動かせば、CPUも2個使えるし、今後、MPI版のみメンテナンスすれば、fedoraでも
Windowsでもソースを共通化できるので、楽になると思ったのですが、この作戦、
どうでしょうか?何か注意すべき点などありましたら、アドバイス御願いします。


140 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 18:55:13 ]
>>139
mpi詳しくないけど
CPU二個とnode二個はぜんぜん違うからできないんじゃないの?

141 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 20:04:15 ]
例え、1CPUでもたいがいのMPI実装は2プロセスで並列実行できる

142 名前:デフォルトの名無しさん [2006/11/30(木) 10:50:29 ]
>141
ありがとございます。やってみます。

ところで、MPIプログラムのデバッグって、皆さんどういうふうにやっていますか?
私にはとても難しいです。というのは、エラー発生しても、どこかのnodeでエラーが
起こった程度のことしかわからないので、怪しげなところにprintfを沢山いれて探し
出すという泥臭い方法でやっています。
一方WindowsのVCの環境だとDebuggerでSTEPで一行ずつ実行できるので、便利なのですが、
MPIプログラム開発でも、でも何かそういう統合的な開発環境や高性能なDebuggerって
あるのでしょうか?

143 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 00:13:29 ]
VCってMPIサポートしてたよね?確か

144 名前:デフォルトの名無しさん [2006/12/02(土) 21:56:05 ]
>143
ほんまかいな?

145 名前:・∀・)っ-○◎● ◆DanGorION6 mailto:sage [2006/12/02(土) 22:26:17 ]
MPICH2のWin32バイナリってVC++で使えるんじゃなかったっけ



146 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 19:00:27 ]
Windows Compute Cluster Server 2003
MS MPI
あたりでぐぐりぇ


147 名前:・∀・)っ-○◎● ◆R.I.S.K.0. mailto:sage [2006/12/03(日) 19:07:05 ]
38度の熱が出てるのに俺元気だよなwwww

148 名前:・∀・)っ-○◎● ◆R.I.S.K.0. mailto:sage [2006/12/03(日) 19:07:20 ]
誤爆しますた><

149 名前:デフォルトの名無しさん [2006/12/04(月) 11:56:46 ]
>146
>Windows Compute Cluster Server 2003
これを買わないとWindowsXPでMPIはできないの?

150 名前:デフォルトの名無しさん [2006/12/04(月) 15:24:37 ]
mpiCCでHUGE_VALがあると、

huge-test.cpp(11): warning #1188: floating-point value cannot be represented exactly
double a=HUGE_VAL;

とワーニングが出るんだけど、どうしたらいいかな??

151 名前:デフォルトの名無しさん [2006/12/24(日) 01:09:15 ]
関数の引数として自分のタスクIDを渡して、その関数の中で受け取ったIDによって
判別して処理を書き換えるという方法に問題はあるでしょうか?
また一般的ですか?
それとも処理ごとに書き換えた関数を用意して、
呼び出す側でIDによって呼び出す関数を変えた方が良いのでしょうか?

ご回答よろしくお願いします。

152 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 14:18:16 ]
>>151
スレタイ嫁


153 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 16:11:55 ]
Mac OS X LAM-MPIの詳しい解説サイトない?

154 名前:デフォルトの名無しさん [2007/01/14(日) 01:14:46 ]
MPICH 1.2.5 でWindowsマシン2台でプログラムを動かそうとしたのですが、
以下のようなエラーを吐いてしまいました。
どなたか原因がわかる方いませんでしょうか。
pingでお互いのホストは認識されています。

>ERROR: The root process on "hostname" has unexpectedly exited. Exit code = -1073741515

155 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:35:32 ]
>>154
[hostname]ユーザーが登録されてるクラスタのプロセスがおかしいって言ってるね
もうちょっと構成とか詳しく



156 名前:デフォルトの名無しさん [2007/01/14(日) 16:33:20 ]
>>155
レスありがとうございます。
大学の研究室のマシン(XP)で、お互い同じワークグループに入っているようです。
構成についてもっと詳しく書きたいのですが、
どのように調べてどういった情報を書けばいいのか教えていただけますか?
よろしくお願いします。

157 名前:154 [2007/01/15(月) 19:54:35 ]
154です。
調べたのですがやはりよくわかりません。
>>156で同じワークグループだと書きましたが、それは関係ないみたいですね。
研究室のマシンがどのようにつながっているのか良くわからないのですが、
共有フォルダで互いのファイルを参照できたり同じワークグループに入って
いたりしたので、MPICHも問題なく動くものだと勘違いしていました。
WindowsでMPIを使う場合の構成の仕方が載ってるサイトの情報でも
とてもありがたいので、どなたかご教示願いいたします。

158 名前:155 mailto:sage [2007/01/15(月) 22:07:54 ]
>>157
ttp://www.google.co.jp/search?num=100&hl=ja&rls=GGGL%2CGGGL%3A2006-29%2CGGGL%3Aja&as_qdr=all&q=MPI+windows+filetype%3Apdf&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
googleでpdf検索すればどう設定すればいいか結構でてくるよ
あとMPIプログラミングやるなら虎の巻は読んどいた方がいいね、まあ健闘を祈る!
ところでCPUは何使ってる?

159 名前:154 [2007/01/16(火) 00:20:12 ]
>>155
レスありがとうございます。
リンクのトップに出てくるサイトで設定をしていてできなかったのです。
で、いじくってて気づいたのですが、ユーザーズガイドのシステム要件を見たら、
WindowsのHOME EDITIONは使えないのですね・・・
これはMPICH2を使えばいいのでしょうか。
MPICH2のほうのユーザーズガイドみたら特にPROに限るような記述はなかったので
HOMEでもいけるのですかね?

あと、CPUですがPentium4を使っています。

160 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 02:37:19 ]
>>159
Homeか・・・そりゃ無理だ
デュアルブートでLinux入れる気無い?何に使うかわからんがWindows環境を捨てるのも
一つの手だよ、ただMPIを動かしたいんならKnoppix MPIとか使うと簡単に起動できる
ttp://kagakububuturi.hp.infoseek.co.jp/
・・・つーかこれ高校生が作ったにしちゃあよくできてるよな
後Knoppix-MPIで使ってるMPIはLAM-MPIのほうだからMPICH使いたいならあわないかも
ttp://www20.atwiki.jp/mynote/?page=mpi
適当ですまん (;´Д`)/

161 名前:154 [2007/01/23(火) 03:52:37 ]
>>160
レス遅れてごめんなさい。
実はあれからMPICH2でやってみたところ、WindowsHomeでも動かすことができました!
たくさん相談にのっていただきありがとうございました。
ただ、今回4台で並列化行う予定なんですけど、
1台だけうまくいかないマシンがあってまた困っています。
他のマシンで2台でやってみると正常に実行できるのに、そのマシンを入れて行うと
"abort: Unable to connect to <hostname>"と出てしまいます。
設定は他のマシンと同じようにしてるつもりなのですが。
ようやくできるようになったと思ったのに、色々問題出てきますね・・・

162 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 15:13:21 ]
>>161
WinのMPICH2は使った事無いが<hostname>って言うノードが登録されてないんじゃないか?
ttp://www.imslab.co.jp/Product/eem/parallel/faq.htm
上のページの一番下が原因かも
あとMPI組んだならHPL(Linpack)ベンチマーク走らせて結果うp!

163 名前:154 [2007/01/24(水) 02:08:24 ]
>>162
レスありがとうございます!
ご指摘のとおり、アカウント名が原因でした。
あとベンチマークですが、、、余裕があったらやってみます、スミマセン^^;

164 名前:デフォルトの名無しさん [2007/01/30(火) 17:50:05 ]
あるプロセッサが持っている行列内の1列をまとめて別のプロセッサに送りたいんですが
どのような関数を使えばいいでしょうか?

165 名前:デフォルトの名無しさん [2007/01/30(火) 22:47:50 ]
Parallel Virtual Machine (PVM) 統合スレ
pc10.2ch.net/test/read.cgi/tech/1170150974/




166 名前:デフォルトの名無しさん [2007/01/31(水) 15:24:23 ]
共有変数を用意したいのですがどうすればいいですか?

167 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 19:26:04 ]
>>166
つ ny

168 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 09:33:01 ]
MPICH2でwindowsを2台動かそうとしているんですが、
wmpiconfig.exeでapplyボタンを押しても

<ホスト名>
Credentials for <アカウント名> rejected connecting to <ホスト名>
Aborting: Unable to connect to <ホスト名>

と表示されて設定できません。
アカウント名とパスワードは2台とも同じものを設定していて、
ファイアーウォールも切っています。
pingでもお互いを認識しています。
どなたか原因分かる方よろしくおねがいしますm(_ _ )m

マシン構成は
winXP HOME PEN4 1.6GHz
winXP PRO PENIII 800MHz
です

169 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:15:01 ]
MPI_Finalizeを呼んだら制御が返ってこなくなったんですが、
何か原因に心当たりのある方はおられませんか。

printf("before\n");
MPI_Finalize();
printf("after\n");
これをやったらbeforeしか表示されません。

ちなみにmpich-1.2.7@SUSELinux10.2です。

170 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:07:31 ]
設定がうまくいってないんだろ?

171 名前:169 mailto:sage [2007/02/27(火) 03:48:13 ]
NFSで共有していないファイルから問題設定を読んでいて、
PC毎にパラメタが変わってこけていたという罠。

吊ってきます
Λ||Λ

172 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 00:51:59 ]
並列計算に興味あるのですが、単に処理するデータを分割、各PCで計算、最後に統合するのでは
なく、PC毎に別のデータを別の処理方法で行っていて、あるPCの処理結果が別の処理中のPCの処
理に割り込んで処理方法を変えるなどということは出来るのでしょうか?

173 名前:デフォルトの名無しさん [2007/03/20(火) 23:06:11 ]
自作のC++プログラムの並列化をしています。
MPI_Finalizeを呼ぶタイミングについて疑問があります。

MPI_Finalizeをmainの末尾で呼べば無事に終わるのですが、
Singletonクラスのデストラクタの中で呼んだら落ちてしまいました。

main を抜けた後に呼んではいけないでんしょうか?
環境は、MPICH2、Win XP SP2、Visual Studio 2005 です。


174 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:28:13 ]
MPI_Gatherなどで、転送するデータタイプはMPI_DOUBLEなどで指定しますが、
データタイプがテンプレートに指定されたデータタイプによって変わる場合、
どのように設定したらよいのでしょうか?


175 名前:デフォルトの名無しさん [2007/05/19(土) 08:51:23 ]
平凡な方法ですが、
template<typename T> class MpiConst{};
template<double> struct MpiConst
{
  static const int TYPE = MPI_DOUBLE;
};

と特殊化をしておいてから、目的の template を作る
のは、どうでしょう。

これは、MpiConstを隠蔽する改良案です。
class Base
{
protected:
  Base();
  ~Base();

  static const int TYPE = MPI_DOUBLE;
   // 以下、MpiConst の定義・特殊化
};

template<typename T> TargetClass: protected Base
{ ... };





176 名前:デフォルトの名無しさん [2007/05/19(土) 09:14:10 ]
↑すみません。class Base の中の
static const ... の行を消し忘れました。

177 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 07:56:54 ]
openmpの場合、#ifdef _OPENMPでopenmpを使ってコンパイルしている
場合とそうでない場合に別々のコードを書くことができますが、
MPIの場合はどのようにしたらよいのでしょうか?







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<124KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef