9
|
1 \documentclass[twocolumn,twoside,9.5pt]{jarticle}
|
|
2 \usepackage[dvipdfmx]{graphicx}
|
|
3 \usepackage{picins}
|
|
4 \usepackage{fancyhdr}
|
|
5 %\pagestyle{fancy}
|
|
6 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会}
|
|
7 \rhead{}
|
|
8 \cfoot{}
|
|
9
|
|
10 \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
|
|
11 \setlength{\headheight}{0mm}
|
|
12 \setlength{\headsep}{5mm}
|
|
13 \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
|
|
14 \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
|
|
15 \setlength{\textwidth}{181mm}
|
|
16 \setlength{\textheight}{261mm}
|
|
17 \setlength{\footskip}{0mm}
|
|
18 \pagestyle{empty}
|
|
19
|
|
20 \input{dummy.tex}
|
|
21 \begin{document}
|
|
22 \title{Code Gear Data Gear によるGPGPU処理実装}
|
|
23 \author{135704C 氏名 {東恩納}{琢偉} 指導教員 : 河野 真治}
|
|
24 \date{}
|
|
25 \twocolumn [
|
|
26 \maketitle
|
|
27 \begin{英語abst}
|
10
|
28 Gears OS is a highry reliable operating system based on contination
|
|
29 and meta comptation. It spports interface which is a set of data Gear
|
|
30 and code Gear. In this reserch CUDA computation is implemented.
|
|
31 CUDA worker has a same interface of CPU worker. In GPGPU small size of
|
|
32 code and data are transferred to GPU and these are executed in
|
|
33 parallel.
|
|
34 Code Gear and data Gear are fit in this computational model.
|
|
35 Task is a meta data Gear which has set of data Gear and code Gear.
|
|
36 A stub meta code Gear extracts necessary data Gear and passes to
|
|
37 normal level code Gear. In CUDA Worker, initialization of CUDA is
|
|
38 performed.
|
|
39 In the stub meta code Gear, data Gaers and code Gears are transferred
|
|
40 to the GPU and executed.
|
|
41 CUDA kernel code is very similar to code Gears representation, so we
|
|
42 can generate automatically but it is possible to use CUDA spesific
|
|
43 functions.
|
|
44 We use CMake in our implemantation.
|
|
45 A CUDA function can be switched with a flag.
|
|
46 CMake macros are used to generate stubs and context.
|
|
47 We check to basic execution of Gears task.
|
|
48
|
|
49 %Gears OS
|
|
50 %interface のていぎ
|
|
51 %Code Gear モジュール化
|
|
52 %CPUworkerをインターフェースにした
|
|
53 %CUDAworkerの実装
|
|
54 %GPUでの実行こーどは転送したデータに対する比較的短いコードの実行
|
|
55 %これはdata Gear code Gearに対応している、実装しやすい
|
|
56 %GPUにデータを転送し、GPU側でTaskを実行する部分はmeta計算として実装する
|
|
57 %Taskは実行contextに格納されたコードとデータの集合である
|
|
58 %その中から必要なデータを呼び出してノーマルレベルのコードに引き渡す部分
|
|
59 %をmeta Code Gearで記述し、それをstubと呼ぶ
|
|
60 %stub 部分でGPUにデータを転送し、コードの実行を行う
|
|
61 %ノーマルレベルのコードはGPU内のコードに近いので自動生成を行うこともで
|
|
62 %きる。CUDa 固有の機能をそのまま記述しても構わないが既存のCPUでは起動で
|
|
63 %きない場合がある。
|
|
64 %実装はCMakeを用いてCUDAを使用する場合と使用しない場合をフラグで切り替
|
|
65 %えるようにした。
|
|
66 %CMakeのマクロを用いて、stubなどの生成を行なっている。
|
|
67 %今回CUDA上でのTaskの基本的な実行を確認することができた。
|
9
|
68
|
|
69 \end{英語abst}]
|
|
70 \thispagestyle{fancy}
|
|
71
|
|
72 \section{Gears OS}
|
|
73 Gears OS では Gear という単位を用いてプログラムを Code Gear, Data Gear
|
|
74 に細かく分割する。
|
|
75 接続する Gear を変更することでプログラムの振る舞いを変更することを可能
|
|
76 にする柔軟性、メタ計算による並行制御,モデル検査を用いた信頼性の確保を目的とする。
|
|
77 本研究では現状のGears OS の GPGPU サポートを行う。
|
|
78 \section{Code Gear と Data Gear}
|
|
79 Code Gear は処理の基本として、 Input Data Gear を参照し、一つまたは複数の Output Data Gear に書き込む。また、接続された Data Gear 以外には参照を行わない。
|
|
80 Input Data Gear と Output Data Gear の2つによって、Code Gear の Data に対す
|
|
81 る依存関係を解決し、 Code Gear の並列実行を可能とする。
|
|
82 Code Gear はCbCを元に記述されており、処理の移行はfunction callではないので、呼び出し元に戻る概念はない。
|
|
83 その代わりに、次に実行する Code Gear を軽量継続の goto で指定する。
|
|
84 Data Gear は、int や文字列などの Primitive Data Type の組み合わせ(struct)である。
|
|
85 Data Gearは様々な型を持つunionとして定義される。
|
|
86 Gear の特徴の一つはその処理が Code Gear, Data Gear に閉じていることにある。
|
|
87 これにより、Code Gear の実行時間、メモリ使用量を予測可能なものにする。
|
|
88
|
|
89 \section{GPGPUとは}
|
|
90 GPGPU とは、元々は画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術の事である。\\
|
|
91 画像の編集はピクセル毎に行われるため多大な数の処理を行う必要があるが、 GPU は CPU に比べコア数が多数あり、多数のコアで同時に計算することによって CPU よりも多数の並列な処理を行う事が出来る。\\
|
|
92 これによってGPUは画像処理のような多大な処理を並列処理することで、 CPU で処理するよりも高速に並列処理することが出来る。
|
|
93 しかし、GPU のコアはCPUのコアに比べ複雑な計算は出来ない構造であるため単純計算しか出来ない、また一般的にユーザーから GPU 単体に直接命令を書き込むことも出来ないなどの問題点も存在する。
|
|
94 GPGPU は CPU によって単純計算のTaskを GPU に振り分ける事によって、 GPU の問題点を解決しつつ、高速な並列処理を行うことである。
|
|
95 また Data Gear へのアクセスは接続された Code Gear からのみであるから、処理中に変数が書き変わる事がない。
|
|
96 \begin{figure}[ht]
|
|
97 \centering
|
|
98 \includegraphics[width=90mm]{pic/gearsosgpgpu.pdf}
|
|
99 \caption{Gears OS による GPGPU}
|
|
100 \label{fig:gpgpu}
|
|
101 \end{figure}
|
|
102
|
|
103 \section{CUDAWoker の実装}
|
|
104 CUDAWorker は Task を queue から受け取り、 thread を作成する。\\
|
|
105 その後 Task を まとめて CUDATask としてCUDAに送る。CUDAのさらに CUDATwice の処理が終わるまで sleep で待機し、CUDATwiceから Task を受け取る。
|
|
106
|
|
107 \section{CUDATwiceの実装}
|
|
108 CUDATwice
|
|
109 \section{CMakeによるコンパイル}
|
|
110
|
|
111 \section{今後の課題}
|
|
112
|
|
113 \begin{thebibliography}{10}
|
|
114 \bibitem{cerium}
|
|
115 宮國 渡,河野真治,神里 晃,杉山千秋:Cell 用の Fine-grain Task Manager
|
|
116 の実装,情報処理学会
|
|
117 システムソフトウェアとオペレーティング・システム研究会(OS) (2008).
|
|
118
|
|
119 \bibitem{alice}
|
|
120 赤嶺一樹,河野真治:DataSegment API
|
|
121 を用いた分散フレームワークの設計,日本ソフトウェア科学会第28回大会論文集
|
|
122 (2011).
|
|
123
|
|
124 \bibitem{gears}
|
|
125 伊波 立樹, 東恩納 琢偉,河野 真治:Code Gear、Data Gear に基づく OS のプロトタイプ、
|
|
126 情報処理学会システムソフトウェアとオペレーティング・システム研究会(OS) (2016).
|
|
127
|
|
128 \bibitem{segment}
|
|
129 河野真治,杉本 優:Code Segment と Data Segment
|
|
130 によるプログラミング手法,第54回プログラミング・シンポジウム (2013).
|
|
131
|
|
132 \bibitem{monad}
|
|
133 Eugenio Moggi, Notion of Computation and Monads(1991)
|
|
134
|
|
135 \bibitem{cbc-llvm}
|
|
136 徳森海斗,河野真治:Continuation based C の LLVM/clang 3.5
|
|
137 上の実装について,情報処理学会システムソフトウェアとオペレーティング・システム研究会(OS)
|
|
138 (2014).
|
|
139
|
|
140 \bibitem{opencl}
|
|
141 {Aaftab Munshi, Khronos OpenCL Working Group}: {\em {The OpenCL Specification Version 1.0}} (2007).
|
|
142
|
|
143 \bibitem{cuda}
|
|
144 : {CUDA}, {https://developer.nvidia.com/category/zone/cuda-zone/}.
|
|
145
|
|
146 \end{thebibliography}
|
|
147 \end{document}
|