changeset 2:63cbf02d3c9e

2章まで
author gongo@gendarme.cr.ie.u-ryukyu.ac.jp
date Tue, 03 Feb 2009 18:51:06 +0900
parents c19a601c0d33
children ea6802db8b12
files paper/Makefile paper/abstract.tex paper/cell.tex paper/dummy.tex paper/images/cell_arch.bb paper/images/cell_arch.graffle paper/images/cell_arch.pdf paper/images/cell_mailbox.bb paper/images/cell_mailbox.graffle paper/images/cell_mailbox.pdf paper/images/cell_ppe.bb paper/images/cell_ppe.graffle paper/images/cell_ppe.pdf paper/images/cell_simd.bb paper/images/cell_simd.graffle paper/images/cell_simd.pdf paper/images/cell_spe.bb paper/images/cell_spe.graffle paper/images/cell_spe.pdf paper/images/cell_spurs_pipeline.bb paper/images/cell_spurs_pipeline.graffle paper/images/cell_spurs_pipeline.pdf paper/images/cell_spurs_task.bb paper/images/cell_spurs_task.graffle paper/images/cell_spurs_task.pdf paper/master_paper.bib paper/master_paper.tex
diffstat 27 files changed, 359 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/paper/Makefile	Mon Feb 02 19:08:53 2009 +0900
+++ b/paper/Makefile	Tue Feb 03 18:51:06 2009 +0900
@@ -5,6 +5,7 @@
 DVIPS   = dvips
 DVIPDFM = dvipdfmx
 RM      = rm -f
+EBB     = ebb
 
 #  Option definitions
 DVIPDFMOPT = 
@@ -18,14 +19,13 @@
 	open $(TARGET).pdf
 dvi:
 	@echo "----------- make dvi file ($(TARGET).dvi) ----------"
+	cd images; ebb *.pdf
 	$(LATEX) $(TARGET)
 	$(BIBTEX) $(TARGET)
 	$(LATEX) $(TARGET)
 	$(LATEX) $(TARGET)
 pdf: dvi
 	$(DVIPDFM) $(DVIPDFMOPT) $(TARGET)
-ps: dvi
-	$(DVIPS) $(DVIPSOPT) $(TARGET)
 
 clean:
 	$(RM) *~ \#*
@@ -62,9 +62,6 @@
 	@if [ -f $(TARGET).dvi ];\
 		then $(RM) $(TARGET).dvi;\
 	fi
-	@if [ -f $(TARGET).ps ];\
-		then $(RM) $(TARGET).ps;\
-	fi
 	@if [ -f $(TARGET).pdf ];\
 		then $(RM) $(TARGET).pdf;\
 	fi
--- a/paper/abstract.tex	Mon Feb 02 19:08:53 2009 +0900
+++ b/paper/abstract.tex	Tue Feb 03 18:51:06 2009 +0900
@@ -9,7 +9,7 @@
 導入することによって向上させるようになってきており、2006 年に発売された
 家庭用ゲーム機 PlayStation 3 でも、
 1つの制御系プロセッサ Power Processor Element (PPE) と、
-7つのデータ処理演算プロセッサ Synergistic Processor Element (SPE) から
+8つのデータ処理演算プロセッサ Synergistic Processor Element (SPE) から
 構成される Cell アーキテクチャを持つ。
 このような要素も、並列プログラミング経験の浅い学生にとって
 開発を困難なものとしている要因となっている。
--- a/paper/cell.tex	Mon Feb 02 19:08:53 2009 +0900
+++ b/paper/cell.tex	Tue Feb 03 18:51:06 2009 +0900
@@ -1,1 +1,249 @@
 \chapter{CELL BROADBAND ENGINE} \label{chapter:cell}
