annotate prepaper/finalpre.tex @ 10:87e0b63676a4

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