X



Message Passing Interface (MPI) 統合スレ
0001デフォルトの名無しさん
垢版 |
NGNG
MPIによる並列プログラミングについて話し合う統合スレッドです。

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

0497495
垢版 |
2011/09/04(日) 09:45:19.22
>>496さんの言った通り直しても通りませんでした…。
正直自分の知識じゃ限界を感じているので
代わりにやってくれる方がいれば報酬払ってもいいです。
最大2万円までしか出せませんが…。メール待ってます。
0498デフォルトの名無しさん
垢版 |
2011/11/15(火) 11:36:05.43
openmpi使ってるんだがnohupが効かねぇ・・・
端末PC落とすと計算やめちゃうんだが
0499デフォルトの名無しさん
垢版 |
2011/11/19(土) 16:31:12.60
へえ
0500デフォルトの名無しさん
垢版 |
2011/11/24(木) 19:56:37.29
MPIの勉強始めようと思うんだけどMPI3ってのはまだ出てないの?
0501デフォルトの名無しさん
垢版 |
2012/05/16(水) 14:34:19.07
OpemMPとの違いを教えてください
0502デフォルトの名無しさん
垢版 |
2012/05/16(水) 15:20:09.38
MPI
妖精がいっぱい同時に働く。
拍子を合わせそこなうと、ぐだぐだ。
プログラムは最初から並列前提で書く方が
いいかもしてない。非並列からの移行は面倒臭い。
OpenMP
手がいっぱいある妖精が独りで頑張る。
並列化はかなり楽。

混在できるけどね。

gfortran とか無料コンパイラがOpenMPに
対応しているし、マルチコアCPUが
普通になってきた今日、
小規模から中規模ならOpenMPがオススメ。
大規模スパコン使う可能性があるなら、
MPI で最初から組むべし。
0503デフォルトの名無しさん
垢版 |
2012/06/21(木) 09:40:29.85
MPIにおすすめのスイッチングハブを教えてください
0504デフォルトの名無しさん
垢版 |
2012/08/03(金) 08:01:03.03
>>503
バカハブこれ最強
0505デフォルトの名無しさん
垢版 |
2012/10/31(水) 13:14:04.95
LANポートにあきがあるならノードでリングベース組むのが勉強になるで

俺は混在は結構ありだとおもうで
クラスタとかなら通信時間削減が期待できる
0506デフォルトの名無しさん
垢版 |
2012/11/23(金) 18:27:19.04
gigabit ethernetからInfiniBandに変えた場合のベンチマーク結果とかありますか?
アプリケーションにも依るとは思うのですが、ある程度、どのくらい向上するのか知りたいのですが
      ♪∧,,∧
   ♪∧,,∧・ ω・)
 ∧,,∧・ ω・)   )っ
(・ ω・)   )っ__フ
(っ  )っ__フ(_/彡
 ( __フ(_/彡
  (_/彡♪
0507デフォルトの名無しさん
垢版 |
2013/04/01(月) 12:31:36.78
www.science-academy.jp/showcase/11/pdf/P-108_showcase2012.pdf
↑こいつとか、国泰寺高校もそうだけど、学生でもこういうMPIのシステムを構築できる時代なんだな。
ただ、それゆえに性能測定しかしていない。
テーマを持たないと意味ないよな。
それに関して指導できる教師が高校にいるものだろうか?
0508デフォルトの名無しさん
垢版 |
2013/04/21(日) 05:09:09.55
動的に確保する要素を含む構造体のデータタイプを作るにはどうしたらいいのでしょうか。

int MPI_Type_struct(int count,
int blocklens[],
MPI_Aint indices[],
MPI_Datatype old_types[],
MPI_Datatype *newtype)

のMPI_Aint indices[]のアドレス計算部分で構造体の動的に確保した要素のせいで
アドレスが一部分に固まってないのでよくわかりません。
0510デフォルトの名無しさん
垢版 |
2013/07/28(日) NY:AN:NY.AN
多体問題とか計算させて可視化とか
ありきたりだけどインパクトはあるよね
そんなに難しくないし
0512デフォルトの名無しさん
垢版 |
2013/10/20(日) 20:32:46.52
初めてMPIプログラムをしたのですが、しばらく動いた後に何回も通っている MPI::COMM_WORLD.Isend で
Segmentation fault が出てしまいます。
Debian(wheezy)の OpenMPI 1.4.5 を使っています。どのような時にこのエラーが出るのでしょうか?
テストプログラムを組んで第1引数をポインタのみで実態が無いように組んでみましたが、一発でエラーが出て
出方が違っていました。この時のエラーは次のように出ます。

[hostname:7247] *** An error occurred in MPI_Isend
[hostname:7247] *** on communicator MPI_COMM_WORLD
[hostname:7247] *** MPI_ERR_BUFFER: invalid buffer pointer
[hostname:7247] *** MPI_ERRORS_ARE_FATAL (your MPI job will now abort)

もし宜しければアドバイスお願いします
0513デフォルトの名無しさん
垢版 |
2013/10/21(月) 18:46:01.68
mpi_err_buffer invalid buffer pointer でググると、
Stackoverflows上のQ&Aなどの情報が見つけられるね
0514512
垢版 |
2013/10/22(火) 20:15:27.18
>>513
レス有難うございます。
ググってみましたが、英語が堪能でないため理解できていない状態です orz

ですがテストプログラムで起きる条件を見つけることが出来ました。
スレッドでRecvで待ち受けている状態で同じランク内でIsend, Irecvで
色々送受信する時にエラーが発生するようです。
RecvをIrecvに変更してタグを分ければエラーが発生しないようですが、
まだ良く見ていないのでなんとも言えない状態です。
コミュニケータとかタグをよく理解していなくてよく分からないのですが、
何となく通信を分けれればいいな程度ならタグで分けるでOKです?
0516デフォルトの名無しさん
垢版 |
2013/12/04(水) 11:39:20.69
MPI の勉強のために、コードの主要部分は C で書かれていて、
具体的な計算部分は fortran77 で書かれたサブルーチンを
呼んでいる混在コードを MPI 並列化したいと思っています。
当面の目標は、MPI の初期化・終了部分などを C の部分で書いて、
fortran で書かれている部分に具体的な指示行を入れて並列化を
することなのですが、私の勉強不足で、最初からつまづいている
状態です。

C の部分に
 MPI_Init(&argc, &argv);
 MPI_Finalize();
を入れて、
0517デフォルトの名無しさん
垢版 |
2013/12/04(水) 11:41:00.26
fortran のサブルーチンに MPI のヘッダや変数定義、MPI 関数
 #include <mpi.h>
 integer nprocs, myrank, ierr
 call MPI_Comm_size( MPI_COMM_WORLD, nprocs, ierr )
 call MPI_Comm_rank( MPI_COMM_WORLD, myrank, ierr )
 write(*, *) nprocs, myrank

を入れてコンパイルし、4並列の MPI 計算をしてみたところ、
全てのプロセスで nprocs と myrank が 0 と表示されて
しまいました。fortran 部分で新規に nprocs と myrank を
定義しているのが原因なのではないかと思っていますが、
C から正しく fortran 側に情報を伝えて、正しく表示させる
(nprocs = 4 など)には、どのようにすればよろしいでしょうか。
MPI の基礎が分かっておらず、全くの素人質問で申し訳ありませんが、
ご助言など頂けますと助かります。
0518デフォルトの名無しさん
垢版 |
2013/12/04(水) 13:06:04.90
FORTRANはしばらく触っていないけど、includeは正しいの?
私もMPIプログラムは素人だけど疑問は何点か有るよ

疑問1、MPIを含まないCとFORTRANの混成は問題なく作れるのか?
疑問2、C又はFORTRAN単独言語の時にMPIのプログラムは作れるのか?
疑問3、C、FORTRAN、MPIのバージョンはいくつ?また実装系は何ですか?

で話は少し変わってくるんじゃないかな
0519デフォルトの名無しさん
垢版 |
2013/12/04(水) 13:35:33.96
アドバイス頂きありがとうございます。
1 についてですが、MPI を含まない C と FORTRAN の混成で
作られたコードは問題なく動いていまして、そのコードを
これから MPI 化したいと思っています。
2 についてですが、現在の C と FORTRAN の混成で作られた
コードの規模が割と大きいため、C 又は FORTRAN 単独言語に
書き換えるのが容易ではありませんが、仮にできたとすると
単独言語用の一般的な方法で MPI 化できると思っています。
3 についてですが、C と FORTRAN、MPI のバージョンはそれぞれ
icc (ICC) 12.1.4 20120410
mpiifort (IFORT) 12.1.4 20120410
Intel MPI 4.0.3
です。 また、実装系は intel のワークステーションです。
現時点では FORTRAN 側での include ファイルは mpi.h
だけですが、それが正しいかどうかは自信がありません。
何かご助言などありましたらお教え頂けるとありがたいです。
0520デフォルトの名無しさん
垢版 |
2013/12/04(水) 14:02:42.00
includeはC言語の書き方に見えたんで書いたんだけど・・・
include 'mpif.h' とか書くんじゃない?
intelのコンパイラは使ったこと無いからわからないけどね
疑問2については簡単なプログラムを(rankを表示する)書いてみたらいいんじゃないと言う意味で書きました
0521デフォルトの名無しさん
垢版 |
2013/12/04(水) 16:27:50.33
説明不足ですみませんが、先の include は FORTRAN の部分に挿入した
ものです。別途 C の部分には、既に #include "mpi.h" と書いていますが、
もしかして、include 文は C の部分に書いておけば、あらためて
FORTRAN の部分には書く必要はないのでしょうか???
2 については、C も FORTRAN も簡単なプログラムを書くことで、
MPI が動作する(rank が表示される)ことを確認しています。
ただ、今回のような C の中に FORTRAN が入れ子になっている状態での
MPI の書き方がわからず(FORTRAN の subroutine を呼んでいる箇所の
前後で MPI の指示文を書いてもダメなのでしょうね?)、困っています。
0522デフォルトの名無しさん
垢版 |
2013/12/04(水) 17:19:45.26
テストしていないので話半分で聞いて下さい。
まずFORTRANに書くincludeの書き方が間違っている
includeはファイルが分割されているとそれ毎に書く必要がある
なので

----- main.c -----
#include <mpi.h>
int main( int argc, char *argv[] ) {
MPI_Init( &argc, &argv );
fortran_subroutine();
MPI_Finalize();
return 0;
}
----- fortran_subroutine.f -----
include 'mpif.h'
sobroutine fortran_subroutine()
integer nprocs, myrank, ierr
call MPI_Comm_size( MPI_COMM_WORLD, nprocs, ierr )
call MPI_Comm_rank( MPI_COMM_WORLD, myrank, ierr )
write(*, *) nprocs, myrank
end subroutine fortran_subroutine

こんな書き方になると思います(FORTRAN忘れましたw)
小さなプログラムで書き方をテストしてからやった方がいいのでは?
0523522
垢版 |
2013/12/04(水) 21:43:48.10
Linux 環境でOpenMPI 1.4.5 gcc 4.7.2 でコンパイルすると実行時にエラーが出てしまうね。
この環境で混在できるのだろうか? ここ人が少なくで答えてくれる人居ないだろうな
>>521さんも環境に依存する部分なので上手く行くと良いですね

前のプログラムにタイポと抜けがあったので修正しました
% mpif77 -c rank.f
% mpicc -o test02 main.c rank.o -l:/usr/lib/gcc/i486-linux-gnu/4.7/libgfortran.a -lmpi_f77
でコンパイルしました

----- main.c -----
#include <mpi.h>
void rank_();
int main( int argc, char *argv[] ) {
MPI_Init( &argc, &argv );
rank_();
MPI_Finalize();
return 0;
}
----- rank.f -----
C include 'mpif.h'
subroutine rank
integer nprocs, myrank, ierr
call MPI_Comm_size( MPI_COMM_WORLD, nprocs, ierr )
call MPI_Comm_rank( MPI_COMM_WORLD, myrank, ierr )
write(*, *) nprocs, myrank
end subroutine rank
0524522
垢版 |
2013/12/04(水) 22:18:07.46
includeをsubroutineの後に持ってきたら実行も上手く行きました orz...

----- rank.f -----
subroutine rank
include 'mpif.h'
integer nprocs, myrank, ierr
call MPI_Comm_size( MPI_COMM_WORLD, nprocs, ierr )
call MPI_Comm_rank( MPI_COMM_WORLD, myrank, ierr )
write(*, *) nprocs, myrank
end subroutine rank
0525デフォルトの名無しさん
垢版 |
2013/12/06(金) 01:28:12.82
>> 522 さん
ご返信が遅くなり大変申し訳ありませんでした。

この度はコードのご指導まで頂き、本当にありがとうございました!
私の環境は intel 環境で、不勉強もありなかなか上手くいきません
でしたが、参考にさせて頂きつつ、なんとか
mpiifort -c rank.f
mpiicc -o a.out main.c rank.o -lifcore -limf
mpirun -np 4 a.out
で動きました!嬉しいです!!
この度は、ご助言頂き本当にありがとうございました!!
0527デフォルトの名無しさん
垢版 |
2014/08/27(水) 03:15:26.43ID:SX33fbF3
おるでw

最近はMPIのインストール方法とか使用方法とかを説明する記事やドキュメントが多いから、わざわざ2ちゃんのスレにカキコするまでもないのではないかな…
0528デフォルトの名無しさん
垢版 |
2014/09/25(木) 20:37:56.94ID:77m4KJC/
プログラミング初心者ですが質問させてください。
フリーウェアだけでfortranのmpiを用いた並列計算環境って用意できますか?
OSはwindowsです。色々解説サイトを回ったのですが、OSがwinで
フリーウェアという条件に一致するものがありません。
解説サイトか、フリーウェアを紹介していただけたら幸いです。
0529デフォルトの名無しさん
垢版 |
2014/09/25(木) 20:55:19.71ID:1qsw9PIQ
WindowsにVirtualboxをインストール
VirtualboxにLinuxをインストール
ゲストOSでmpi環境構築

以上
0530デフォルトの名無しさん
垢版 |
2014/09/25(木) 23:09:57.41ID:77m4KJC/
>>529さん回答ありがとうございます。
早速試してきます。
0531デフォルトの名無しさん
垢版 |
2014/09/26(金) 00:43:22.36ID:w0XQeQM8
すみません。再度質問します。
とりあえず、並列計算を行える環境にはなったのですが、
8コアで計算させていたら全てのコアで使用率が100%となりました。
計算速度は犠牲にしてよいので、使用率を50%程に低下させつつ動作させることは
可能でしょうか?
0534デフォルトの名無しさん
垢版 |
2016/03/29(火) 09:26:01.42ID:/c8bAcK4
サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート
0535デフォルトの名無しさん
垢版 |
2016/08/19(金) 15:54:40.93ID:hNG+d2Rp
windows10を2台とMSMPIで通信したいんだが
error 1825のセキュリティパッケージ固有のエラーとやらが出て通信できないんだ
firewallはオフにしてもだめ
OSはwindows HPC clusterとかじゃないとできなかったりする?
0536デフォルトの名無しさん
垢版 |
2016/10/13(木) 07:16:32.67ID:aU3BNmFk
SMPマシン数台のMPICH2環境を構築しようとしています。
とりあえず8コアマシンで1ノード1CPUでの環境は作り、ベンチマークなどをとってテストしている最中です。
さて、ここからSMP+MPICH2混在環境に移行しようとしてるんですが、SMP環境をアクティブにする方法が判りません。
どうしたらいいのでしょうか??

環境は
centos6.8
mpich1.21p1
です。
よろしくお願いします。
0537デフォルトの名無しさん
垢版 |
2017/01/09(月) 17:58:00.69ID:nq81pkaz
SMPをアクティブにするってどういうことだろうか?
単純にOpenMPを使えば良いだろうに。
0538デフォルトの名無しさん
垢版 |
2017/02/27(月) 23:58:25.54ID:UI1UeTdZ
初めてInfiniBand使ったけど爆速だなこりゃ。
0539デフォルトの名無しさん
垢版 |
2017/08/25(金) 02:38:12.16ID:LiutTzVc
OpenMPIを使うコードがinfinibandがある環境がない環境に比べ滅茶苦茶遅くて困った。
プロファイルとって調べたらopal_memory_ptmalloc2_int_mallocが一番時間食っていた。
コミュニケータは作るものの通信を一切しないテストコードなのにOpenMPIのmalloc系の関数が
何故に出てくんのかと思ったら、これglibcのmallocをフックしちゃうやつなのね。
mpirunに「--mca mpi_leave_pinned 0」を付けると無効化できて速度が元に戻ったけど、
このmpi_leave_pinnedはinfinibandのようなRDMA対応ネットワークのための設定なのに
有効化すると逆に遅くなるのが解せない・・・。
0540デフォルトの名無しさん
垢版 |
2017/08/25(金) 03:05:28.93ID:LiutTzVc
ググって見つけた論文「HPCクラウドの実現に向けた仮想化クラスタの性能評価」には

Infiniband使用時にMPI集団通信を向上させるために、実行時オプションとして
「--mca mpi_leave_pinned 0」を付加した

って記述があるが、OpenMPIのFAQによればそれだとメモリをpinできないので遅くなるはず。
結局Infinibandを正しく使うにはどう設定するべきなんだろうか・・・。
0541デフォルトの名無しさん
垢版 |
2017/08/31(木) 00:38:03.64ID:CbVYdpce
>>540だけど、OpenMPIのFAQを見たらメモリのpinningをデフォルトで有効にする仕様については
開発者で反対意見もあったらしい。そりゃそうだろう・・・。
そんなん必要なのはMPIで参照するデータだけなのに、システムのmallocごと差し替えるというのは
やりすぎではないか・・・。
0542デフォルトの名無しさん
垢版 |
2018/05/23(水) 21:50:25.15ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

12MI6
0543デフォルトの名無しさん
垢版 |
2018/07/05(木) 00:11:39.46ID:RfoszcD2
ES4
0546デフォルトの名無しさん
垢版 |
2022/01/01(土) 22:23:23.80ID:TCOZEf7v
新打法がいいね
レスを投稿する


ニューススポーツなんでも実況