# HG changeset patch # User Yutaka_Kinjyo # Date 1299972091 -32400 # Node ID 58903796f7de5363a73ac5c1c2936e438dcb39cd # Parent ff9b8938199f228567030d5e3cf4a4f69b342377 fix diff -r ff9b8938199f -r 58903796f7de paper/ARC195OS117-32.tex --- a/paper/ARC195OS117-32.tex Sun Mar 13 04:17:50 2011 +0900 +++ b/paper/ARC195OS117-32.tex Sun Mar 13 08:21:31 2011 +0900 @@ -64,15 +64,20 @@ % 和文概要 \begin{abstract} -ゲームフレームワーク Cerium TaskManager を開発した。PPE から処理が Mail 機能を用いて各 SPE に割り振られ並列実行される。 -しかし、 PPE からの Mail 応答が遅い場合、 SPE の待ち時間が発生し、処理性能が低下する。 -また、 SPE へのデータ転送を頻繁に行うと転送のオーバーヘッドがかかる。 -それらを改良するために、Mail のタイミングの変更、SPE内のキャッシュの実装を行った。 -その結果、例題を用いた計測では、約7倍の処理速度向上を確認した。 +ゲームフレームワーク Cerium TaskManager を開発した。 +プログラムは、PPE から Mail 機能を用いて各 SPE に処理が割り振られ並列実行される。 +しかし、 PPE からの Mail 応 答が遅い場合、 SPE の待ち時間が発生し、処理性能が低下する。 +また、 SPE への データ転送を頻繁に行うと転送のオーバーヘッドがかかる。これらを改良するために、 +Mail のタイミングの変更、SPE 内のキャッシュの実装を行った。その結果、例題を 用いた計測では、約 7 倍の処理速度向上を確認した。 + \end{abstract} % 英文概要 \begin{eabstract} - +We have developed Cerium of Game Framework. Program is alloted processing to each SPE using Mail function from PPE, and It's excuted in parallel. +But when Mail reply from PPE is late, the waiting time of SPE occurs, and the treatment performance fails. +In addition, When PPE is frequency execute data transfer to SPE, overhead for a data transfer can't be being ignored any more. +To improve these, We implemented timing change in the Mail and Cash in the SPE. +As a result, We confirmed the about 7 times of processing speed improvement in measurement using an example program. \end{eabstract} % 表題などの出力 @@ -175,7 +180,7 @@ これを解消するためにMailQueueを導入した。MailQueueは、SPEから書き込みきれないMailを一時的にキューに退避させるものである。 TaskListを書きだす時に溜まったQueueの中身をすべて書き出す。 Task完了を知らせる Mail書き出しの待ちは、Task毎から、TaskList毎になる。MailQueueを有効にしたときの実行速度は以下にようになる - +速度比較には、RenderingEngineを使ったボールが跳ねる例題ball\_boundを用いた。 \begin{table}[!htb] \begin{center} @@ -184,16 +189,14 @@ \hbox to\hsize{\hfil \begin{tabular}{|c|l|l|c|} \hline & 改良前 & 改良後 & 性能\\ \hline - dandy & 32.4 FPS & 41.3 FPS & \%向上 \\ \hline + ball\_bound & 32.4 FPS & 41.3 FPS & \%向上 \\ \hline \end{tabular}\hfil} \end{center} \end{table} +ほげほげ -これは、PPE側のMailチェックのやり方に関係している。 -PPE では mail をチェックするAPIを用いて、mail の有無を確認し、 - -\subsection{TaskArray} +\subsection{TaskArray} \label{taskarray} Task の依存関係を解決するために、SPEから Mail によってPPEへと処理が完了したTaskの情報が通知される。 その際に、同じ種類のTaskは一つのMailでよい場合がある。 @@ -258,7 +261,16 @@ この待ち時間を回避するには、Taskの粒度を下げる、他のSPEの処理完了を待っているSPEに、別のTaskを割り当てる、等の方法がある。 別のTaskを割り当てるにはTaskの実行をパイプライン化する方法がある。 -そこで、特に処理の重いDrawSpanTask と、CreatePolygon,CreateSpan のTask でパイプライン化を行った。 +そこで、特に処理の重いDrawSpanTask と、CreatePolygon,CreateSpan のTask でパイプライン化を行った。(\figref{fig:rend-dep}) + +\begin{figure}[tb] + \begin{center} + \includegraphics[scale=0.5]{./images/rend-dep.pdf} + \end{center} + \caption{パイプライン化} + \label{fig:rend-dep} +\end{figure} + 速度比較の対象として、SuperDandy と呼ばれる、学生実験で制作されたシューティングゲームを用いた。 \begin{table}[!htb] @@ -277,7 +289,7 @@ \begin{table}[!htb] \begin{center} \caption{1秒辺りの Rendering Engine 全体の処理回数(Frame Per Second)} - \ecaption {hogehoge} \label{tab:FPS} + \ecaption {hogehoge} \label{tab:rend} \hbox to\hsize{\hfil \begin{tabular}{|c|l|l|c|} \hline & 改良前 & 改良後 & 性能\\ \hline @@ -315,7 +327,7 @@ この時に、頻繁にテクスチャを読み込む場合にはその読み込みがボトルネックとなる。そこでキャッシュを実装した。 キャッシュは MemorySegment と呼ばれるデータ構造単位でハッシュで管理する。MemorySegment はある一定の 大きさに決め打った連続したメモリ領域のことである。キャッシュ実装の効果を示す。 -速度比較の対象には、使用するテクスチャ表示範囲が狭いball_bound と、画面すべてにテクスチャを表示するpanelを用いる。 +速度比較の対象には、使用するテクスチャ表示範囲が狭いball\_bound と、画面すべてにテクスチャを表示するpanelを用いる。 \begin{table}[!htb] \begin{center} @@ -324,565 +336,159 @@ \hbox to\hsize{\hfil \begin{tabular}{|c|l|l|c|} \hline & 改良前 & 改良後 & 性能\\ \hline - ball_boud & 6 FPS & 49.5 FPS & 68\%向上 \\ \hline - panel & 29.4 FPS & 49.5 FPS & 68\%向上 \\ \hline + ball\_boud & 4 FPS & 30 FPS & 7.5倍向上 \\ \hline + panel & 0.2 FPS & 2.6 FPS & 13倍向上 \\ \hline \end{tabular}\hfil} \end{center} \end{table} -ところ、読み込み回数を抑え、ボトルネックを解消することができた。 - - - - -数字\\ - -はやーくなったね。 +テクスチャような頻繁な転送が起こり得る場合には、キャッシュが非常に有効であることがわかった。 +Cellのような分散メモリでは、データの転送は慎重に管理しできるだけ転送回数を減らすことが性能 +向上につながる。 \subsection{Memory Access} -WordCount を Cerium を用いて実装した。 Task +Cellにおいて、SPEへのデータの割り振り方が性能に関わる場合がある。 +それはデータを得るために、DMA転送が頻繁に起きるときである。 +Cerium を用いて実装したWordCountを例にとってみる。 +WordCountのTaskは二つある。 + +\begin{ENUMERATE} +\item WordCountTask +\item PrintTask +\end{ENUMERATE} + +WordCountTaskは、inputで与えられたdataをword countし、output dataに書き出すTaskである。 +PrintTaskはすべてのWordCountTaskの実行完了を待ち、outputへ書き出された値を集計し出力するTaskである。 +一度にSPEに渡せるデータ容量はDMAの仕様上16Kbyteまでである。さらに転送する際には16の倍数byteである必要がある。 + +wcするfileをメモリへマッピングし、WordCountTask +のinputに、file dataのアドレスを16kbyteごとに指定していく(\figref{fig:wc-graf})。 + +\begin{figure}[tb] + \begin{center} + \includegraphics[scale=0.3]{./images/wc_graf1.pdf} + \end{center} + \caption{WordCountのTaskの流れ} + \label{fig:wc-graf} +\end{figure} + +PrintTaskはWordCountTaskを待ちTaskと設定し、WordCountがすべて終わらないと、 +実行されない。 + +このWordCountTaskにデータを渡す際には、メインメモリへのアクセスが局所性を保ちながら +処理されるようにした方が良い。WC対象のデータを各SPEがバラバラな領域から取得する場合と +ある程度まとまった領域から取得するようにした場合とで比較をした。取得のバラつきはTaskArray +のTaskの設定である程度操作できる。TaskArrayのサイズは64, Taskのinputデータの大きさは16kbyte, +wc対象のデータの大きさは約135MB。 +dma wait は処理全体にかかった時間のdma転送待ちの割合。 -ちゃんとデータ配分しないとまずい +\begin{table}[!htb] + \begin{center} + \caption{メモリアクセスの局所性を保った改良(Frame Per Second)} + \ecaption {hogehoge} \label{tab:memory-access} + \hbox to\hsize{\hfil + \begin{tabular}{|c|l|l|c|} \hline + & 改良前 & 改良後 & 性能\\ \hline + 実行時間 & 30s & 1.9s & 15倍向上 \\ \hline + dma wait & 14\% & 8\% & 1.7倍向上 \\ \hline + \end{tabular}\hfil} + \end{center} +\end{table} + +メモリアクセスの局所性を保った場合に処理性能の向上が見られた。ページングや、スワッピングを +抑えることができたと考えられる。それに伴ってdma wait 時間も減少し、SPEの待ち時間が処理性能 +の向上に繋がっていると考える。 + +\subsection{OpenCLとの比較} +OpenGL (Open Graphics Library) とは、Silicon Graphics 社が開発した、3D グラフィックス +処理のためのプログラミングインターフェースである。 +上記で紹介した SuperDandy を Task を用いない OpneGL 上で動作するバージョンを用意して、Cerium +と性能を比較してみた。OpenGL は PPE だけで動作している。Cerium は今までの改良をすべて加えたもの。 + +\begin{table}[!htb] + \begin{center} + \caption{シューティングゲーム「dandy」の性能比較(OpenGL, Cerium))} \label{tab:dandy-compare} + \hbox to \hsize{\hfil + \begin{tabular}{|c|l|l|c|} \hline + & OpenGL & Cerium & 性能差\\ \hline + dandy & 17.5 FPS & 49.5 FPS & 2.9 倍\\ \hline + \end{tabular}\hfil} + \end{center} +\end{table} + +コアを1つ用いている OpenGL 版に比べて、Cerium では 2.9 倍の性能向上が見られた。 +SPEを活用し、改良によって待ち時間の削減ができ、性能の向上ができた。 % }{ -\section{デバック方法}\label{sec:ITEM} -並列プログラミングは、逐次処理のプログラムよりも、デバックがやり辛い。 -Cell においてのデバック方法の例を紹介する。 + +\section{debug} + +並列プログラムの特徴として、デバッグが難しいことも挙げられる。 +実行が非決定的 (同じ状態で実行しても結果が異なる) な場合があり、 +バグの状態を再現することが難しい。 +また、個々の Core 上のデータを調べる必要があり、 +デバッガが複数の Core を取り扱えることが必須である。 +Cell の場合、動作している複数 の SPE の一つに対して +gdb で breakpoint を掛ければ、PPE や他の SPE も同時にストップするが、 +それら全ての CPU を手動で管理するのは厳しい。 +また、PPE と SPE ではメモリ空間が違うため、 +SPE から直接 PPE のデータを見ることができない。 +Cerium での開発工程は、 +\begin{enumerate} +\item C によるシーケンシャルな実装 +\item 並列実行を考慮したデータ構造を持つ実装 +\item コードを分割し、シーケンシャルに実行する実装 +\item 分割したコードを並列実行する実装 +\end{enumerate} + +となっている。逐次的な実行で正常な動作を確認した後、並列に実行した場合に正常な +動作をしない場合がある。特にCell特有の問題として +データ構造が合っていない。つまり、DMA転送される際に、16アライメントに設定されていないか、 +データのサイズが16の倍数になっていない場合に注意しなければならない。またCeriumではPPE用と +SPE用が別個に存在するので、互いのコードが等価であるかもチェックしなければならない。 +一つのコードに統一しても良いが、別個で対応したい問題がでた時に対応してる。なるべく同一な +コードにするのがよい。 +本来SPEで動くべきTaskがPPEで動作するケースもあるので、それもチェックするべき。 % }{ \section{まとめ} -いままでの改良のおさらい - -OpenCL との比較。これから - -% }{ - -\subsection{論文の構成}\label{sec:config} - -ファイルは次の形式で作る.なお下線部は投稿時にはなくてもよい.またトランザク -ション特有のコマンドなどについては,付録\ref{sec:app-trans}を参照されたい. -% -\begin{Quote}\small* -\|\documentclass{ipsjpapers}|\footnote{% - {\LATExe} を2.09互換モードで使う場合,および{\LaTeX} 2.09を使う場合 - には \CS{documentstyle} を使用し,必要に応じてオプション引数に補助ス - タイル名を加える.} または\\ -\|\documentclass[draft]{ipsjpapers}|\footnotemark[1]\\ -必要ならばオプションのスタイルを指定する.\\ -必要ならば補助スタイルを \|\usepackage| で指定する.\\ -\Underline{\|\setcounter{|{\bf 巻数}\|}{|\<巻数\>\|}|}\\ -\Underline{\|\setcounter{|{\bf 号数}\|}{|\<号数\>\|}|}\\ -\Underline{\|\setcounter{volpageoffset}{|\<先頭ページ\>\|}|}\\ -\Underline{\|\|{\bf 受付}\|{|\<年\>\|}{|\<月\>\|}{|\<日\>\|}|}\\ -\Underline{\|\|{\bf 採録}\|{|\<年\>\|}{|\<月\>\|}{|\<日\>\|}|}\\ -必要ならばユーザのマクロ定義などをここに書く.\\ -\|\begin{document}|\\ -\|\title{|\<表題(和文)\>\|}|\\ -\|\etitle{|\<表題(英文)\>\|}|\\ -\Underline{\|\affilabel{|\<所属ラベル\>\|}%|}\\ -\Underline{\mbox{}\qquad\qquad\|{|\<和文所属\>\|\\|\<英文所属\>\|}|}\\ -\Underline{\mbox{}\qquad\qquad\ldots\ldots\ldots}\\ -必要ならば \|\paffilabel| により現在の所属を宣言する.\\ -\Underline{\|\author{|\<第一著者(和文)\>\|\and|}\\ -\Underline{\leavevmode\phantom{\tt @author@}\<第二著者(和文)\>\|\and|}\\ -\Underline{\leavevmode\phantom{\tt @author@} \ldots{} \|}|}\\ -\Underline{\|\eauthor{|\<第一著者(英文)\>\|\and|}\\ -\Underline{\leavevmode\phantom{\tt @eauthor@}\<第二著者(英文)\>\|\and|}\\ -\Underline{\leavevmode\phantom{\tt @eauthor@} \ldots{} \|}|}\\ -\|\begin{abstract}|\\ -\mbox{}\quad\<概要(和文)\>\\ -\|\end{abstract}|\\ -\|\begin{eabstract}|\\ -\mbox{}\quad\<概要(英文)\>\\ -\|\end{eabstract}|\\ -\|\maketitle|\\ -\|\section{|\<第1節の表題\>\|}|\\ -\mbox{}\quad $\ldots\ldots\ldots$\\ -\mbox{}\quad\<本文\>\\ -\mbox{}\quad $\ldots\ldots\ldots$\\ -謝辞があれば \|acknowledgment| 環境を使ってここに記す.\\ -\|\bibliographystyle{ipsjunsrt}| または\\ -\|\bibliographystyle{ipsjsort}|\\ -\|\bibliography{|\<文献データベース\>\|}|\\ -付録があれば \|\appendix| に続いてここに記す.\\ -\Underline{\|\begin{biography}|}\\ -\Underline{\mbox{}\quad\<著者紹介\>}\\ -\Underline{\mbox\qquad$\ldots\ldots\ldots$}\\ -\Underline{\|\end{biography}|}\\ -\|\end{document}| -\end{Quote} - -% }{ - -\subsection{オプション・スタイル}\label{sec:ENUM} - -\|\documentclass| (または \|\documentstyle|)の標準オプションとして,以下の6 -つのものが用意されている. -% -\begin{ENUMERATE}%{ -\item\|landscape | オンライン出版用\footnote{% -% -このガイドのようにA4横長のオンライン出版用の製版を行なうオプションであり,デ -フォルトである.} -\item\|portrait | 紙出版用 -\item\|draft | 投稿用 -\item\|technote | テクニカルノート用 -\item\|preface | 序文用 -\item\|english | 英文用 -\item\|sigrecommended| 研究会推薦論文 -\item\|invited | 招待論文 -\end{ENUMERATE}%} -% -これらのオプションは(意味があれば)任意の組合せで指定することができる. -また論文誌への投稿/掲載以外の目的で使うことができるように,研究 -報告用の \|techrep|(付録\ref{sec:app-sig}参照)と,(著者自身のweb site等に -掲載するための)「著者版」を作成する \|private| も用意されている.さらに後 -者では -% -\begin{itemize}\item[]%{ -\|\copyrightnotice{|\<著作権情報\>\|}| -\end{itemize}%} -% -により,最初のページの左肩に学会著作権規定で定められた著作権に関する注意書を -出力することもできる. - -\|\usepackage| で\footnote{{\LaTeX} 2.09の場合は \CS{documentstyle} のオプショ -ン引数で.}% -補助的なスタイルファイルを指定した場合には,製版用のファイル群に必ずスタイル -ファイルを含める.ただし,{\LATEXe} の標準配布に含まれているもの(たとえば -\|graphicx|)については同封の必要はない.なおスタイルファイルによっては論文 -誌スタイルと矛盾するようなものもあるので,スタイルファイルの性格を良く理解し -て使用していただきたい. - -\subsection{巻数,号数などの記述} -学会より指示された巻数,号数,先頭ページ番号\hbox{(\|\volpageoffset|)},受 -付/採録年月日(年は平成年)を記述する.なお学会からの指示がない項目に関して -は,記述しなくてよい. - -% }{ - -\subsection{表題などの記述}\label{sec:Desc} +本研究では ゲームフレーム Cerium TaskManager の改良を行った。 +特にCell上での実行の場合、SPEの活用が処理性能に大きく関わる。 +SPEからPPEへのMail通知には、PPEのMailを確認するタイミングが関わって +くるので、MailQueue, TaskArray を用いて +SPE側でなるべく通知にタイミングを減らし、待ち時間を減らした。 +SPEの稼働率を上げることで性能向上につながった。またキャッシュを用い、 +テクスチャなど頻繁に利用するデータをSPEのLSに常駐させることで、データ +転送の回数を減らし待ち時間を削減した。数種のTaskが混在し、バリア同期 +を行っている場合には、SPEの待ち時間が発生するので、Taskのパイプライン化 +によって解決した。またデータアクセスの局所性を保つことでデータ転送の待ち +時間を減少させることができる。Cerium は上記の改良を加え、改良前に比べ、 +約7倍の処理速度の向上が見られた。 -表題,著者名とその所属,および概要を前述のコマンドや環境により{\dg 和文と英 -文の双方について}定義した後,\|\maketitle| によって出力する. -なお投稿時には,表題と概要がそれぞれ別のページに出力され,著者名と所属は出力 -されない. -% -\begin{Description} -\item[表題] -\|\title| および \|\etitle| で定義した表題はセンタリングされる.文字数の多い -ものについては{\dg 自動的な改行が行なわれない}ので,適宜 \|\\| を挿入して改行 -する.その際には各行は左詰めで組版され,その後最も長い行を基準にしてセンタリ -ングされる.なお和文表題は奇数ページのヘッダにも表示されるので,ヘッダに納ま -らないような長い表題の場合には -% -\begin{quote} -\|\title[|\<ヘッダ用表題\>\|]{|\<表題\>\|}| -\end{quote} -% -のように,ヘッダ用に短くしたものをオプション引数として指定する. - -\item[著者名と所属] -各著者の所属を第一著者から順に \|\affilabel| を用いてラベル(第1引数)を付け -ながら定義すると,脚注に ${\dagger}1$ や ${\dagger}2$ を付けて和文の所属 -(第2引数の\|\\|より前)と英文の所属(\|\\|より後)が出力される.なお,複数 -の著者が同じ所属である場合には,一度定義するだけで良い.また論文執筆時と発行 -時とでは所属が異なる場合には,\|\paffilabel| を用いて新しい所属を定義する. -新しい所属は脚注に${\ast}1$や${\ast}2$などを付けて出力される. +Coreの待ち時間を減らすことは、Coreの稼働率の向上につながり処理性能が向上する。 +各Coreの待ち時間は並列プログラミングにおいて、特に注意しなければならない。 -著者名は \|\author| と \|\eauthor| で定義し,複数の著者は \|\and| で区切る. -また各著者名の直後に \|\affiref|\allowbreak\hbox{\|{|\<所属ラベル\>\|}|} -をおいて(複数可)所属ラベル (\|\affilabel| や \|\paffilabel| で定義したも -の)を参照し,対応する脚注参照記号を付加する. - -なお,和文著者名は必ず{\dg 姓と名を半角(ASCII)の空白で区切る}. - -\item[概要] -和文の概要は \|abstract| 環境の中に,英文の概要は \|eabstract| 環境の中に, -それぞれ記述する. -\end{Description} - -% }{ - -\subsection{見出し} - -節や小節の見出しには \|\section|, \|\subsection| といったコマンドを使用する. -\|\section|の見出しは2行を占め,他は1行に出力される. - -「定義」,「定理」などについては,\|\newtheorem|で適宜環境を宣言し, -その環境を用いて記述する.なお見出しは{\bf 定理1}などのように日本語の題と番 -号の組合せを想定しているので,題と番号の間には微小な空白しか入らない.もし -{\bf Thorem 1}のような英語と番号の組合せを用いる場合には,\|\newtheorem*|に -よって環境を宣言すれば,空白が挿入される. - -% }{ - -\subsection{文章の記述}\label{sec:desc*}\label{sec:enum} +\section{今後の課題} -\begin{description*} -\item[行送り] -学会誌は2段組を採用しており,左右の段で行の基準線の位置が一致することを原則 -としている.また,節見出しなど,行の間隔を他よりたくさんとった方が読みやすい -場所では,この原則を守るようにスタイルファイルが自動的にスペースを挿入する. -したがって本文中では \|\vspace| や \|\vskip| を用いたスペースの調整を行なわ -ないでいただきたい.なお \|\begin{document}| の前にコマンド \|\checkline| を -挿入しておくと,本文の各行が持つべき基準線が印刷されるので,行送りが正しいか -どうかをチェックすることができる.ただしこのコマンドは原稿送付時には使用しな -いでいただきたい. -\item[フォントサイズ] -このガイドの印刷結果からもわかるように,論文誌スタイルでは様々な大きさのフォ -ントが使われるが,これらは全てスタイルファイルが自動的かつ注意深く選択したも -のである.したがって,著者が自分でフォントサイズを変更する必要はなく,かえっ -て行送りの原則を守る妨げにもなる.もし特定の箇所で1行に多くの文字を入れたい -などの理由から小さいフォントを使用する場合には,\|\small*| あるいは -\|\footnotesize*| という\|*|が付いたコマンドを使用していただきたい(この二つ -以外は禁止).これらは基準線間隔を変えずにフォントの大きさだけを変更するもの -である.なお \|\small*| の例が\ref{sec:config}節と次のページに示されている. - -\item[句読点] -句点には全角の「.」,読点には全角の「,」を用いる.ただし英文中や数式 -中で「.」や「,」を使う場合には,半角文字を使う.「。」や「、」は一切使 -わない. - -\item[全角文字と半角文字] -全角文字と半角文字の両方にある文字は次のように使い分ける. -% -\begin{enumerate} -\item 括弧は全角の「(」と「)」を用いる.但し,英文の概要,図表見出し,書誌 -データでは半角の「(」と「)」を用いる. +現在TaskのパイプラインはTaskの依存関係をユーザが明示的に記述している。 +Task の数が増えるとプログラミングの難易度が格段に上がってしまうという +問題がある。また、パイプライン化できる場所を特定することも難しくなる +この問題は Task の依存関係をユーザではなく、システム側が記述するようにすること +で解決できる。 Task の依存関係が、処理するデータの依存関係と直結しているので、 +データの依存関係をシステム側で監視し、その依存関係を元に処理を行うことでシステ +ム側からの依存関係の記述が実現できる。もしくは、Taskの依存関係は別の言語で記述 +し、TaskManager がその記述に沿って、定義されたTaskの実行する方法も考えられる。 -\item -英数字,空白,記号類は半角文字を用いる.ただし,句読点に関しては,前項で述べ -たような例外がある. -\item -カタカナは全角文字を用いる. - -\item -引用符では開きと閉じを区別する. 開きには \|``|(``) を用い,閉じには \|''| -('') を用いる. -\end{enumerate} - -\item[OverfullとUnderfull] -製版時にはoverfullを起こさないことを原則としている.従って,まず提出するソー -スが著者の環境でoverfullを起こさないように,文章を工夫するなどの最善の努力を -払っていただきたい.但し,\|flushleft| 環境,\|\\|,\|\linebreak| などによる -両端揃えをしない形でのoverfullを回避は,できるだけ避けていただきたい.また著 -者の -環境では発生しないoverfullが,印刷時の環境では発生することもある.このような -事態をできるだけ回避するために,文中の長い数式や \|\verb| を避ける,パラグラフ -の先頭付近では長い英単語を使用しない,などの注意を払っていただきたい. - -また,\verb|\\| をパラグラフの終りで使用すると -% -\begin{Quote}\small* -\|Underfull \hbox (badness 10000) detected| -\end{Quote} -% -のwarningが発生し,空行が挿入される.このような空行は見苦しく,また重要なエ -ラー・メッセージを見逃す原因にもなるので,ソースを提出する時点では全て除去さ -れているようにしていただきたい.特に,箇条書用環境の直前, \|\item| の直前, -箇条書用環境の末尾などで \verb|\\| を使うと,前述のwarning が出力されること -に注意していただきたい. -\end{description*} % }{ -\subsection{数式}\label{sec:Item} - -\begin{Itemize} -\item 本文中の数式\\ -本文中の数式は \|$| と \|$|, \|\(| と \|\)|, あるいは \|math| 環境のいずれで -囲んでもよい.なお \smash{$\frac{a}{b}$} (\|\frac{a}{b}|) のように背が高い要 -素は見苦しくかつ行送りを乱すことにもなるので,使用しないようにしていただきた -い. - -\item 別組の数式\\ -別組数式(displayed math)については {\bf \|$$| と \|$$| は使用してはならない}. -すなわち \|\[| と \|\]| で囲むか, \|displaymath|, \|equation|, \|eqnarray| -のいずれかの環境を用いなければならない.これらは -% -\begin{equation} -\Delta_l = \sum_{i=l+1}^L\delta_{pi} -\end{equation} -% -のように,センタリングではなく固定字下げで数式を出力し,かつ背が高い数式によ -る行送りの乱れを吸収する機能がある. - -\item \|eqnarray|環境\\ -互いに関連する別組の数式が2行以上連続して現れる場合には,単に \|\[| と \|\]|, -あるいは \|\begin{equation}| と \|\end{equation}| で囲った数式を書き並べるの -ではなく,\|\begin|\allowbreak\|{eqnarray}| と \|\end{eqnarray}| を使って, -等号(あるいは不等号)の位置で縦揃えを行なった方が読みやすい.なお -\|eqnarray| の中では改ページが行なわれないので,行数が多く途中で改ページが起 -こって欲しい場合には,\|\begin{eqnarray}[s]| のようにオプション \|[s]| を指 -定すればよい. - -\item 数式のフォント\\ -{\LaTeX}が標準的にサポートしているもの以外の特殊な数式用フォントは,できるだ -け使わないようにしていただきたい.どうしても使用しなければならない場合には, -その旨申し出ていただくとともに,印刷工程に深く関与していただくこともあること -に留意されたい. -\end{Itemize} - -% }{ - -\begin{figure} -\setbox0\vbox{ -\hbox{\|\begin{figure}[tb]|} -\hbox{\quad \<図本体の指定\>} -\hbox{\|\caption{|\<和文見出し\>\|}|} -\hbox{\|\ecaption{|\<英文見出し\>\|}|} -\hbox{\|\label{| $\ldots$ \|}|} -\hbox{\|\end{figure}\|}} -\centerline{\fbox{\box0}} -\caption{1段幅の図} -\ecaption{Single column figure with caption\\ - explicitly broken by $\backslash\backslash$.} -\label{fig:single} -\end{figure} - -\subsection{図} - -1段の幅におさまる図は,\figref{fig:single} の形式で指定する. 位置の指定に \|h| -は使わない.また,図の下に{\dg 和文と英文の双方の}見出しを,\|\caption| と % -\|\ecaption| で指定する.文字数が多い見出しはは自動的に改行して最大幅の行を -基準にセンタリングするが,見出しが2行になる場合には適宜 \|\\| を挿入して改行 -したほうが良い結果となることがしばしばある(\figref{fig:single} の英文見出し -を参照). - -\begin{figure} -\begin{minipage}[t]{0.5\columnwidth} -\footnotesize -\setbox0\vbox{ -\hbox{\|\begin{minipage}[t]%|} -\hbox{\| {0.5\columnwidth}|} -\hbox{\|\CaptionType{table}|} -\hbox{\|\caption{| \ldots \|}|} -\hbox{\|\ecaption{| \ldots \|}|} -\hbox{\|\label{| \ldots \|}|} -\hbox{\|\makebox[\textwidth][c]{%|} -\hbox{\|\begin{tabular}[t]{lcr}|} -\hbox{\|\hline\hline|} -\hbox{\|left¢er&right\\\hline|} -\hbox{\|L1&C1&R1\\|} -\hbox{\|L2&C2&R2\\\hline|} -\hbox{\|\end{tabular}}|} -\hbox{\|\end{minipage}|}} -\hbox{} -\centerline{\fbox{\box0}} -\caption{\protect\tabref{tab:right}の中身} -\ecaption{Contents of Table \protect\ref{tab:right}.} -\label{fig:left} -\end{minipage}% -\begin{minipage}[t]{0.5\columnwidth} -\CaptionType{table} -\caption{\protect\figref{fig:left}で作成した表} -\ecaption{A table built by Fig.\ \protect\ref{fig:left}.} -\label{tab:right} -\makebox[\textwidth][c]{\begin{tabular}[t]{lcr}\hline\hline -left¢er&right\\\hline -L1&C1&R1\\ -L2&C2&R2\\ -\end{tabular}} -\end{minipage} -\end{figure} - -\begin{figure*} -\setbox0\vbox{\large -\hbox{\|\begin{figure*}[t]|} -\hbox{\quad\<図本体の指定\>} -\hbox{\|\caption{|\<和文見出し\>\|}|} -\hbox{\|\ecaption{|\<英文見出し\>\|}|} -\hbox{\|\label{| $\ldots$ \|}|} -\hbox{\|\end{figure*}|}} -\centerline{\fbox{\hbox to.9\textwidth{\hss\box0\hss}}} -\caption{2段幅の図} -\ecaption{Double column figure.} -\label{fig:double} -\end{figure*} - -また紙面スペースの節約のために,1つの \|figure|(または \|table|)環境の中に -複数の図表を並べて表示したい場合には,\figref{fig:left} と -\tabref{tab:right}のように個々の図表と各々の \|\caption|/\|\ecaption| を -\|minipage| 環境に入れることで実現できる.なお図と表が混在する場合, -\|minipage| 環境の中で\|\CaptionType{figure}| あるいは \|\CaptionType{table}| -を指定すれば,外側の環境が \|figure| であっても \|table| であっても指定され -た見出しが得られる. - -2段の幅にまたがる図は,\figref{fig:double} の形式で指定する. 位置の指定は -\|t| しか使えない. - -図の中身では本文と違い,どのような大きさのフォントを使用しても構わない -(\figref{fig:double} 参照).また図の中身として,encapsulate された -PostScript ファイル(いわゆるEPSファイル)を読み込むこともできる.読み込みの -ためには,プリアンブルで -% -\begin{Quote} -\|\usepackage{graphicx}| -\end{Quote} -% -を行った上で,\|\includegraphics| コマンドを図を埋め込む箇所に置き,その引数 -にファイル名(など)を指定する.また{\LaTeX} 2.09の場合は,\|epsf| を -\|\documentstyle| のオプションで指定し,\|\epsfile| コマンドで図を埋め込む. - -この節を注意深く見ると,\figref{fig:single} や\figref{fig:double} の最初の参照 -はゴチック体であるのに対し,2回目以降では明朝体であるのに気づくだろう.この -切替えは論文誌の伝統的体裁に基づくもので,図の参照を(「図\hbox{\|\ref{|\<ラ -ベル\>\|}|}」ではなく)\|\figref{|\<ラベル\>\|}|を用いて行なえば自動的に成され -る. - -% }{ - -\subsection{表} - -表の罫線はなるべく少なくするのが,仕上がりをすっきりさせるコツである.罫線を -つける場合には,一番上の罫線には二重線を使い,左右の端には縦の罫線をつけない -(\tabref{tab:example}).表中のフォントサイズのデフォルトは\|\small|である. - -また,表の上に{\dg 和文と英文の双方の}見出しを, \|\caption|と \|\ecaption| -で指定する.表の参照は \|\tabref{|\<ラベル \>\|}| を用いて行なう. - -\begin{table}[b] \caption{箇条書環境の使用箇所(表の例)} \ecaption{Sections -and sub-sections in which list-like environments are used (example of -table).} \label{tab:example} -% 左右の罫線はつけず,一番上の罫線は二重線 -\hbox to\hsize{\hfil -\begin{tabular}{l|lll}\hline\hline -&enumerate&itemize&description\\\hline -type-1& \ref{sec:enum}& \ref{sec:item}& ---\\ -type-2& ---& \ref{sec:item*}&\ref{sec:desc*}\\ -type-3& \ref{sec:Enum}& \ref{sec:Item}& \ref{sec:Desc}\\ -type-4& \ref{sec:ENUM}& \ref{sec:ITEM}& \ref{sec:DESC}\\\hline -\multicolumn{4}{l}{type-1\,: enumerate等\quad type-2\,: enumerate*等}\\ -\multicolumn{4}{l}{type-3\,: Enumerate等\quad type-4\,: ENUMERATE等}\\ -\end{tabular}\hfil} -\end{table} - -% }{ - -\subsection{箇条書}\label{sec:item*} - -論文誌では箇条書に関する形式を特に定めておらず,場合に応じて様々な様式が用い -られている.スタイルファイルでは,{\LaTeX} の箇条書用の環境である -\|enumerate|, \|itemize|, \|description| に4種類のファミリーを設け,状況に応 -じた使い分けができるようにしている. -% -\begin{itemize*} -\item \|enumerate|, \|itemize|, \|description|\\ -{\LaTeX} の標準的なものと同じ.但しインデンテーションは \|enumerate| では全角3 -文字分,その他は全角2文字分である.また \|enumerate| のラベルは,標準の -% -\begin{quote} -1.\quad (a)\quad i.\quad A. -\end{quote} -% -ではなく, -% -\begin{quote} -(\,1\,)\quad (\,a\,)\quad (\,i\,)\quad (\,A\,) -\end{quote} -% -のように全て括弧付きであり,数字などの前後に小さな空白が挿入される. - -\item \|enumerate*|, \|itemize*|, \|description*|\\ -\|enumerate|などとほぼ同じだが,インデンテーションは全角1文字分である. - -\item \|Enumerate|, \|Itemize|, \|Description|\\ -文章のインデンテーションを行なわない. - -\item \|ENUMERATE|, \|ITEMIZE|, \|DESCRIPTION|\\ -文章のインデンテーションを行なわず,先頭行(ラベルがある行)を全角1文字分だ -けインデントする. -\end{itemize*} -% -\tabref{tab:example} に示すように -このパンフレットの各章/節に各々の環境の使用例があるので,適宜参照されたい. - -% }{ - -\subsection{左右の段の行揃え} - -文章の記述のところでも述べたように,論文誌では左右の段で行の位置をそろえる必 -要がある.ユーザが特別な高さのボックスを使ったために行の位置が乱れてしまうよ -うな場合には,その部分を \|\begin|\allowbreak\|{adjustvboxheight}| と % -\|\end|\allowbreak\|{adjustvboxheight}| で囲っていただきたい.この環境は中途 -半端な行送りを吸収するためのものである.例えば次の; -% -\begin{adjustvboxheight} -\begin{quote} -\fbox{$\displaystyle\sum_{i=0}^n i$} -\end{quote} -\end{adjustvboxheight} -% -は,以下のようにして出力したものである. -% -\begin{Quote} -\|\begin{adjustvboxheight}|\\ -\|\begin{quote}|\\ -\|\fbox{$\displaystyle\sum_{i=0}^n i$}|\\ -\|\end{quote}|\\ -\|\end{adjustvboxheight}| -\end{Quote} -% -ただしこのようなものを本文中に挿入することを推奨しているわけではない. - -% }{ - -\subsection{脚注} -脚注は \|\footnote| コマンドを使って書くと,ページ単位に\footnote{脚注の例.} -や\footnote{二つめの脚注.}のような参照記号とともに脚注が生成される.なお, -ページ内に複数の脚注がある場合,参照記号は {\LaTeX} を2回実行しないと正しく -ならないことに注意されたい. -({\LaTeX} ブック \cite{latex} の156ページ参照.) - -また場合によっては,脚注をつけた位置と脚注本体とを別の段に置く方がよいことも -ある.この場合には,\|\footnotemark| コマンドや \|\footnotetext| コマンドを -使って対処していただきたい. - -% }{ - -\subsection{参考文献の参照} - -本文中で参考文献を参照する場合には,参考文献番号が文中の単語 -として使われる場合と,そうでない参照とでは,使用する文字の大きさが異 -なる.前者は\|\Cite|により参照し,後者は\|\cite|により参照する.たとえば; -% -\begin{Quote} -文献 \|\Cite{total}| は \|\LaTeX\cite{latex}| の総合的な解説書である. -\end{Quote} -% -と書くと; -% -\begin{Quote} -文献\Cite{total}は\LaTeX\cite{latex}の総合的な解説書である. -\end{Quote} -% -が得られる. - -また,一つの \|\Cite| あるいは \|\cite| コマンドで三つ以上の文献を参照し,か -つそれらの参照番号が連続している場合,\Cite{article1,article2,article3}や -「文献\cite{latex,article4,article5,article6}」のように,自動的に先 -頭と末尾の文献番号が `--' (en-dash) で結合される.なお,非常に多数の文献を参 -照し,それら全てを \|\Cite| や \|\cite|で指定するのが面倒な場合は -% -\begin{Quote}\raggedright -\|\multiCite{|\<先頭文献のラベル\>\|}|\nobreak\hskip-2em\allowbreak - \hspace*{2em}\hbox{\|{|\<末尾文献のラベル\>\|}|}\\ -\|\multicite{|\<先頭文献のラベル\>\|}|\nobreak\hskip-2em\allowbreak - \hspace*{2em}\hbox{\|{|\<末尾文献のラベル\>\|}|} -\end{Quote} -% -を用いて,\multiCite{article1}{book3}や「文献 -\multicite{booklet1}{unpublished}」のような結果を得ることもできる. - -% }{ \subsection{参考文献リスト} @@ -916,18 +522,6 @@ % }{ -\subsection{謝辞,付録} - -謝辞がある場合には,参考文献リストの直前に置き,\|acknowledgment|環境の中に -入れる.この環境の中身は投稿時には出力されない. - -付録がある場合には,参考文献リストの直後にコマンド \|\appendix| に引き続いて -書く.なお付録では,\|\section| コマンドが{\bf A.1},{\bf A.2}などの見出しを -生成する.また付録全体に見出しをつける場合には,\|\appendix[|\<見出し\>\|]| % -のように見出しをオプション引数として与える. - -% }{ - \subsection{著者紹介}\label{sec:DESC} 本文の最後(\|\end{document}| の直前)に,以下のように著者紹介を記述する.