Mar 19, 1998

Tempo Workshop

1998-03-14

パリに行くのだ。2月末に引っ越して始めて気付いたのだが、川崎から成田へのアクセスがとっても悪い。本郷は東京に出て成田エキスプレスでも上野に出て京成スカイライナーでも良いので何も考える必要がなかった。今回は前から試してみたかった箱崎からリムジンバスというのを試してみた。東横線で渋谷に出、半蔵門線で終点の水天宮前まで行くとTokyo City AirportTerminal(T-CAT)がある。ここではほぼノンストップでチェックイン、出国手続き、バスの手配ができる(しかも安いし交通渋滞は心配するほどではない)。しかし、渋谷での乗り換えは下り方向だけとは言えちと厳しい。新玉川線や田園都市線だと直通になるのでよいのかもしれない。ちなみに成田エキスプレスを利用するルートでは必ずどこかで階段を上らなければならないので、とりあえずそれだけは避けられた。

そして約12時間空中に。西回りのコースはあまり時差ぼけが恐くないので、映画や機内食を楽しむ。映画はNothing to lose, Peace Maker, 陰謀のセオリーの3本。最初のは去年の11月に見たし(Tim Robinceは結構好き)、2番目は途中であまりのつまらなさに見るのを断念してしまった。3本目はメルギブソンがいかすのだけど、ジュリアが間延びしすぎ(この女優は見過ぎたのでみんなもう飽きてきたんじゃないか)だし、後半以降のストーリー展開には相当無理がある。ところでとなりの夫婦が煩いよ。奥さんの方がすごく子音の強い東京弁でまくしたてていて(頭悪そう、語尾の「さー」ばっか聞こえる)、しかも旦那全然聞いてない。

そうこうしているうちにパリに着き、Air Franceのリムジンバスに乗って有名な凱旋門のあるEtoile駅まで移動する。移動中、ワールドカップ会場になるサッカー場などいろいろあったが、Fiat, Peugeot, Renault, Citroën, VW, Opel, Hondaなどのコンパクトカーが小気味よく走っている様子がいかにもヨーロッパ風、ワゴンばかりの東京とは好対照である。ところでEtoileみたいなRond Pointで車はどう走るのか見極めたいというのがこの旅行の目的の一つだったので見ていたらところ、みんな何も考えていないね。とにかくめちゃくちゃ、結構こつこつ当てているみたい。

さて、メトロに乗ってホテルのあるPiggaleへ。ちょっと迷った後に無事ホテルに着いたのだがなんたって周りがすごい! Sacre-Coeurに近いのはともかく、ストリップ劇場やSex ShopやLOLITAなんとかとかそんなのばっか! ガイドブックを見てもホテルの位置が書いてないわけがよーく分かった。ホテルの位置も実はPiggale広場の一角のストリップ小屋の呼び込みのあんちゃんに「英語で」尋ねて初めて分かったのだ。ナイトショーはどうだい? じゃねえよ、あんちゃん。ムーランルージュとかクレージーホースとかなら話のネタに行ってみてもいいけどね、おたくのはいかにも下品系じゃん。暗くなる前に着けばSacre-Coeurを見に行くつもりだったが諦めて、近所で食事をし、私とっては32時間あった3/14は終わったのであった。

1998-03-15

今日はRennesに行かなければならない。ホテルのチェックアウトが11時くらいだったのでその前にSacre-Coeur寺院に寄っておこうと思ってちょっと早起き。しかし、思いっきり歩かされるのかと思いきや全然そんなことはなく(昔読んだ本には結構迷った人の話が書いてあったのだが)、パリの東大寺風。とりあえず礼儀作法として、卒業旅行で来ている2人組に声をかけて写真撮影した。

ホテルに戻って荷物をまとめてチェックアウト。メトロに乗ってMontparnasse Bienvenueまで行き、話の種にモンパルナスタワーを見ておこうと地上に上がり、見てみたところなんのことはない、ただの品の良いサンシャイン60であった。ガイドに依れば57階もあるくせに屋上にテラスがあって下界が見渡せるらしい。すごい強風なんじゃなかろうかと危惧するのだが未確認。

