view paper/compare.tex @ 8:0789faebeac1

fix
author gongo@gendarme.cr.ie.u-ryukyu.ac.jp
date Mon, 09 Feb 2009 17:59:31 +0900
parents 10f410903952
children df0056a7b95d
line wrap: on
line source

\chapter{比較} \label{chapter:compare}

ここでは

\section{OpenCL}

OpenCL (Open Computing Language) \cite{opencl} とは、
マルチコアCPU や GPU、その他のプロセッサによる、
ヘテロジニアスコンピューティングのフレームワークである。
OpenCL C プログラミング言語は ISO/IEC 9899:1999 (C99) 規格を
ベースとしている。


OpenCL のプラットフォームモデルは \figref{cp_opencl_plat} のようになり、
一つの Host と複数の OpenCL Device で構成されている。
OpenCL devices の中では Compute Units (CUs) として分割され、その中でさらに
Processing Elements (PEs) として分割される。

\begin{figure}[htb]
  \begin{center}
    \includegraphics[scale=0.7]{images/cp_opencl_plat.pdf}
    \caption{OpenCL Platform}
    \label{fig:cp_opencl_plat}
  \end{center}
\end{figure}

OpenCL アプリケーションでは、実行する処理 command が Host から 
PEs へ送られる。PEs では SIMD (Single Instruction Multiple Data)
もしくは SPMD (Single Program Multiple Data) で実行される。

OpenCL devices や Host には kernel があり、Host kernel では
OpenCL devices context や実行 command の管理、Opencel devies kernel では
Host から送られて来た実行 command の処理を行う。
Host は OpenCL devices での kernel の実行を調整するために、
command-queue を生成し context へ渡す。
command-queue には以下の command がある。

\begin{itemize}
\item Kernel execution commands \\
  実行コマンド queue
\item Memory commands \\
  データの送受信に関する情報(Host アドレス空間)
\item Synchronization commands \\
  command の依存や同期等に関する情報
\end{itemize}

また、OpenCL Device は4つの違うメモリ領域(Global Memory、Constant Memory、
Local Memory、Private Memory)を持ち、それぞれ Host や CUs、PEs からの
アクセス権限が異なる (アドレス空間が異なる)。

プログラミングモデルとしては、データ並列、タスク並列をサポートしている。