スポンサーサイト [Edit]
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)
入門編lesson10-13~今日から始めるCELLプログラミング [Edit]
lesson10
SPEプログラミングで必要となる3種類のデバッギングについて考察している.詳細はHPをみよう.実行結果は

result=524800
open spe program
Create and Start spe program
0:flag=1
1:flag=1
start:513 end:1024 sum=393472
dma_data.flag=1
dma_data.flag=2
start:1 end:512 sum=131328
dma_data.flag=1
dma_data.flag=2
0:flag=2
1:flag=2
Waiting spe0 program is finish...done
Relese spe0 program
Waiting spe1 program is finish...done
Relese spe1 program
SPE result : 524800 (PPE result : 524800)



lesson11
PPEの処理時間を計測するプログラミング.

result=524800
open spe program
Create and Start spe program
0:flag=1
1:flag=1
start:1 end:512 sum=131328
dma_data.flag=1
dma_data.flag=2
0:flag=2
start:513 end:1024 sum=393472
dma_data.flag=1
dma_data.flag=2
1:flag=2
Waiting spe0 program is finish...done
Relese spe0 program
Waiting spe1 program is finish...done
Relese spe1 program
SPE result : 524800 (PPE result : 524800)
PPE time: 0.014000, SPE time: 5.486000

使っているPCはP4 3.8GHzをHT動作でVMWare.SPEの処理時間がべらぼうに遅いのは,あくまでエミュレータ環境だから,らしい.

lesson12
SPE処理時間をSPE上で計測する方法.デフォルトのspe_main.cだと,時間測定に利用する1周期の時間が2GHzの設定になっているので修正する.1周期の値は

[root@(none) ~]# dmesg | grep decrementer
time_init: decrementer frequency = 25.000000 MHz

で知ることができる.つまり25MHz.よってspe_main.cの65行目

/* 処理時間を出力 */
printf("SPE time by SPU Decrementer: %f\n", profile / 2000000000.0f * 1000.0f);


printf("SPE time by SPU Decrementer: %f\n", profile / 25000000.0f * 1000.0f);

に変更する.実行結果は

result=524800
Open spe program
Create and Start spe program
0:flag=1
1:flag=1
SPE time by SPU Decrementer: 0.001440
start:1 end:512 sum=131328
dma_data.flag=1
dma_data.flag=2
0:flag=2
SPE time by SPU Decrementer: 0.001440
start:513 end:1024 sum=393472
dma_data.flag=1
dma_data.flag=2
1:flag=2
Waiting spe0 program is finish...done
Relese spe0 program
Waiting spe1 program is finish...done
Relese spe1 program
SPE result : 524800 (PPE result : 524800)
PPE time: 0.013000, SPE time: 5.599000

lesson11よりもSPEの処理時間が早くなったのは,SPE内で時間を測定しているからだろう.

lesson13
最後.lesson12のSPEプログラムをSIMD演算に変更し,パフォーマンスを高める.

result=524800
Open spe program
Create and Start spe program
0:flag=1
1:flag=1
SPE time by SPU Decrementer: 0.000400
start:513 end:1024 sum=393472
dma_data.flag=1
dma_data.flag=2
SPE time by SPU Decrementer: 0.000400
start:1 end:512 sum=131328
dma_data.flag=1
dma_data.flag=2
0:flag=2
1:flag=2
Waiting spe0 program is finish...done
Relese spe0 program
Waiting spe1 program is finish...done
Relese spe1 program
SPE result : 524800 (PPE result : 524800)
PPE time: 0.014000, SPE time: 1.601000

結果をlesson12と比べると,5.599/1.601=3.497と約3.5倍高速化できたことがわかる.以上,すべての入門編lessonが無事終了.
スポンサーサイト


[プログラム]CELL | 【2007-05-14(Mon) 20:17:55】 | Trackback:(0) | Comments:(0)
コメントの投稿
管理者にだけ表示を許可する

FC2カウンター
現在の閲覧者数:
リンク
RSSフィード
ブログ内検索
フリーエリア

カテゴリー
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。