再び地中に潜ってMonparnasseの国鉄駅まで移動し、TGVのチケットを買う。TGVは予約が必要なのだが、国内線なら沢山設置してある発券機で予約して買うことができ、支払いはクレジットカードでもよい。この発券機はなかなか優れもので、チケットの磁気情報を読み込んで予約を変更して再発行することもできるし、座席や食事の有無も選択できるし、割引便情報を教えてくれてそれを選択すると15%安くなったりもする。国鉄では支払い方法が結構複雑である。プリペイドカードやユーロパスのようなものもあるし、現金でもカードでも払えるという具合に支払区分が10種ほどあった。だからこそ自動化しないとしようがないのだが、JRも見習ってほしい、特にクレジットカードで払えるあたり。

TGVに乗って2時間10分。さすがにフランスの誇る新幹線である。牽引用の車両と客車が分離されているために非常に静か、特に低速時はまるで滑っているよう。スピードはちょっと遅めかもしれない。しかし、最新鋭TGVはパリからアムステルダムに向かう路線だけに採用されているのでひょっとすると侮れないかも。TGVの売店で、ワインとサンドウィッチを買ってつましい食事。景色は牧草地か小麦畑の休耕地だけが続き、町らしい町はない。レンタカーでも楽しそうである。

Rennesはブルターニュ地方の古い町、まあ中心都市で、Citroënの工場や、大きな大学がある。IRISAの人に予約だけ入れておいてもらったホテルを探して、全然英語の話せないお姉ちゃんとの強引な英語による交渉の結果、1日265FFでとりあえず泊まれることになった。

まだ4時だったので町を見て回ることにした。が、日曜日なので人がいなくて寂しい。St Pierre大聖堂とかSt Sauveur教会とかHoche広場とか古い町並みとか観光ガイドに載っているところはだいたい行ってみたが、どうってことはない。途中のクレープ屋の売り子のお姉さんが愛想が良くて、可愛かった。フランス語も勉強しておかねば。

締めくくりにホテルのそばのMusee de BretagneとMusee des Beaux-Artsに行ってみた。博物館の方には宗教画や古典派の絵の他、家具、ケルト人文明であるところの土偶やら海賊にかかせないアイテムが陳列されている。美術館の方は近代絵画が中心で非常に沢山ある。が、充実しているというわけではない。コローやピカソあたりが目をひくが、何だか地元の有名な印象派画家の作らしい一群の絵があった。

ホテルに戻って食事に出掛けたり、ネットワーク接続を確立するために非常に試行錯誤をした。結局、ダイアルアップは人手で行うことで何とか接続でき、28.8kbps出ることが分かった。

1998-03-16

朝、ホテルで食事をしているとそばにフランス語っぽい英語を話す眼鏡のおっちゃんが来て、これまたドイツ語っぽい英語を話すあんちゃんと話を始めた。すぐあとにそのおっちゃんがなんと、Olivier Danvyであることを知って早速自己紹介である。松岡さんのことを小ネタに使ったりした。

バスでIRISAに行き、ほどなくConselのPartial Evaluation(入門)のチュートリアルが始まった。と言ってもNeil D. Jonesの教科書のようにFutamura Projectionやmix functionの話はしない。手続き型言語でのPEの簡単な例や有名なテクニック、Online/Offlineの違い、PEの話で必ず出る停止性問題、Compile-time/Run-time PEの違い、現状の様々なシステム、という具合でひたすら実践的である。が、後でOlivier DanvyがRemarkを述べていたようにPEのチュートリアルとして正統なものであったかどうかはあやしい。

そしてカフェテリアで昼食。ちゃんとしたコースでワインも際限なく飲める。が、こういう場面では飲んでいてはいけない、そう、必ず研究の話をするのである。近くにいた人に先を越され、さらに促されてしまったので、OMPIとOpenJITの話をアウトラインだけした。前者はPEのアプリケーションとして非常によく分かってもらえた。後者は首をかしげていた。が、多分話し方のせいだろう、PEをどう利用するのか述べていなかったし。いつのまにかそのテーブルでは、PEでメタレベルを高速化するかメタレベルでPEモジュールを提供するかという議論になっていた。後者はまさしく私の言いたいところなのよ、でも十分説明できない。

