No Such Blog or Diary
キャッシュ効率以前の問題だった
- 2012-01-31 (Tue)
- 一般
キャッシュの効きが良くなるようにプログラムの流れを変えてみたのだけど,実行時間に変化が2%程度しか無い.
で,よくよく測定してみると 320MB/s 程度の速度でしかデータを読みに行っていないらしい.単位要素あたりの計算が重すぎてメモリのアクセス速度が問題にならないという状況.
とりあえずsqrtを使いまくっている部分をどうにか排除したい気分.確か平方根なしバージョンがあるとか聞いたような気がするのでちょいと調べよう.
- Comments: 0
- TrackBack (Close): -
元のプログラムに勝つ
- 2012-01-30 (Mon)
- 一般
ガーッと6時間くらい連続でプログラムを書いて午前のミーティング前にデバッグもほぼ終了.昼に最後のバグ取りをして完成.
とりあえず,共有メモリなマシン上のMPIで動かして,元のOpenMPのプログラムに比べて数%速い程度の性能になった.バリア同期を全く使わずにバトンの受け渡しのみで全体を動かしていることと,各プロセッサの走る領域が固定なのでキャッシュ効率が高くなってたりすることのメリットがMPIのオーバヘッドを上回ったか? とりあえず24コアで16倍を超えるので満足した.巨大なクラスタで試してみたいけれど使えるクラスタが生きてねぇ……
さらなるチューンとしては,次のプロセッサへのバトン渡しを複数回分まとめて行うようにして,さらに複数回の走査を細切れに折返して進めるようにして1次キャッシュを有効利用する…… とかやると速くなるかなぁ.試してみないとわからんけど速くなったら楽しいな.
閑話休題.
でもなぁ,この計算ってどんだけ需要があるのかよく分からないという問題が…… 今回のを似たような計算に応用できるといいなぁ.
- Comments: 0
- TrackBack (Close): -
引き続きプログラムを書く
- 2012-01-29 (Sun)
- 一般
とはいえ余計な事務作業に時間を取られて大枠の構造を作ったのみ.細かい境界部分の例外処理などはまだまだ.ここらの境界の処理を自動でどうにかしてくれるシステムが恋しい.
計算の仕様を元プログラムから読み取って理解する必要があるのだけど,ちょっと勘違いしていた部分があることに気づいた.考えていたのと逆方向の通信も必要になるのか…… ちょっと全体の流れを見直す.
- Comments: 0
- TrackBack (Close): -
久々にMPIでプログラム(というかアルゴリズム)を組み始める
- 2012-01-28 (Sat)
- 一般
配列を先頭から末尾まで順に走査して値を更新していくことを繰り返す反復アルゴリズムをMPIでパイプラインな並列プログラムに書き換えるという作業を始めた.既に OpenMP でタイミングをずらした走査を並列に走らせるという並列化がなされているのだけど,分散環境ではデータをあまり動かしたくないので各プロセッサは自分の担当領域内だけを走って次にバトンを渡すという方式に変える.走査を繰り返す間に段々と末尾が無くなっていくのでデータの再配置も適宜必要.めんどい.
とりあえず学生の作った別方式のMPIプログラムに勝つことを目標にがんばる.月曜までには結果を出したい.
- Comments: 0
- TrackBack (Close): -
Let'snoteにヒビが入って欠けた
- 2012-01-27 (Fri)
- 一般
何か知らんけど力が集中する場所だったのか暫く前からヒビが入ってた部分が気づいたら欠けてた.Let'snote4台目にして初めての破損.うーん……
閑話休題.
黒はんぺんうめェ.
- Comments: 0
- TrackBack (Close): -