comparison paper/benchmark.tex @ 1:764783c403bd

commit
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Mon, 01 Apr 2013 19:09:39 +0900
parents
children d880b0011932
comparison
equal deleted inserted replaced
0:8d1d08ed57e5 1:764783c403bd
1 \section{benchmark}\label{section:benchmark}
2 \subsection{ベンチマーク}
3 Bitonic Sortの例題を用いて計測した。入力として100,000要素の配列をsortする例題である。
4 これをGPUの比較対象としてマルチコアCPUで同様の例題の計測を行った。
5
6 実験環境
7 \begin{itemize}
8 \item OS : MacOS 10.8.2
9 \item CPU : 2*2.66GHz 6-CoreIntel Xeon
10 \item Memory : 16GB
11 \item Compiler : Apple clang version 4.1 (based on LLVM 3.1svn)
12 \item GPU : AMD ATI Radeon HD 5870 1024MB
13 \end{itemize}
14 この環境で実行したところ、CPUと比べてGPUの実行時間が100倍程かかることがわかった。
15 Bitonic sortはdataを分割してそれぞれに対して並列にsort(ここではQuick Sort)をかけて統合を繰り返すsortである。
16 (他に、Word count と FFT の例題を使用している)。
17
18 遅い理由としては OpenCL での build 時間が含まれていることが考えられる。また、ND range を実装してないので、
19 並列度が足りてないのも原因の一つだと思われる。
20
21 % 通常CPUに この結果はdataのinputに起因していると考えられる。
22 % GPUはメモリ空間がCPUと異なるため、host側で設定した値をkernelがそのまま読み込むことはできない。
23 % OpenCLが提供しているAPIでmemory Bufferを作成し、そこに値を書き込むことでkernelとhostで値を共有している。
24 メモリバッファによるコピーも要因の一つである。
25 そこで、一回に送信するdata 数(BLOCK SIZE)を増やしてベンチマークを行った。
26 表\ref{table:benchmark}が結果である。
27 \begin{table}[h]
28 \begin{center}
29 \caption{sortによるBenchmarkの結果}
30 \label{table:benchmark}
31 \small
32 \begin{tabular*}{60mm}[t]{c|r}
33 \hline
34 length& 100,000 \\
35 \hline\hline
36 1 CPU & 796 ms \\
37 \hline
38 2 CPU & 439 ms \\
39 \hline
40 6 CPU & 153 ms \\
41 \hline
42 12 CPU& 96 ms \\
43 \hline
44 24 CPU& 89 ms \\
45 \hline
46 \hline
47 GPU(改良前)& 330752 ms \\
48 \hline
49 GPU(改良後)& 5306 ms\\
50 \hline
51 \end{tabular*}
52 \end{center}
53 \end{table}
54
55 まだCPUとの性能差は開いているが、10倍程速度が向上した。
56 Task並列ではなく、GPU側でもデータ並列の実行をサポートし、
57 BufferへのRead/Writeのパイプラインが上手く動作するように同期機構の見直しを行う事が今後の課題となる。