セミナー室に戻るとDIKUのArne Glenstrupという人が話しかけてきた。2年くらいに萩谷研に来ていたらしく、武市先生や胡さんのことを知っていた。彼にもOMPIの話をした。もうちょっと理論的に扱ったペーパーがあることを教わった。そしてここで今日初めてのピンチ! 彼が時差ぼけネタを振ってきたのだ。日常会話は作文できないっていうのに! 「西回りだと東回りほど時差ぼけはひどくならないよね」とただそれだけ言うつもりなのにどつぼにはまった、しくしく。

Danvyが富士通製の薄型ノートを持ってきていて格好いいとかなんとか言いあっている。本人は気に入っているらしい。あんまり殺生なこと(Sonyのもっと薄いノートがあってスマートだ、電池が持たないよね、だいたい富士通というのは、などなどなどなど)は言わないことにした。

午後のチュートリアルは実際にPEを行うシステムをどう作るかという話であり、聞けば聞くほど、OMPIと同じことをやっている(ただし結構スマート)。曲がりなりにもJones本を読んだ成果があったわけだ。作っているときは全然参照しなかったのに。チュートリアルの後半ではなぜかRun-time PEの評価を行うための基準に話が及び、キャッシュサイズやプロセッサの処理速度によって基準が変わってしまうだとか、DanvyはGarbage Collectionのある実行環境での評価に随分固執していた。

チュートリアルの予定が早めに終わったのでハイヤーのバスが1時間待たないと来ない。仕方がないので市営バスに乗ってホテルに帰る。20時にディナーの約束だったのでそれまで休む。

ディナーはChapitre通りにあるL'Escu de Runfaoというレストランで食べた。この通りはかわいらしいレストランが並んでいてなかなかいい佇まいである。ただ通りの入り口に緑色に染めたモヒカン男がいてなんだかなという感じであった。Rennesは欧州ではRockが盛んで知られる町である。従ってこの手のファッションの人が(まだ)いたり、ギターをむき出しで運ぶ人が絶えないのである(恥ずかしい)。それはともかく、料理は非常においしかった。カレイかなにか(turbot)のムニエルだった。

いやー、もう皆さんフランス語がお上手で…。つい先ほどのReceptionのディナーの時にもJean-Pierre Briotと同じ席についたんですが、周りがみんなフランス語に堪能な方ばかりで、私にネタを振ってくれるときと私がネタを振るとき以外はみんなフランス語ざんす。ちょっと寂しいものがありました。それにしてもイチジクをフランス語と日本語では言えるけど、英語では言えないBriotって、一体。

1998-03-17

今日は朝8:30から、Tempoの簡単なチュートリアルを行った後、実際に計算機室に行ってTempoシステムを使っていろいろ遊んでみた。TempoはC言語用(他にもFortran, Java用もあるらしいのだが、完成度が全然らしい)のOffline Partial Evaluatorであり、最初のパスで、と言っても実際には多数のパスから構成されるのだろうが、プログラムとエントリポイントの関数とその引数の抽象領域(S/D)を与えると、それらをもとに束縛時解析(BTA)を行ってその情報を付加したプログラムを生成する。

Compile-time PEを行う場合はこのプログラムに対して、CT Specializer Generatorを適用することでSpecializerのインタプリタを生成する。このインタプリタをコンパイルし、エントリポイントの関数の引数のうち、Staticな引数の具体値を与えると静的にSpecializeされたコードを生成する。

一方、Run-time PEを行う場合は、先の情報の付加されたプログラムにRT Specializer Generatorを適用するだけだが、要するにコンパイル時には動的な式に対応する部分は通常の実行用のテンプレートを生成し、静的な式に対応する部分はRT Specializerを生成する。実行時は静的な式の評価と先に生成されたテンプレートの実行を順次行う。従って、RT PEではテンプレートの内部に静的な値がinliningされるだけでそれ以上Specializeは行われないし、テンプレートを跨るinliningもできない。

いくつかサンプルを作って試してみた。内積ルーチンを作って一方のベクタを静的に与えてSpecializeする。この内積を使って行列積を実現したものと、Specializeを行っていないもの、indirection vectorを使って動的にキャッシュを行うものの実行時間を比較したりしてみた。

カフェテリアでの昼食の時はOlivier Danvyと一緒になったのでTempoを使ってやった実験の話をした。昼食が済んだ後、Tempoシステムの動作を説明するチュートリアルが始まった。BTAのやり方としてMonovariantとPolivariantがある。前者はプログラムテキスト上のポイント毎にBinding Timeを決定するもの。後者はプログラム実行中のポイント毎にBinding Timeを決定するもの。後者の方がリッチな情報が得られるが、計算時間がかかるのと関数型言語のような副作用がないものでないとStorageの管理が大変になる。

TempoではMonovariant BTAを行い、さらにプログラムの下の方から評価時のBindingを決定するEvaluation Time Analysis(ETA)を行う。これはつまり、BTAの結果、あるStorageがstaticになっても、その後にそのStorageをポインタ変数として参照する場合やコントロールが絡んで値が更新される場合には、staticな値をpropergateしてもStorageを省略してはならないので、その情報を付加するものである。しかし、この話では例えばプログラムをSSAに変換しておくことで、更新される前と後では異なるStorageとして扱うことでよりシンプルにETA相当のことができると考えられる。このことは私が質問してみたが、多くの人が気が付いていてかなり議論が紛糾した。TempoではSSA変換を行ってプログラムの可読性を損なうことを避けているようであった。今後の課題としてPolivariant BTAへの対応が言われていたが、極めて難しいという感想を持つ人が多かった。

バスでダウンタウンに戻った後、多くの参加者は映画を見に行ったようだ。が、フランス語に吹き替えがなされているので私は見ても分からない。しかたないので研究室への土産を物色しに行ったが、なかなかいいものがない。うろつき回った後、カフェで食事をとって今日はおしまい。

1998-03-18

今日は朝8:30から、Concelのグループの計算機室に行ってTempoシステムを使って昨日の続きの実験をやった後、PEPM97のペーパーにあったSun RPCのPartial Evaluationによる最適化についての実験を行った。

Sun RPCは分散システムの基盤として利用されている技術で、特にSunの実装では他のheterogenuousなプラットフォームでも動作するように極めてgenericに作られており、PEを用いた特殊化の機会がたくさんある。例えば、1つは中間構造の除去によるディスパッチの単純化である。RPCのコードでは

xdr_long(xdrs, lp)
{
  if (xdrs->x_op == XDR_ENCODE) return XDR_PUTLONG(xdrs, lp);
  if (xdrs->x_op == XDR_DECODE) return XDR_GETLONG(xdrs, lp);
  if (xdrs->x_op == XDR_FREE)   return TRUE;
  return FALSE;
}

なんていうコードが階層的に多数現れるが、xdrsのinterprocedual analysisにより、この種のディスパッチは非常に単純化できている。また、バッファ溢れ検査の省略、戻り値の省略なども行っている。

この話は私のOMPIの話に非常に似ている。MPIでもSun RPCでも省略できるソフトウェアオーバーヘッドはかなり共通している。私のがMPIに特化されたPartial Evaluatorを作ったのに対し、この話では汎用のPartial Evaluatorを利用している。OMPIはOnline PEなのでプログラムコードから自動的にPEを開始する点を決定するが(しかしながら、私の実装は甚だad hocと言って良いものだ)、この話はOffline PEなのでa prioriに開始点を与えなければならない。

そうこうするうちにセミナー室に戻ってAdaptive Programmingという話を聞いた。が、なんだかよく分からなかった。Partial Evaluationを使ったいろんなアプリケーションがあるよ、ということか? 当たり前じゃん?

