解説Ver1に向けて

学会投稿よりも前に中間発表が有るので一般人にもわかる解説を先に考える必要が有る。元々僕はそういう解説を準備するのが非常に苦手で、過去に何度も研究リソースの獲得に失敗してきた過去がある*1

説明するべきパート

hardest firstの教えに従って、skySchemeが(CG研究と違って)わかりづらい部分から考える。

経験上、ネットワークプロトコル存在を理解するのにはそれなりの経験がないと難しい。電通大ISは情報系でない学生を受け入れているという背景があるので、PC(特にWindowsPC)を使ってきた経験だけを前提とできる。
大昔はJPEGのような基本的な画像を取り扱うのにさえ特定のソフトウェア(いわゆる画像ローダ)が必要だったため意識する機会が多かったが、現在はWebブラウザがなんでも開いてしまうので難しい。
もっとも、skySchemeの研究が進むにつれ、skySchemeはプロトコルの実装以外にも使えそうなことが分かってきた。よって、プロトコルに絞った説明をする必要は無いのかもしれない。

  • データ構造の存在意義

データ構造の理解はskySchemeの理解のために最重要なキーポイントといえる。skySchemeの目的、つまりデータ構造処理の効率的な実現に直結する。
もっとも、"データ構造処理"の指す内容は(いろいろな失敗により)変化している。

  • 現状の問題点
  • 解決手法

説明の流れ

コミュニケーションのスケジューリングに絞って説明する。データフローの最適化はSIMD演算とか近年のトレンドを知らないと理解が難しい。(中間発表のスライドにはSIMD最適化だけ挙げておいて、質問対応スライドでどうにかする)

  • 1. 従来の演算モデル

データをディスクやメモリから取ってきて、CPUで演算して書き戻すモデル。これはC言語でうまく記述できた。

  • 2. 従来の演算モデルの問題点

並列性を表現できない。大量のデータを処理するようになったのでこの問題は表面化してきた。

  • 3. 演算環境の多様化

いまはC言語で頑張って個々に最適化。ダブルバッファが効果的なこともあれば、それは自動的に行われるから対応するだけ無駄な環境もある。しかし、ソースコードは共用されるから最善のパフォーマンスはなかなか得られない。

構造体記述など、データ処理に特化したプリミティブを用意したコンパイラを環境に特化した形で準備し、プログラムごとの最適化をしなくても済むようにした。よって、ソースコードを共用しつつ最善の処理効率を各プラットフォームで得られる。

  • 5. 試作結果

なにか良い結果を書きたいところだが。。

*1:今metaposeとか自然言語処理のような(研究室のリソースを使えない)本筋と関係ない研究ができるのは、十分に資金があるので研究資金には困ってないから。だから鍵盤とか電子辞書とかをホイホイ買える。