CELL.PJ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[ASL Wiki]]
*メンバー [#f866fcfc]
-[[松本]]
-[[西川]]
-[[進藤]]
-[[池上]]
-[[大堀]]
-[[三留]]
*お知らせ [#j63ef171]
皆さん自分にならできる、自分にしかできないことを探して頑張りましょうwww~
-12/05 SDK3.0導入しました。[[CELL/実行環境]]
--プログラムのコンパイル時にエラーが出たりしたら、ここに書き込みお願いします。
--また、コンパイラのバージョンの違いで、速度が向上したりしたら...嬉しいですね^^
*チームの目標 [#t2c3e747]
CELLを用いてN体問題を高速化。~
100Gflopsを目指して頑張りましょう。~
//*指針 [#n74d5a13]
*現在のチームの目標 [#k0f1fa8c]
**2007/11/10〜 [#w7f6ae8a]
まず簡単なものを作りましょう。~
[[CELL/仕様/20071110]]~
~
-PPEのみで実行されるN体問題プログラム(revision 1)は動作確認済みです。
-SPEに加速度計算を依頼するPPE側プログラム(force_spe.c)とSPEのプログラム(spe-main.c)をコーディング&テストする必要があります。
//**2007/11/16〜 [#y5d3281c]
*現在の問題点、改善点羅列 [#c4c8c658]
あったらどうぞ。~
解決の糸口を持っている人がいるかもしれませんよ。~
**SPEの最適化 [#ad59e6c9]
-Vector演算&color(blue){進藤、大堀};
-ld/st タイミング&color(blue){進藤、大堀};
-loop unrolling&color(blue){進藤、大堀};
-アセンブラ(レジスタ割り当て)&color(blue){進藤、大堀};
-&color(red){アルゴリズムの効率化};
--&color(red){あるFijを求めるとFji(=-Fij)も求められる。なので、Fjiを計算する必要がない。現段階では、FijとFjiを計算している。};~
**転送方法の最適化 [#ucbb8a64]
-ring状転送&color(blue){池上、西川、三留};
-積分方法の変更&color(blue){池上、西川、三留};
-ダブルバッファリング&color(blue){池上、西川、三留};
-%%&color(red){早急};(同期必須)SPEプログラムのロード&color(blue){松本};%%
--%%SPEコンテキストを一度だけ実行するように変更する。%%
-%%&color(red){早急};(同期必須)SPEの初期化とループを分けて考える。&color(blue){松本};%%
-%%DMA list%%
--%%MFCに複数DMA依頼%%
-%%j粒子、128バイト倍数のサイズ、128バイト境界のDMA転送%%
**実装すべき機能 [#wdd1d173]
-粒子24000(くらい)以上への対応~
--1回のDMA転送の最大サイズは16KBなので複数回の転送が必要
**実行時間の計測 [#d8a3c7b3]
&color(blue){進藤、大堀};
-空ループを使用して、PPU優先度を上げてから計測すること。
+SPE側での力の計算にかかる速度
+SPE側のデータ転送を含めた計算の速度
+PPE側の積分計算にかかる速度
*やることリスト [#z96fba97]
**進藤 [#hb276bc3]
-&color(blue){行列演算をしているサンプルのページを読む([[ここ>http://tu-dresden.de/die_tu_dresden/zentrale_einrichtungen/zih/forschung/architektur_und_leistungsanalyse_von_hochleistungsrechnern/cell/index_html/document_view?body_language=en]])};
-&color(blue){ソースも解読する。}; ~
**松本 [#s2652adc]
-粒子24000(くらい)以上への対応
-改良点を探す
**池上 [#i2c48a79]
**西川 [#pd7677bd]
-リング状のSPEにXDRからデータをDMA転送で送って処理できるようにする。
-処理の開始終わりに対して同期をとる。(今は、SPEが順番に処理しているため遅い)
-積分処理をどこで実行させるか考える。
*現状 [#x860583b]
**進藤 [#f624b7be]
-&color(red){アセンブラ化のページ読み};
-&color(red){最適化(ループアンローリングらへん)の演習見返す。};
**松本 [#ob5ee82f]
**池上 [#d53f1879]
リポジトリが変わったことに気が付いた
**西川 [#h8677d3f]
11/09(松本君と一緒)
-複数のSPE(最大6個)を同時に同じ処理(簡単な足し算&掛け算)を行えるか確認を
行った。(演習1−5を参考)~
-また、6つのSPEの並列処理を繰り返し2〜5回連続で行っても結果が正しく出力さ
れるかを確認を行った。(演習1−5&1−3を参考)~
11/13 (松本君と一緒)
-PPE->SPEへDMA転送でデータを転送できるか確認(配列(要素数8&16))
-SPEで計算した結果をまたSPE->PPEへ正しく転送できたかを確認
-今回は、XDR->LSのDMA転送のやり取りが正しくできるかの確認!!!
-書いたfileは、リポジトリのn-body/DMAにSPE&PPEのfileを置いておきました。ファイルを見る場合は[[CELL/subversionの使い方]]を参照のこと。~
今回見つかった疑問
-DMA転送できるデータのサイズが16byteの倍数でしか遅れない(仮)??~
実際に、配列の要素数を変えて各自確認ください!!!~
&color(red){これに関してはハンドアウト2回目のP22に書いてあることでないか??違ってたらすみません。-進藤};~
11/20
-SPEの接続関係をring状の転送に書き換えた。SPE1~SPE6の順に接続させお互いの接続しているSPEのIDを出力するプログラムを作成。
**大堀 [#dbfd8bc7]
11/20
計測結果
+SPE側での力の計算にかかる速度
+SPE側のデータ転送を含めた計算の速度
+PPE側の積分計算にかかる速度
-力の計算(SPE)
--計測に使った関数 : gettimeofday
--単位 : sec, Msec
--速度 :
-データ転送込力の計算(SPE)
--計測に使った関数 : gettimeofday
--単位 : sec, Msec
--速度 :
-積分計算(PPE)
--計測に使った関数 : gettimeofday
--単位 : sec, Msec
--速度 :
|粒子数|速度|
|32| 0.000027 sec|
|128| 0.000092 sec|
|512| 0.000382 sec|
|1024| 0.000778 sec - 0.000802 sec|
|1024x2| 0.001559 sec|
|2048| 0.001552sec|
|3000| 0.002314sec|
|4096| 0.003450sec|
|8192| 0.006788sec|
|8193| 0.006758sec|
|10240| 0.008423sec|
|16384| 0.013629sec|
|32768| バスエラー|
|655536| バスエラー|
-&color(red){疑問};
--計測前に、空ループを行っているが、CPU占有率:1(topコマンド)、メモリ占有率:1.2(topコマンド)
--これは、PPUの占有率ということ?SPUの占有率が最大になっているかどうかは調べられない?
--知ってる人がいたら教えてください。
*[[Cell/リポジトリ更新履歴]] [#ycd5cf3f]
リポジトリの変更内容を記述
*性能 [#fa3de156]
*[[Cell/提案掲示板]] [#r61e6576]
*ソースコードの管理方法 [#h7fd0884]
subversionによってソースコードの管理を行う。~
ソースコードの取得方法やsubversionの使用方法は以下。~
[[CELL/subversionの使い方]]
*プログラムの説明 [#tb33ab05]
n-bodyディレクトリ内のプログラム解説。~
[[CELL/プログラムの説明/revision 1]]~
※revision番号は、subversionのrivision番号と同じです。~
*プログラムの実行方法 [#i41029eb]
N体問題の実行方法やその可視化方法について。~
[[CELL/プログラムの実行方法/revision 1]]~
※revision番号は、subversionのrivision番号と同じです。~
終了行:
[[ASL Wiki]]
*メンバー [#f866fcfc]
-[[松本]]
-[[西川]]
-[[進藤]]
-[[池上]]
-[[大堀]]
-[[三留]]
*お知らせ [#j63ef171]
皆さん自分にならできる、自分にしかできないことを探して頑張りましょうwww~
-12/05 SDK3.0導入しました。[[CELL/実行環境]]
--プログラムのコンパイル時にエラーが出たりしたら、ここに書き込みお願いします。
--また、コンパイラのバージョンの違いで、速度が向上したりしたら...嬉しいですね^^
*チームの目標 [#t2c3e747]
CELLを用いてN体問題を高速化。~
100Gflopsを目指して頑張りましょう。~
//*指針 [#n74d5a13]
*現在のチームの目標 [#k0f1fa8c]
**2007/11/10〜 [#w7f6ae8a]
まず簡単なものを作りましょう。~
[[CELL/仕様/20071110]]~
~
-PPEのみで実行されるN体問題プログラム(revision 1)は動作確認済みです。
-SPEに加速度計算を依頼するPPE側プログラム(force_spe.c)とSPEのプログラム(spe-main.c)をコーディング&テストする必要があります。
//**2007/11/16〜 [#y5d3281c]
*現在の問題点、改善点羅列 [#c4c8c658]
あったらどうぞ。~
解決の糸口を持っている人がいるかもしれませんよ。~
**SPEの最適化 [#ad59e6c9]
-Vector演算&color(blue){進藤、大堀};
-ld/st タイミング&color(blue){進藤、大堀};
-loop unrolling&color(blue){進藤、大堀};
-アセンブラ(レジスタ割り当て)&color(blue){進藤、大堀};
-&color(red){アルゴリズムの効率化};
--&color(red){あるFijを求めるとFji(=-Fij)も求められる。なので、Fjiを計算する必要がない。現段階では、FijとFjiを計算している。};~
**転送方法の最適化 [#ucbb8a64]
-ring状転送&color(blue){池上、西川、三留};
-積分方法の変更&color(blue){池上、西川、三留};
-ダブルバッファリング&color(blue){池上、西川、三留};
-%%&color(red){早急};(同期必須)SPEプログラムのロード&color(blue){松本};%%
--%%SPEコンテキストを一度だけ実行するように変更する。%%
-%%&color(red){早急};(同期必須)SPEの初期化とループを分けて考える。&color(blue){松本};%%
-%%DMA list%%
--%%MFCに複数DMA依頼%%
-%%j粒子、128バイト倍数のサイズ、128バイト境界のDMA転送%%
**実装すべき機能 [#wdd1d173]
-粒子24000(くらい)以上への対応~
--1回のDMA転送の最大サイズは16KBなので複数回の転送が必要
**実行時間の計測 [#d8a3c7b3]
&color(blue){進藤、大堀};
-空ループを使用して、PPU優先度を上げてから計測すること。
+SPE側での力の計算にかかる速度
+SPE側のデータ転送を含めた計算の速度
+PPE側の積分計算にかかる速度
*やることリスト [#z96fba97]
**進藤 [#hb276bc3]
-&color(blue){行列演算をしているサンプルのページを読む([[ここ>http://tu-dresden.de/die_tu_dresden/zentrale_einrichtungen/zih/forschung/architektur_und_leistungsanalyse_von_hochleistungsrechnern/cell/index_html/document_view?body_language=en]])};
-&color(blue){ソースも解読する。}; ~
**松本 [#s2652adc]
-粒子24000(くらい)以上への対応
-改良点を探す
**池上 [#i2c48a79]
**西川 [#pd7677bd]
-リング状のSPEにXDRからデータをDMA転送で送って処理できるようにする。
-処理の開始終わりに対して同期をとる。(今は、SPEが順番に処理しているため遅い)
-積分処理をどこで実行させるか考える。
*現状 [#x860583b]
**進藤 [#f624b7be]
-&color(red){アセンブラ化のページ読み};
-&color(red){最適化(ループアンローリングらへん)の演習見返す。};
**松本 [#ob5ee82f]
**池上 [#d53f1879]
リポジトリが変わったことに気が付いた
**西川 [#h8677d3f]
11/09(松本君と一緒)
-複数のSPE(最大6個)を同時に同じ処理(簡単な足し算&掛け算)を行えるか確認を
行った。(演習1−5を参考)~
-また、6つのSPEの並列処理を繰り返し2〜5回連続で行っても結果が正しく出力さ
れるかを確認を行った。(演習1−5&1−3を参考)~
11/13 (松本君と一緒)
-PPE->SPEへDMA転送でデータを転送できるか確認(配列(要素数8&16))
-SPEで計算した結果をまたSPE->PPEへ正しく転送できたかを確認
-今回は、XDR->LSのDMA転送のやり取りが正しくできるかの確認!!!
-書いたfileは、リポジトリのn-body/DMAにSPE&PPEのfileを置いておきました。ファイルを見る場合は[[CELL/subversionの使い方]]を参照のこと。~
今回見つかった疑問
-DMA転送できるデータのサイズが16byteの倍数でしか遅れない(仮)??~
実際に、配列の要素数を変えて各自確認ください!!!~
&color(red){これに関してはハンドアウト2回目のP22に書いてあることでないか??違ってたらすみません。-進藤};~
11/20
-SPEの接続関係をring状の転送に書き換えた。SPE1~SPE6の順に接続させお互いの接続しているSPEのIDを出力するプログラムを作成。
**大堀 [#dbfd8bc7]
11/20
計測結果
+SPE側での力の計算にかかる速度
+SPE側のデータ転送を含めた計算の速度
+PPE側の積分計算にかかる速度
-力の計算(SPE)
--計測に使った関数 : gettimeofday
--単位 : sec, Msec
--速度 :
-データ転送込力の計算(SPE)
--計測に使った関数 : gettimeofday
--単位 : sec, Msec
--速度 :
-積分計算(PPE)
--計測に使った関数 : gettimeofday
--単位 : sec, Msec
--速度 :
|粒子数|速度|
|32| 0.000027 sec|
|128| 0.000092 sec|
|512| 0.000382 sec|
|1024| 0.000778 sec - 0.000802 sec|
|1024x2| 0.001559 sec|
|2048| 0.001552sec|
|3000| 0.002314sec|
|4096| 0.003450sec|
|8192| 0.006788sec|
|8193| 0.006758sec|
|10240| 0.008423sec|
|16384| 0.013629sec|
|32768| バスエラー|
|655536| バスエラー|
-&color(red){疑問};
--計測前に、空ループを行っているが、CPU占有率:1(topコマンド)、メモリ占有率:1.2(topコマンド)
--これは、PPUの占有率ということ?SPUの占有率が最大になっているかどうかは調べられない?
--知ってる人がいたら教えてください。
*[[Cell/リポジトリ更新履歴]] [#ycd5cf3f]
リポジトリの変更内容を記述
*性能 [#fa3de156]
*[[Cell/提案掲示板]] [#r61e6576]
*ソースコードの管理方法 [#h7fd0884]
subversionによってソースコードの管理を行う。~
ソースコードの取得方法やsubversionの使用方法は以下。~
[[CELL/subversionの使い方]]
*プログラムの説明 [#tb33ab05]
n-bodyディレクトリ内のプログラム解説。~
[[CELL/プログラムの説明/revision 1]]~
※revision番号は、subversionのrivision番号と同じです。~
*プログラムの実行方法 [#i41029eb]
N体問題の実行方法やその可視化方法について。~
[[CELL/プログラムの実行方法/revision 1]]~
※revision番号は、subversionのrivision番号と同じです。~
ページ名: