view paper/scheduling.tex @ 8:ad68ef71b28e

minor fix
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Tue, 05 Nov 2013 04:49:02 +0900
parents a5c4a8caf044
children 4ecae227af0c
line wrap: on
line source

\section{CPUとGPUの同時実行}\label{scheduling}
CPU と GPU で同時実行する場合、実行速度には差が出る。
 GPU はホスト側とPCIバスを通してデータの転送を行う。
 CPU 側の計算量によってバスの転送を圧迫する事が考えられる。
他にも、各アーキテクチャの得意とする計算が異なる事からも実行速度に差異が出ることが予想できる。
これらの事から、 CPU と GPU に対して均等に Task を割り振ると並列度は低くなる。
並列度を維持するためにアーキテクチャのコア数によってどちらかに優先して Task を振る必要がある。
\subsection{Scheduling}
 Scheduling を行う際は、並列実行する Task を CPU と GPU で事前に一度実行し、実行速度を測定する。
それぞれの実行速度の割合で重みをつけて Task を振り分けていく。

片方が先に終わり、もう一方はまだ動いている、という状態が好ましくない。
 Task が終了するときは CPU も GPU も両方同時に実行終了するように Scheduling する。
基本的には GPU の方がコア数が多いので、優先して Task を振ることになる。
データの転送がオーバーヘッドになる際にCPUが Task を動かすことで並列度の向上を目指す。