Mercurial > hg > Papers > 2013 > yuhi-prosym
changeset 12:05a67420ce5c
Update benchmark
author | Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 05 Nov 2013 09:07:32 +0900 |
parents | 4ecae227af0c |
children | 61407e91e1bd |
files | paper/ipsj.pdf paper/ipsj.tex paper/scheduling.tex |
diffstat | 3 files changed, 19 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/ipsj.tex Tue Nov 05 07:21:34 2013 +0900 +++ b/paper/ipsj.tex Tue Nov 05 09:07:32 2013 +0900 @@ -29,6 +29,7 @@ % 英文著者名 \eauthor{ Yuhi TOMARI\affiref{1}\and + Shohei KOKUBO\affiref{2}\and Shinji KONO\affiref{2} }
--- a/paper/scheduling.tex Tue Nov 05 07:21:34 2013 +0900 +++ b/paper/scheduling.tex Tue Nov 05 09:07:32 2013 +0900 @@ -1,10 +1,11 @@ \section{CPUとGPUの同時実行}\label{scheduling} +今回、 CPU と GPU 両方のデバイスで Task を実行させることに成功した。 CPU と GPU で同時実行する場合、実行速度には差が出る。 GPU はホスト側とPCIバスを通してデータの転送を行う。 CPU 側の計算量によってバスの転送を圧迫する事が考えられる。 -他にも、各アーキテクチャの得意とする計算が異なる事からも実行速度に差異が出ることが予想できる。 -これらの事から、 CPU と GPU に対して均等に Task を割り振ると並列度は低くなる。 -並列度を維持するためにアーキテクチャのコア数によってどちらかに優先して Task を振る必要がある。 +各アーキテクチャの得意とする計算が異なる事からも実行速度に差異が出ることは自明である。 +これらの事から、 CPU と GPU に対して均等に Task を割り振ると並列度は低くなると予想できる。 +それを確認するため、ベンチマークを行った。 \subsection{Benchmark} \begin{tiny} \begin{table}[h] @@ -28,13 +29,21 @@ \end{center} \end{table} \end{tiny} -表\ref{table:fft_heterogeneous}は,セクション\ref{fft_benchmark}で用いた例題を,CPU,GPU で Task を順番に割り振って同時実行して時間を測定を行った。 -GPU \& 1 CPU を利用した場合,表\ref{table:fft_runtime}の 1 CPU を利用した場合と比較して約 0.8 倍の速度低下が見られる。これは各 Task に依存関係があり,交互に Task を割り振っているため CPU,GPU 間でのデータの転送が増えたことがネックになっていると考えられる。 +セクション\ref{fft_benchmark}で用いた例題を使ってベンチマークを行う。 + CPU と GPU で Task を同時実行して時間を測定を行った(表\ref{table:fft_heterogeneous})。 +なお、 CPU と GPU に交互に Task を割り振っている。 +GPU \& 1 CPU を利用した場合,表\ref{table:fft_runtime}の +1 CPU を利用した場合と比較して約 0.8 倍の速度低下が見られる。 +これは各 Task に依存関係があることが原因である。 + CPU と GPU を交互に動かしているため、デバイス間でのデータの転送が増えたことがネックになっていると考えられる。 \subsection{Scheduling} - Scheduling を行う際は、並列実行する Task を CPU と GPU で事前に一度実行し、実行速度を測定する。 -それぞれの実行速度の割合で重みをつけて Task を振り分けていく。 +並列度を維持するためにアーキテクチャのコア数によってどちらかに優先して Task を振る必要がある。 + +Scheduling 手法の提案を行う。 +まず並列実行する Task を CPU と GPU で事前に一度実行し、実行速度を測定する。 +Taskの実行速度の割合でアーキテクチャに重みをつけて Task を振り分けていく。 片方が先に終わり、もう一方はまだ動いている、という状態が好ましくない。 - Task が終了するときは CPU も GPU も両方同時に実行終了するように Scheduling する。 + Task が終了するときは CPU も GPU も両方同時に実行終了するように Scheduling する事が望ましい。 基本的には GPU の方がコア数が多いので、優先して Task を振ることになる。 -データの転送がオーバーヘッドになる際にCPUが Task を動かすことで並列度の向上を目指す。 +データの転送がオーバーヘッドになる際にCPUが Task を動かすことで並列度の向上が見込める。