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