+
+\section{Cell Broandband Engineの構造}
+
+ここでは研究、実験題材の対象となった Cell アーキテクチャについて説明する。
+Cell Brodband Engine \cite{cell} は、SCEI と IBM によって開発された
+CPU である。
+2 thread の PPE (PowerPC Processor Element) と、8個の SPE
+(Synergistic Processor Element) からなる 非対称なマルチコアプロセッサであり、
+高速リングバス である EIB (Element Interface Bus) で構成されている。
+本研究で用いた PS3Linux (Fedora 10, Yellow Dog Linux 6.0) では、
+6個の SPE を使う事ができる (\figref{cell_arch}) 。
+
+\begin{figure}[htb]
+  \begin{center}
+    \includegraphics[scale=0.8]{./images/cell_arch.pdf}
+  \end{center}
+  \caption{Cell Brodband Engine Architecture}
+  \label{fig:cell_arch}
+\end{figure}
+
+
+
+\section{PPE (PowerPC Processor Element)}
+
+PPE は Cell Broadband Engine のメインプロセッサで、複数の SPE を
+コアプロセッサとして使用することができる汎用プロセッサである。
+メインメモリや外部デバイスへの入出力、SPEを制御する役割を担っている。
+PPU (PowerPC Processor Unit) は、
+PPE の演算処理を行うユニットで、PowerPC アーキテクチャをベースとした
+命令セットを持つ。PPSS (PowerPC Processor Storage Subsystem) は
+PPU からメインメモリへのデータアクセスを制御する
+ユニットである (\figref{cell_ppe}) 。
+
+\begin{figure}[htb]
+  \begin{center}
+    \includegraphics[scale=0.8]{./images/cell_ppe.pdf}
+  \end{center}
+  \caption{PPE (PowerPC Processor Element)}
+  \label{fig:cell_ppe}
+\end{figure}
+
+\section{SPE (Synergistic Processor Element)} \label{sec:cell_spe}
+
+SPE には 256KB の Local Store (LS) と呼ばれる、SPE から唯一、
+直接参照できるメモリ領域がり、バスに負担をかける事無く
+並列に計算を進めることが出来る。SPE からメインメモリへは、
+直接アクセスすることは出来ず、SPE を構成する一つである
+MFC (Memory Flow Controller) へ、チャネルを介して DMA (Direct Memory Access)
+命令を送ることで行われる (\figref{cell_spe}) 。
+
+\begin{figure}[htb]
+  \begin{center}
+    \includegraphics[scale=0.8]{./images/cell_spe.pdf}
+  \end{center}
+  \caption{SPE (Synergistic Processor Element)}
+  \label{fig:cell_spe}
+\end{figure}
+
+
+\section{Cell の基本機能}
+
+\subsection{DMA}
+\ref{sec:cell_spe}節 で述べた通り、SPE は LS 以外のメモリに
+直接アクセスすることができず、PPE が利用するメインメモリ上のデータに
+アクセスするには DMA を用いる。
+DMA (Direct Memory Access) 転送とは、CPU を介さずに周辺装置と
+メモリとの間でデータ転送ことで、Cell の場合は
+メインメモリと LS 間でデータの転送を行う。手順としては以下の様になる。
+
+\begin{enumerate}
+  \item SPE プログラムが MFC (Memory Flow Controller) に対して
+    DMA 転送命令を発行
+  \item MFC が DMA Controller を介して DMA 転送を開始。
+    この間、SPE プログラムは停止しない。
+  \item DMA 転送の終了を待つ場合、SPE プログラム内で転送の完了を待つ
+\end{enumerate}
+
+この時、DMA 転送するデータとアドレスにはいくつか制限がある。
+転送データが 16 バイト以上の場合、データサイズは 16 バイトの倍数で、
+転送元と転送先のアドレスが 16 バイト境界に揃えられている必要がある。
+転送データが 16 バイト未満の場合、データサイズは 1,2,4,8 バイトで、
+転送サイズに応じた自然なアライメントである (転送サイズのバイト境界に
+揃えられている) ことが条件となる。
+
+\subsection{SIMD (Single Instruction Multiple Data)}
+Cell では、SPE に実装されている 128 ビットレジスタを用いて
+SIMD を行うことが出来る。SIMD とは、1 つの命令で
+複数のデータに対して処理を行う演算方式である (\figref{cell_simd}) 。
+
+\begin{figure}[htb]
+  \begin{center}
+    \includegraphics[scale=0.8]{./images/cell_simd.pdf}
+  \end{center}
+  \caption{SIMD (Single Instruction Multiple Data)}
+  \label{fig:cell_simd}
+\end{figure}
+
+\figref{cell_simd} のスカラ演算は以下のような式に当てはまる。
+
+\begin{verbatim}
+int a[4] = {1, 2, 3, 4};
+int b[4] = {5, 6, 7, 8};
+int c[4];
+
+for (int i = 0; i < 4; i++) {
+    a[i] + b[i] = c[i];
+}
+\end{verbatim}
+
+これに対し、SIMD 演算は以下のようになる。
+
+\begin{verbatim}
+vector signed int va = {1, 2, 3, 4};
+vector signed int vb = {5, 6, 7, 8};
+vector signed int vc;
+
+vc = spu_add(va, vb);
+\end{verbatim}
+
+Cell の SIMD 演算では、vector 型の変数を用いる。
+
+このように、通常は 4 回計算するところを 1 回の計算で行うことが
+できる反面、すべての演算を 128 ビットで計算するため、なるべく
+効果的に行う様に工夫する必要がある。
+
+\begin{verbatim}
+int a, b, c;
+
+c = a + b;
+\end{verbatim}
+
+この様な計算の場合でも 128 ビット同士の演算を行うため、無駄が生じる。
+
+\subsection{Mailbox}
+
+Mailbox とは SPE の MFC 内の FIFO キューであり、PPE と SPE 間の 32 ビット
+メッセージの交換に用いられる。Mailbox では 3 つの振る舞いが
+出来る様に設計されている (\figref{cell_mailbox}) 。
+
+\begin{figure}[htb]
+  \begin{center}
+    \includegraphics[scale=0.8]{./images/cell_mailbox.pdf}
+  \end{center}
+  \caption{Mailbox}
+  \label{fig:cell_mailbox}
+\end{figure}
+
+\begin{enumerate}
+\item SPU Inbound Mailbox \\
+  PPE から SPE へデータを渡すためのキュー。キューのエントリ数は
+  実装依存による \cite{cell} が、研究環境では最大4個までのデータを蓄積できる。
+  このキューが空の場合は、SPE は、データがメールボックスに書き込まれるまでは、 
+  命令でストールする。読み出すデータの順番は書き込んだ順番に保証されている。
+\item SPU Outbound Mailbox \\
+  SPE から PPE へのデータを渡すためのキュー。研究環境では最大1個までしか
+  データが蓄積できない。
+\item SPU Outbound interrupt Mailbox \\
+  SPU Outbound Mailbox とほとんど同じだが、このキューでは SPE から
+  キューにデータが書き込まれると、PPE に対して割り込みイベントが
+  発生し、データの読み出しタイミングを通知する事が出来る。
+\end{enumerate}
+
+\section{開発環境}
+
+\subsection{libSPE2}
+
+libSPE2 とは、PPE が SPE を扱うためのライブラリ群である \cite{libspe2} 。
+libSPE2 は SPE Context Creation、SPE Program Image Handling、
+SPE Run Control、SPE Event Handling、SPE MFC Problem State Facilities、
+Direct SPE Acceess for Applications という基本構成でできている。
+Cell の基本プログラムは次の様になる。
+
+\begin{enumerate}
+\item create N SPE context
+\item Load the appropriate SPE executable object into each SPE context's local store
+\item Create N threads
+\item Wait for all N threads to terminate
+\end{enumerate}
+
+\subsection{SPU C/C++ 言語拡張}
+SPE では基本的な C 言語の機能の他に、Cell 特有の拡張が行われている。
+\tabref{cell_cpp} に主な API を記す。
+
+\begin{table}[htb]
+  \begin{center}
+    \caption{SPU C/C++ 言語拡張 API}
+    \label{tab:cell_cpp}
+    \begin{tabular}{|l|l|}
+      \hline
+      spu\_mfcdma32 & DMA 転送を開始する \\
+      \hline
+      spu\_read\_in\_mbox & PPE からの mail を取得する \\
+      \hline
+      spu\_write\_out\_mbox & PPE へ mail を送信する \\
+      \hline
+      spu\_add、spu\_sub、spu\_mul & SIMD 演算 (加算、減算、乗算) \\
+      \hline
+    \end{tabular}
+  \end{center}
+\end{table}
+
+SPE を効率よく使う上で \tabref{cell_cpp} の様な Cell 特有の API や、
+SPE アセンブラ命令を学ぶことが必要となる。
+
+\subsection{SPURS}
+
+ここでは、現在発表されている Cell の開発環境である SPURS について説明する。
+
+SPURS は、閉じた並列分散と考えることができる Cell の環境で、
+いかに効率よく動作させるかということを考えたシステムである。
+
+Cell の性能を存分に生かすためには SPE を効率よく使い切ることであり、
+SPE の動作を止めることなく、同期を最小限に行う必要がある。 
+そこで SPURS では SPE を効率よく利用するために、PPE に依存せずに SPE コードを 
+選択し、実行することと機能は効率重視で割り切ることを挙げている。
+そのため、SPE 上にカーネルを組み込んでいる。
+
+アプリケーションを複数 SPE で実行するとき、アプリケーションプログラムを
+出来るだけ小さな単位(タスク)に分割し、通信ライブラリを用いて
+タスク間を依存関係で結合する。
+LS 常駐のカーネルが、実行可能なタスクを選んで実行していく
+(\figref{cell_spurs_task}) 。
+
+\begin{figure}[htb]
+  \begin{center}
+    \includegraphics[scale=0.6]{./images/cell_spurs_task}
+  \end{center}
+  \caption{SPURS Task}
+  \label{fig:cell_spurs_task}
+\end{figure}
+
+%また、アプリケーションを分割するとき、プログラムがデータを伴うとき、
+%ジョブに分割し、並べ替えた上で、カーネルがジョブリストから
+%ジョブを取得して実行する。
+
+これらの処理はデータを扱うため、SPURS はパイプラインで実行される
+(\figref{cell_spurs_pipeline}) 。
+
+\begin{figure}[htb]
+  \begin{center}
+    \includegraphics[scale=0.6]{./images/cell_spurs_pipeline}
+  \end{center}
+  \caption{SPURS Pipeline}
+  \label{fig:cell_spurs_pipeline}
+\end{figure}
+
+以上から、SPURS は複数の SPE を効率よく使うためのライブラリとして
+優れた物であると思われるが、現在一般には公開されていない。
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/dummy.tex	Tue Feb 03 18:51:06 2009 +0900
@@ -0,0 +1,60 @@
+%%% jdummy.def
+%
+\DeclareRelationFont{JY1}{mc}{it}{}{OT1}{cmr}{it}{}
+\DeclareRelationFont{JT1}{mc}{it}{}{OT1}{cmr}{it}{}
+\DeclareFontShape{JY1}{mc}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*min
+    <10.95><12><14.4><17.28><20.74><24.88> min10
+    <-> min10}{}
+\DeclareFontShape{JT1}{mc}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*tmin
+    <10.95><12><14.4><17.28><20.74><24.88> tmin10
+    <-> tmin10}{}
+\DeclareRelationFont{JY1}{mc}{sl}{}{OT1}{cmr}{sl}{}
+\DeclareRelationFont{JT1}{mc}{sl}{}{OT1}{cmr}{sl}{}
+\DeclareFontShape{JY1}{mc}{m}{sl}{<5> <6> <7> <8> <9> <10> sgen*min
+    <10.95><12><14.4><17.28><20.74><24.88> min10
+    <-> min10}{}
+\DeclareFontShape{JT1}{mc}{m}{sl}{<5> <6> <7> <8> <9> <10> sgen*tmin
+    <10.95><12><14.4><17.28><20.74><24.88> tmin10
+    <-> tmin10}{}
+\DeclareRelationFont{JY1}{mc}{sc}{}{OT1}{cmr}{sc}{}
+\DeclareRelationFont{JT1}{mc}{sc}{}{OT1}{cmr}{sc}{}
+\DeclareFontShape{JY1}{mc}{m}{sc}{<5> <6> <7> <8> <9> <10> sgen*min
+    <10.95><12><14.4><17.28><20.74><24.88> min10
+    <-> min10}{}
+\DeclareFontShape{JT1}{mc}{m}{sc}{<5> <6> <7> <8> <9> <10> sgen*tmin
+    <10.95><12><14.4><17.28><20.74><24.88> tmin10
+    <-> tmin10}{}
+\DeclareRelationFont{JY1}{gt}{it}{}{OT1}{cmbx}{it}{}
+\DeclareRelationFont{JT1}{gt}{it}{}{OT1}{cmbx}{it}{}
+\DeclareFontShape{JY1}{mc}{bx}{it}{<5> <6> <7> <8> <9> <10> sgen*goth
+    <10.95><12><14.4><17.28><20.74><24.88> goth10
+    <-> goth10}{}
+\DeclareFontShape{JT1}{mc}{bx}{it}{<5> <6> <7> <8> <9> <10> sgen*tgoth
+    <10.95><12><14.4><17.28><20.74><24.88> tgoth10
+    <-> tgoth10}{}
+\DeclareRelationFont{JY1}{gt}{sl}{}{OT1}{cmbx}{sl}{}
+\DeclareRelationFont{JT1}{gt}{sl}{}{OT1}{cmbx}{sl}{}
+\DeclareFontShape{JY1}{mc}{bx}{sl}{<5> <6> <7> <8> <9> <10> sgen*goth
+    <10.95><12><14.4><17.28><20.74><24.88> goth10
+    <-> goth10}{}
+\DeclareFontShape{JT1}{mc}{bx}{sl}{<5> <6> <7> <8> <9> <10> sgen*tgoth
+    <10.95><12><14.4><17.28><20.74><24.88> tgoth10
+    <-> tgoth10}{}
+\DeclareRelationFont{JY1}{gt}{sc}{}{OT1}{cmbx}{sc}{}
+\DeclareRelationFont{JT1}{gt}{sc}{}{OT1}{cmbx}{sc}{}
+\DeclareFontShape{JY1}{mc}{bx}{sc}{<5> <6> <7> <8> <9> <10> sgen*goth
+    <10.95><12><14.4><17.28><20.74><24.88> goth10
+    <-> goth10}{}
+\DeclareFontShape{JT1}{mc}{bx}{sc}{<5> <6> <7> <8> <9> <10> sgen*tgoth
+    <10.95><12><14.4><17.28><20.74><24.88> tgoth10
+    <-> tgoth10}{}
+\DeclareRelationFont{JY1}{gt}{it}{}{OT1}{cmr}{it}{}
+\DeclareRelationFont{JT1}{gt}{it}{}{OT1}{cmr}{it}{}
+\DeclareFontShape{JY1}{gt}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*goth
+    <10.95><12><14.4><17.28><20.74><24.88> goth10
+    <-> goth10}{}
+\DeclareFontShape{JT1}{gt}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*tgoth
+    <10.95><12><14.4><17.28><20.74><24.88> tgoth10
+    <-> tgoth10}{}
+\endinput
+%%%% end of jdummy.def
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/images/cell_arch.bb	Tue Feb 03 18:51:06 2009 +0900
@@ -0,0 +1,5 @@
+%%Title: ./cell_arch.pdf
+%%Creator: ebb Version 0.5.2 (+ArtBox)
+%%BoundingBox: 0 0 505 339
+%%CreationDate: Tue Feb  3 18:48:04 2009
+
Binary file paper/images/cell_arch.graffle has changed
Binary file paper/images/cell_arch.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/images/cell_mailbox.bb	Tue Feb 03 18:51:06 2009 +0900
@@ -0,0 +1,5 @@
+%%Title: ./cell_mailbox.pdf
+%%Creator: ebb Version 0.5.2 (+ArtBox)
+%%BoundingBox: 0 0 514 342
+%%CreationDate: Tue Feb  3 18:48:04 2009
+
Binary file paper/images/cell_mailbox.graffle has changed
Binary file paper/images/cell_mailbox.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/images/cell_ppe.bb	Tue Feb 03 18:51:06 2009 +0900
@@ -0,0 +1,5 @@
+%%Title: ./cell_ppe.pdf
+%%Creator: ebb Version 0.5.2 (+ArtBox)
+%%BoundingBox: 0 0 370 327
+%%CreationDate: Tue Feb  3 18:48:04 2009
+
Binary file paper/images/cell_ppe.graffle has changed
Binary file paper/images/cell_ppe.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/images/cell_simd.bb	Tue Feb 03 18:51:06 2009 +0900
@@ -0,0 +1,5 @@
+%%Title: ./cell_simd.pdf
+%%Creator: ebb Version 0.5.2 (+ArtBox)
+%%BoundingBox: 0 0 402 261
+%%CreationDate: Tue Feb  3 18:48:04 2009
+
Binary file paper/images/cell_simd.graffle has changed
Binary file paper/images/cell_simd.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/images/cell_spe.bb	Tue Feb 03 18:51:06 2009 +0900
@@ -0,0 +1,5 @@
+%%Title: ./cell_spe.pdf
+%%Creator: ebb Version 0.5.2 (+ArtBox)
+%%BoundingBox: 0 0 380 340
+%%CreationDate: Tue Feb  3 18:48:04 2009
+
Binary file paper/images/cell_spe.graffle has changed
Binary file paper/images/cell_spe.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/images/cell_spurs_pipeline.bb	Tue Feb 03 18:51:06 2009 +0900
@@ -0,0 +1,5 @@
+%%Title: ./cell_spurs_pipeline.pdf
+%%Creator: ebb Version 0.5.2 (+ArtBox)
+%%BoundingBox: 0 0 533 187
+%%CreationDate: Tue Feb  3 18:48:04 2009
+
Binary file paper/images/cell_spurs_pipeline.graffle has changed
Binary file paper/images/cell_spurs_pipeline.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/images/cell_spurs_task.bb	Tue Feb 03 18:51:06 2009 +0900
@@ -0,0 +1,5 @@
+%%Title: ./cell_spurs_task.pdf
+%%Creator: ebb Version 0.5.2 (+ArtBox)
+%%BoundingBox: 0 0 507 229
+%%CreationDate: Tue Feb  3 18:48:04 2009
+
Binary file paper/images/cell_spurs_task.graffle has changed
Binary file paper/images/cell_spurs_task.pdf has changed
--- a/paper/master_paper.bib	Mon Feb 02 19:08:53 2009 +0900
+++ b/paper/master_paper.bib	Tue Feb 03 18:51:06 2009 +0900
@@ -43,10 +43,16 @@
 year = 2006
 }
 
