annotate prepaper/finalpre.tex @ 9:7c79cd6dae0a

add
author ikkun
date Wed, 15 Feb 2017 23:42:26 +0900
parents
children 87e0b63676a4
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}
ikkun
parents:
diff changeset
28
ikkun
parents:
diff changeset
29 \end{英語abst}]
ikkun
parents:
diff changeset
30 \thispagestyle{fancy}
ikkun
parents:
diff changeset
31
ikkun
parents:
diff changeset
32 \section{Gears OS}
ikkun
parents:
diff changeset
33 Gears OS では Gear という単位を用いてプログラムを Code Gear, Data Gear
ikkun
parents:
diff changeset
34 に細かく分割する。
ikkun
parents:
diff changeset
35 接続する Gear を変更することでプログラムの振る舞いを変更することを可能
ikkun
parents:
diff changeset
36 にする柔軟性、メタ計算による並行制御,モデル検査を用いた信頼性の確保を目的とする。
ikkun
parents:
diff changeset
37 本研究では現状のGears OS の GPGPU サポートを行う。
ikkun
parents:
diff changeset
38 \section{Code Gear と Data Gear}
ikkun
parents:
diff changeset
39 Code Gear は処理の基本として、 Input Data Gear を参照し、一つまたは複数の Output Data Gear に書き込む。また、接続された Data Gear 以外には参照を行わない。
ikkun
parents:
diff changeset
40 Input Data Gear と Output Data Gear の2つによって、Code Gear の Data に対す
ikkun
parents:
diff changeset
41 る依存関係を解決し、 Code Gear の並列実行を可能とする。
ikkun
parents:
diff changeset
42 Code Gear はCbCを元に記述されており、処理の移行はfunction callではないので、呼び出し元に戻る概念はない。
ikkun
parents:
diff changeset
43 その代わりに、次に実行する Code Gear を軽量継続の goto で指定する。
ikkun
parents:
diff changeset
44 Data Gear は、int や文字列などの Primitive Data Type の組み合わせ(struct)である。
ikkun
parents:
diff changeset
45 Data Gearは様々な型を持つunionとして定義される。
ikkun
parents:
diff changeset
46 Gear の特徴の一つはその処理が Code Gear, Data Gear に閉じていることにある。
ikkun
parents:
diff changeset
47 これにより、Code Gear の実行時間、メモリ使用量を予測可能なものにする。
ikkun
parents:
diff changeset
48
ikkun
parents:
diff changeset
49 \section{GPGPUとは}
ikkun
parents:
diff changeset
50 GPGPU とは、元々は画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術の事である。\\
ikkun
parents:
diff changeset
51 画像の編集はピクセル毎に行われるため多大な数の処理を行う必要があるが、 GPU は CPU に比べコア数が多数あり、多数のコアで同時に計算することによって CPU よりも多数の並列な処理を行う事が出来る。\\
ikkun
parents:
diff changeset
52 これによってGPUは画像処理のような多大な処理を並列処理することで、 CPU で処理するよりも高速に並列処理することが出来る。
ikkun
parents:
diff changeset
53 しかし、GPU のコアはCPUのコアに比べ複雑な計算は出来ない構造であるため単純計算しか出来ない、また一般的にユーザーから GPU 単体に直接命令を書き込むことも出来ないなどの問題点も存在する。
ikkun
parents:
diff changeset
54 GPGPU は CPU によって単純計算のTaskを GPU に振り分ける事によって、 GPU の問題点を解決しつつ、高速な並列処理を行うことである。
ikkun
parents:
diff changeset
55 また Data Gear へのアクセスは接続された Code Gear からのみであるから、処理中に変数が書き変わる事がない。
ikkun
parents:
diff changeset
56 \begin{figure}[ht]
ikkun
parents:
diff changeset
57 \centering
ikkun
parents:
diff changeset
58 \includegraphics[width=90mm]{pic/gearsosgpgpu.pdf}
ikkun
parents:
diff changeset
59 \caption{Gears OS による GPGPU}
ikkun
parents:
diff changeset
60 \label{fig:gpgpu}
ikkun
parents:
diff changeset
61 \end{figure}
ikkun
parents:
diff changeset
62
ikkun
parents:
diff changeset
63 \section{CUDAWoker の実装}
ikkun
parents:
diff changeset
64 CUDAWorker は Task を queue から受け取り、 thread を作成する。\\
ikkun
parents:
diff changeset
65 その後 Task を まとめて CUDATask としてCUDAに送る。CUDAのさらに CUDATwice の処理が終わるまで sleep で待機し、CUDATwiceから Task を受け取る。
ikkun
parents:
diff changeset
66
ikkun
parents:
diff changeset
67 \section{CUDATwiceの実装}
ikkun
parents:
diff changeset
68 CUDATwice
ikkun
parents:
diff changeset
69 \section{CMakeによるコンパイル}
ikkun
parents:
diff changeset
70
ikkun
parents:
diff changeset
71 \section{今後の課題}
ikkun
parents:
diff changeset
72
ikkun
parents:
diff changeset
73 \begin{thebibliography}{10}
ikkun
parents:
diff changeset
74 \bibitem{cerium}
ikkun
parents:
diff changeset
75 宮國 渡,河野真治,神里 晃,杉山千秋:Cell 用の Fine-grain Task Manager
ikkun
parents:
diff changeset
76 の実装,情報処理学会
ikkun
parents:
diff changeset
77 システムソフトウェアとオペレーティング・システム研究会(OS) (2008).
ikkun
parents:
diff changeset
78
ikkun
parents:
diff changeset
79 \bibitem{alice}
ikkun
parents:
diff changeset
80 赤嶺一樹,河野真治:DataSegment API
ikkun
parents:
diff changeset
81 を用いた分散フレームワークの設計,日本ソフトウェア科学会第28回大会論文集
ikkun
parents:
diff changeset
82 (2011).
ikkun
parents:
diff changeset
83
ikkun
parents:
diff changeset
84 \bibitem{gears}
ikkun
parents:
diff changeset
85 伊波 立樹, 東恩納 琢偉,河野 真治:Code Gear、Data Gear に基づく OS のプロトタイプ、
ikkun
parents:
diff changeset
86 情報処理学会システムソフトウェアとオペレーティング・システム研究会(OS) (2016).
ikkun
parents:
diff changeset
87
ikkun
parents:
diff changeset
88 \bibitem{segment}
ikkun
parents:
diff changeset
89 河野真治,杉本 優:Code Segment と Data Segment
ikkun
parents:
diff changeset
90 によるプログラミング手法,第54回プログラミング・シンポジウム (2013).
ikkun
parents:
diff changeset
91
ikkun
parents:
diff changeset
92 \bibitem{monad}
ikkun
parents:
diff changeset
93 Eugenio Moggi, Notion of Computation and Monads(1991)
ikkun
parents:
diff changeset
94
ikkun
parents:
diff changeset
95 \bibitem{cbc-llvm}
ikkun
parents:
diff changeset
96 徳森海斗,河野真治:Continuation based C の LLVM/clang 3.5
ikkun
parents:
diff changeset
97 上の実装について,情報処理学会システムソフトウェアとオペレーティング・システム研究会(OS)
ikkun
parents:
diff changeset
98 (2014).
ikkun
parents:
diff changeset
99
ikkun
parents:
diff changeset
100 \bibitem{opencl}
ikkun
parents:
diff changeset
101 {Aaftab Munshi, Khronos OpenCL Working Group}: {\em {The OpenCL Specification Version 1.0}} (2007).
ikkun
parents:
diff changeset
102
ikkun
parents:
diff changeset
103 \bibitem{cuda}
ikkun
parents:
diff changeset
104 : {CUDA}, {https://developer.nvidia.com/category/zone/cuda-zone/}.
ikkun
parents:
diff changeset
105
ikkun
parents:
diff changeset
106 \end{thebibliography}
ikkun
parents:
diff changeset
107 \end{document}