カフェテリアでの昼食。Jean-Pierre Briotと一緒になったので自分の研究の話をした。彼が米沢研にポスドクで来ていたことがあるのを知っていたので、松岡研の助手になる話をしたら世間は狭いとか何とか言っていた。OO+Reflection業界は確かに非常に狭いだろう。それこそ、Functional Programming以上に。

午後からはSpecializing Sun RPCと題して午前中の実験でやった話の詳しい説明をしてくれた。性能評価はSun SS2(SunOS 4.1)を100MbpsのATMでつないだ結構恣意的な環境と、PC linuxを100M Etherでつないだ環境でやっていて前者は良い結果が得られていたが、後者はあまり良くはなかった。OMPIでも同様のことが言える。2年前にWSクラスタで少しだけ試してみたがAP1000のようなプロセッサがネットワークに比べて非常に遅い場合以外ではあまり利得がなかった。

その後、Scott Thibaultという学生がActive Networksというネットワーク層のプロトコルを記述するDSL(Domain Specific Language)の解釈実行をPartial Evaluationして高速化するという話をしていた。かれはGALというVideo Device Driverのソフトウェア層をDSLで記述しておいてその解釈実行を高速化するという話もやっており、なかなか面白かった。その後、ソフトウェア工学的な手法としてのPEというテーマの話があり、これは午前の最後のトークとまあ大部分共通するのだが、私の認識が至らず、よく分からず当たり前のことを言っているように思えた。

チュートリアルのプログラムはこれで終了し、いくつか質疑応答があった後、ConcelにWorkshopの記念品を参加者一同から贈った。記念品はTempoということでメトロノーム。Danvyがオーガナイズして我々がこっそり準備していたのだ。

バスでダウンタウンに戻り、土産ものを物色したり、明日Parisに戻るので荷物の整理をしたり、カフェで食事をしたりした。夜中に近所のカフェに出かけて酒を飲む。今日はおしまい。

1998-03-19

朝起きて、ホテルの食事とチェックアウトを済ませがてら、ホテルの主人にRennes駅まで行くバスはどこから乗れるのかと聞くと、ないと言う。ない、ということはないだろう、ここは一応繁華街で、あっちは駅だ。言い違えたか聞き違えたかと思って再度聞くが同じ答え。行きはタクシーで来た道を仕方なくとぼとぼ歩く。

Monparnasseからこちらに来た時に15%引きのチケットを買っていたのだが、随分出発まで時間がかかる。要するに昼間の閑散時のチケットが安いわけだ。追加金を払ってもう少し早い便に換えてもらい、退屈だったRennesの街に別れを告げ、早々にParisに戻る。

さてParisに戻ると、2時過ぎ。次のホテルに行けばちょうどチェックインできる時刻になっている、だろうと思い、向かう。ところが今度のホテルは場所が良く分からない。というより、前回のホテルも大体この辺だろうと当たりを付けて行ってみたら、たまたまそこだったというだけのことだ。何となくここが近いのではないかと思って、Gare du l'Estで降りてみる。結構古い大きな駅で地上に上がってくるだけで一苦労である。駅前の大通りらしいところできょろきょろしていると、ご老人が私に郵便局はどこかの? てなことをフランス語で聞いてくる。丁重に英語で分かんねえよと伝えると、どうも分かっていないご様子で再度聞いてくる。この問答を何度か繰り返す。

信号で止まっているタクシーを見つけて、これこれこういうホテルに連れてってくれと言うが、近すぎるからやだよとつれない返事。仕方ない、こっちっぽいという方向に歩く。途中で見つけたタクシーにやはり道を聞く。20分近く迷った挙げ句、やっと着く。ホテルはダウンホールスタイルのまあ若者向けのホテルで、フロントで聞いてみるとPoissonaireが最寄り駅で実は随分近かった。ホテルはダウンホールスタイルで二つ星なのでエレベータはない。その7階の一番奥が私の部屋。荷物を運ぶのが大変だった。

今日は時間もないし、適当にカルチェ・ラタンあたりを散策、明日は美術館、明後日はシャイヨー宮から東を適当に散策、と綿密な計画を建て、ホテルを出る。

残りは未完。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com