-@misc{cell,
+@manual{cell,
 author = "{Sony Corporation}",
-title = "{Cell broadband engine architecture}",
-year = 2005
+title = "{Cell BroadbandEngine \texttrademark アーキテクチャ}",
+year = 2006
+}
+
+@manual{libspe2,
+author = "{International Business Machines Corporation, Sony Computer Entertainment Incorporated, Toshiba Corporation}",
+title = "{SPE Runtime Management Library}",
+year = 2006
 }
 
 @article{gongo2,
@@ -69,12 +75,6 @@
 howpublished = "\url{http://blender.jp/}"
 }
 
-@manual{libspe2,
-author = "{International Business Machines Corporation, Sony Computer Entertainment Incorporated, Toshiba Corporation}",
-title = "{SPE Runtime Management Library}",
-year = 2006
-}
-
 @article{kono,
 author = "{Shinji KONO}",
 title = "{検証を自身で表現できるハードウェア、ソフトウェア記述言語 Continuation ba sed C と、その Cell への応用}",
@@ -82,12 +82,6 @@
 year = 2008
 }
 
-@manual{mailbox,
-author = "{Sony Corporation}",
-title = "{Cell BroadbandEngine アーキテクチャ}",
-year = 2006
-}
-
 @article{kono,
 author = "{Shinji KONO}",
 title = "{検証を自身で表現できるハードウェア、ソフトウェア記述言語 Continuation ba sed C と、その Cell への応用}",
--- a/paper/master_paper.tex	Mon Feb 02 19:08:53 2009 +0900
+++ b/paper/master_paper.tex	Tue Feb 03 18:51:06 2009 +0900
@@ -3,6 +3,8 @@
 \usepackage{ascmac}
 \usepackage[dvipdfm]{graphicx}
 
+\input{dummy.tex} %% font
+
 \jtitle{Cell 用の Fine-Grain Task Manager の実装}
 \etitle{Implementation of Fine-grain Task Manager for Cell}
 \year{平成20年度}
@@ -25,6 +27,8 @@
     Cell 用の Fine-Grain Task Manager の実装
 \end{minipage}}
 
+\newcommand\figref[1]{図 \ref{fig:#1}}
+\newcommand\tabref[1]{表 \ref{tab:#1}}
 
 %%% 索引のために以下の2行を追加
 \usepackage{makeidx,multicol}