森田/Research/App(host)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
ホスト側で動くN体問題アプリケーションのソースコード、関数のまとめ。
#contents
-----
*PCIeへの通信関数 [#jc0a5e81]
**initialization: PCIe通信への各初期化 [#xdb545bd]
**send_rcv_data: FPGAボードへのデータの送受信 [#gb3db28c]
**dma_transfer_control: DMA転送の受付 [#nd588916]
**shared_mem_control: FPGAとの共有メモリの管理・アクセス [#f3862861]
**int_control_host: PCIeへの割り込みとその処理関係 [#j5543f4b]
----
*User関数 [#t9a568c9]
**flops [#x3ece35f]
Flops測定のための関数群 表示はGFlops
flops.c flops.hで定義
----
Windows APIを利用 高精度な時間測定のためCPUのクロックカウントを測定に利用
--QueryPerformanceFrequency
--QueryPerformanceCounter
--LARGE_INTEGER型
----
***flops_member構造体 [#faf18ad3]
-ユーザーが設定するメンバ
--int nbody: N数
--int nskip: Flopsの計算は何ステップおきかの設定
-Flops関数内で利用するメンバ
--int times: 前回Flops計算をしてから何回flops_checkが呼び出されたかの変数
--int nstep: 現在何ステップ目かを保持する変数
--double force_time: 測定時間を代入する変数
--double Gflops: 現在のGflopsの値を保存 可視化appで利用
--LARGE_INTEGER start_time: 開始時のクロックカウントを保持
--LARGE_INTEGER force_time_one: 測定開始のクロックカウントを保持
--LARGE_INTEGER freq_pc: PCの周波数を保持
***flops_initialize() [#cb20e405]
-引数
--flops_member* fm
--int n
--int nskip
-概要
--fmの各メンバ初期化
--n, nskipに関しては引数で初期化
***flops_ftime_init() [#v83e7b57]
-引数
--flops_member* fm
-概要
--測定を開始する
-動作
--force_time_oneへ現在のクロックカウントを代入
***flops_ftime_save() [#h6fb8662]
-引数
--flops_member
-概要
--測定を終了する
-動作
--現在のクロックカウントから測定開始時のクロックカウント(force_time_one)を引き、動作周波数から秒への変換後、double型にキャストしforce_timeへ増分する
***flops_check() [#t046cb27]
-引数
--flops_memnber* fm
-概要
--呼び出し回数がnskip回未満なら、カウントを増やして終了
--呼び出し回数がnakip回目なら、Gflopsを計算して表示する
--initializeから測定を開始し、init/saveで測定した区間とそうでない区間を表示する
-動作
--Flops計算はnから求まる
---万有引力の計算には38回の浮動小数点演算が、時間積分には8回の浮動小数点演算が行われる
---よって、(38*n*n + 8*n)*timesが測定間での浮動小数点演算回数であり、これを測定時間で割ればFlopsは求まる。
--また、次の計算のために各種変数を初期化する
---start_timeの初期化 (測定開始時のクロックカウント)
---force_timeの初期化 (init/save測定区間でのクロックカウント)
---timesの初期化
終了行:
ホスト側で動くN体問題アプリケーションのソースコード、関数のまとめ。
#contents
-----
*PCIeへの通信関数 [#jc0a5e81]
**initialization: PCIe通信への各初期化 [#xdb545bd]
**send_rcv_data: FPGAボードへのデータの送受信 [#gb3db28c]
**dma_transfer_control: DMA転送の受付 [#nd588916]
**shared_mem_control: FPGAとの共有メモリの管理・アクセス [#f3862861]
**int_control_host: PCIeへの割り込みとその処理関係 [#j5543f4b]
----
*User関数 [#t9a568c9]
**flops [#x3ece35f]
Flops測定のための関数群 表示はGFlops
flops.c flops.hで定義
----
Windows APIを利用 高精度な時間測定のためCPUのクロックカウントを測定に利用
--QueryPerformanceFrequency
--QueryPerformanceCounter
--LARGE_INTEGER型
----
***flops_member構造体 [#faf18ad3]
-ユーザーが設定するメンバ
--int nbody: N数
--int nskip: Flopsの計算は何ステップおきかの設定
-Flops関数内で利用するメンバ
--int times: 前回Flops計算をしてから何回flops_checkが呼び出されたかの変数
--int nstep: 現在何ステップ目かを保持する変数
--double force_time: 測定時間を代入する変数
--double Gflops: 現在のGflopsの値を保存 可視化appで利用
--LARGE_INTEGER start_time: 開始時のクロックカウントを保持
--LARGE_INTEGER force_time_one: 測定開始のクロックカウントを保持
--LARGE_INTEGER freq_pc: PCの周波数を保持
***flops_initialize() [#cb20e405]
-引数
--flops_member* fm
--int n
--int nskip
-概要
--fmの各メンバ初期化
--n, nskipに関しては引数で初期化
***flops_ftime_init() [#v83e7b57]
-引数
--flops_member* fm
-概要
--測定を開始する
-動作
--force_time_oneへ現在のクロックカウントを代入
***flops_ftime_save() [#h6fb8662]
-引数
--flops_member
-概要
--測定を終了する
-動作
--現在のクロックカウントから測定開始時のクロックカウント(force_time_one)を引き、動作周波数から秒への変換後、double型にキャストしforce_timeへ増分する
***flops_check() [#t046cb27]
-引数
--flops_memnber* fm
-概要
--呼び出し回数がnskip回未満なら、カウントを増やして終了
--呼び出し回数がnakip回目なら、Gflopsを計算して表示する
--initializeから測定を開始し、init/saveで測定した区間とそうでない区間を表示する
-動作
--Flops計算はnから求まる
---万有引力の計算には38回の浮動小数点演算が、時間積分には8回の浮動小数点演算が行われる
---よって、(38*n*n + 8*n)*timesが測定間での浮動小数点演算回数であり、これを測定時間で割ればFlopsは求まる。
--また、次の計算のために各種変数を初期化する
---start_timeの初期化 (測定開始時のクロックカウント)
---force_timeの初期化 (init/save測定区間でのクロックカウント)
---timesの初期化
ページ名: