ILC2012個人的まとめ#4 四日目

今までずっと書き忘れてたけど、会場は朝早い(といっても8時だけど)ので、朝ごはんとして、後ろのデスクもしくは別室の方にサンドイッチとコーヒーとジュースと果物が置いてあって好きに食べれた。

Enabling Practical Reconfigurable Computing Through Domain Specific Compilers

  • cpu構造の話
  • cpu構造の簡単なおさらい(レジスタ、ALU、メモリ、L2キャッシュ、等々)
  • The multi-everything paradigm
    • コア数たくさん、プロセッサ数たくさん、それがブレードサーバみたいに大量に入っているのが、ラックの中に沢山あり、そのラックもデータセンタ内に大量にある…というパラダイム
  • Reconfigurable Computing FPGA
  • NovaSparksという製品
    • これもラックにたくさん入れられるタイプの製品
  • FPGAの簡単なおさらい
  • CPU vs FPGA の表
  • エンジニアの人がCPUもしくはFPGAで(並行)プログラミングする際のイメージ図
    • FPGAの方はウォーリーを探せ状態の人ごみの写真
    • CPUの方は夕方の浜辺に二人がいる写真
    • (要は、FPGAプログラミングはCPU以上にずっと大変という事)
  • Hardware Description Language (VHDL, verilog)
  • C/C++ to VHDL Compiler」の提案
  • 「NovaSparks用コンパイラ」の目的
  • 「NovaSparks用コンパイラ」の基盤
    • DSLである
    • IPS(Interface-Passing Style)である
    • CLOSベースである
  • プロトコルDSLのサンプル図示
  • コード生成とIPS
  • NASDAQのシンプルメッセージの統計を取るツール
  • FPGA用だけではなく、同じ元コードよりCPUマシン語も生成
  • VHDLコード生成サンプル


ここからはスケジュール変更でしばらくLTをする事に。
基本的にほぼ聞き取れてないですすいません

Lisp based on Linear Logic

Francois-ReneさんのLT。
内容はすごい興味あったんだけどすごい早くて自分には聞き取れなかったので後で読み直した。
5分きっかりで終わったみたいだし、LT鍛えられてるんだろうなあ…。google恐るべし。

Tapes of Tech Square

大昔にTech Squareにあった研究所のバックアップテープを探すプロジェクト?
何枚かの昔の写真と昔の話。
詳細はよく分からないけど、レッドモンドでの昔のビルゲイツマイクロソフト
ビルゲイツがテープを持っていたそう。
(多分…)

My Lisp Implmentation

zickさんがこれまで実装してきたLisp処理系の紹介。
プリンタLisp、ポケステLisp、ニコ動Lisp、リリカルLisp、が紹介されて海外の人にも受けてました。

BiwaScheme紹介

  • 動機
    • サーバ上のtuplespaceをブラウザからいじりたかった
  • 概要
  • 実演
    • 前日のtaraiミュージックを、BiwaSchemeでブラウザでリアルタイム演奏!
  • Biwaは琵琶湖との事

Exploring the Rubik Cube

  • 立方体の展開図にルービックキューブの各部位を割り当て、更にその各部位に数値を割り当て、リストで状態を表現
  • 上記の上で、回転させるメソッドとかを書いていった
  • cl-permutation (順列を扱うライブラリ)を自作、使用


LTおわり

Author Name Disambiguation System for Academic and Research Papers

  • 「Name Disambiguation」とは「名寄せ」の事だそう
  • Deposit Payoff System
    • 銀行がつぶれた時に、保険会社が補償金を払うシステム?これで銀行のアカウント情報で名寄せをする、という例が説明されていた
  • 手動 vs 機械学習
  • 「Author Name Disambiguation」は、論文の著者での名寄せを行うそう
  • Items of Author Record
    • いろんなフォーマットがある
    • 五個ぐらい例が出て、どれとどれが同じ人か、というクイズ。人間が見てもちょっと考える
  • 実システムの構成情報
  • Pairwise Distinction
  • 特徴ベクトルのデザイン
    • これどうやってるのか逃しましたすみません
  • 二つの(特徴?)ベクトルのコサイン類似性
  • ランダムフォレストを使った特徴抽出
  • Different of publication year
    • 要は西暦とか平成とか昭和とかの問題
    • これもSVMで判定する
  • このシステムは「CiNii」のサイトで稼働中
  • 質問で、日本人の名前固有の事が出てたりしてた
    • 違う漢字で同じ読みがある、同じ漢字で違う読みがある、ファミリーネームが変わる事がある、旧字体、等々

Automatic and Tunable Multi-Level Locality Improvement with a Lisp GC

GCチューニングの話。

  • メモリヒエラルキーのおさらい
    • L2キャッシュとか
  • ヒエラルキカルクラスタリング採用(以下HC)
    • これとAllegro CLで、世代別GCを実装
  • GCのおさらい
  • HC解説
    • level 0 : オブジェクト
    • level 1 : オブジェクトのグループ
    • level 2 : オブジェクトのグループのグループ
    • level 3 : ...
  • CC-HC : Cache-Consious HC これを採用
    • これとは別にCO-HCというのもある(OはObliviousとの事)
  • 推奨されるフィッティング
    • level 1 : L2キャッシュ
    • level 2 : VMページ
    • level 3 : To-space
  • CC-HCコピーアルゴリズム
    • これの動作をアニメーションで見る
      • レベルが低いところは頻繁にコピーされ、レベルが高いところはたまにしかコピーされない動作をしている
  • Allegro CLでの世代別GC
    • CDR-firstコピーGC
      • Lispのconsセルの構造を利用したGCアルゴリズム
      • Allegro CLのデフォルトに採用された?(聞き取り怪しい)
  • CC-HC実装
  • 今のところグローバルGCにCC-HCは適用できないとの事(将来対応予定)
  • またLispイメージそのものにも適用できない
    • Lispイメージについてはあとで調べる事
  • ベンチを取る
    • レイトレーシングでk-d木いじり
    • 10MBのXML操作
    • チューニングした上で再度ベンチ
    • 上記の結果のグラフ
    • 同上の、L2キャッシュミスのグラフ、L3のグラフ、TLBのグラフ
    • GCタイムのグラフ
      • これはCC-HCの方が少し時間かかってるように見えた(がグラフ読みミスの可能性も)

おひる

例によってお弁当もらって、建物の中の吹き抜けっぽいところで食べた。
昼寝した。

Core-serveR : A Common-Lisp Application Server

webアプリサーバです。

  • class+
    • 「defclass+」で定義
    • 関数的オブジェクト(例)
  • メソッドリフティング
    • defclass+ 時に、スロット指定のところに「:lift t」みたいに指定
  • Prevalence
    • データベースサーバ
    • 「with-transaction」
    • 「deftransaction」
  • Relations
    • メソッドリフティングと同じように、スロット指定時に「:relation ...」を指定
  • 「defcrud」
  • XMLのパース、XML名前空間XMLの検索
  • PLT Web Framework似の継続
    • Websum ( display / read )
    • 「defun/cc」
  • JavaScript & HTML5
    • 「with-js」
    • 「jobject」
  • コンポーネント
  • (すいません、この辺りメモできてません)
  • ウェブサイト構築のデモ
    • wysiwygエディタでブラウザ上から直にいじれる


ここからまたLTの部です

About Clack

@nitro_idiot さんが前に Kyoto.lisp #1 でやった内容とほぼ同じ…だと思ってたら、 Kyoto.lisp #1 では、Clackの紹介はやってなかった。
自分はどこでこのプレゼン見たんだ。
見たおぼえがあるというのは自分の記憶違いじゃないと思うんだけど…。

  • Clack は、Webアプリ「環境」
    • ポータビリティ(以下のオプションから選べる)
    • 再利用性
  • ミドルウェア」である
    • 複数サーバ可、複数アプリ可、個別の設定不要
  • サンプル
  • フレームワーク
  • 将来の予定

ASDF and Beyond

ASDFの歴史とXCVB良いよ、という話。
XCVBはFrancois-Reneさんが開発してる、ASDFに代わるもののようです。
かなり省略してます、すいません

  • ASDF 1
  • ASDF 1 の問題点
    • 問題点いろいろ
  • ASDF 2 (2010)
    • ASDF 1 の問題点をいろいろ解消
    • どんな環境でもASDFが動く(ASDF 1 よりも更に多くのCL環境/OS環境で動くようになった)
  • ASDF 2 vs ASDF 1
    • 比較いろいろ
    • ASDF 2 の便利な機能の紹介
  • XCVB
    • ILC2009でデビュー
    • ASDFの制約:一つの世界でのシリアルな副作用
    • XCVB:複数の世界で、決定論的にパラレルにファイルをビルドできる
  • XCVB普及への失敗
  • XCVBのTODO
  • XCVBの副産物の成功

A Tutorial For Creating and Publishing Open Source Lisp Software

この場で素早くライブラリを作成する実演LT。
実際に作られたリポジトリはここ。
https://bitbucket.org/tarballs_are_good/cl-averages
こういう手順を他の人がどうやってるのかというのが見られてすごい面白かった。

  1. まずbitbucketのページを開き、新しいhgリポジトリを作成。名前は「cl-averages」
  2. 手元にcloneします
  3. 「(ql:quickload :quickproject)」を実行
  4. 「(quickproject:make-project ...)」を実行(これで雛形ファイルが生成されるっぽい)
  5. 「cl-averages.asd」ファイルを編集
    • この辺りのファイル編集内容については、今でも上のリンクから直にファイル見れる
  6. 「cl-averages.lisp」ファイルを開き、ライブラリのコード本体を書く
  7. 「package.lisp」ファイルを書く
    • 「(defpackage ...)」
  8. 「~/.sbclrc」を開いて何か追記した?ここはちょっと分からなかったしリポジトリにも無い…
  9. この段階で、slimeから動作確認をしてみせる
  10. hgでコミット、push
    • GTKguiのhgフロントエンドを使われてました
  11. bitbucketのページを開き、pushした内容が反映されているのを確認
    • 「バージョンコントロール使おう」的な話をちょっとされた
  12. githubのquicklispプロジェクトのissuesを開いて、登録申請をデモ

IOLib : a modern OS interface

システムやネットワークを叩くライブラリ作ったよという話。

  • 2004年にBitTorrentクライアント(未完成)のソケットライブラリ作成
  • 64bit linux上のSBCLとClozureで動作確認、一部機能のみ特定環境のFreeBSDに移植
  • syscalls, sockets対応
  • pingのサンプルコード
  • ネットワークアドレスオブジェクト
  • 名前解決、DNSゾル
  • Gray Streams
  • ZSterams (自作?)
  • I/Oイベントループ
    • epoll(), kqueue(), select()
  • OS paths
    • なんかややっこしい話が
    • なんで「paths」で「URIs」でないかというと、RFC3986とPOSIX-1003-1-2008で衝突して両方は満たせないからとの事
  • シンボリックリンク
  • その他OSまわり
  • プロセス実行
    • ifp_spawnp()

The CRM of Tomorrow with Semantic Technology An Application of Big Data and Complex Data

AIDAという製品の紹介?
なかなか興味深かった。

  • 良いカスタマサービス例#1
    • 動画が流される。郵便でなんか困ってる人が出てきて「エージェントはこれをどうやって知るのか」
      • どうやら、過去の請求と支払いが分かれば困ってる人の問題は解決するらしい
  • 良いカスタマサービス例#2
    • また動画が流される。ハイカーが携帯を使っていて、ローミング状態になってるのに気付かずに高額料金請求になるかも、という問題をシステムはどうすべきか、という話っぽい
  • CRM (Customer Relation Management、顧客関係管理。この名前のは日本でもよくあるが… http://ja.wikipedia.org/wiki/%E9%A1%A7%E5%AE%A2%E9%96%A2%E4%BF%82%E7%AE%A1%E7%90%86 )
  • CRMは受動的ではなく、先行的であるべき」
    • 先行的CRMの為に、ユーザモデルを分析する
  • AIDA - Amdocs Intelligent Decision Automation
    • Amdocsというのは社名らしい http://ja.amdocs.com/Pages/HomePage.aspx
    • 無理に訳すと「アムドックスの知的自動決断システム」?
    • 「AIDA」の発音は「エンダー」と聞こえる(「エイダー」と言ってるんだとは思うけど)
  • 「同じ語だけど、違う意味を持つ事がある」←→「同じ物を指す、違う語」
    • 指紋システムと名寄せシステムでも出てきたけど、またこの問題が。
    • そこで、URIを情報表現に利用
      • 例えば、二つの違う物を指す「tank」(戦車と燃料入れ)という言葉は、「http://aaa...#tank」「http://bbb...#tank」という風に区別する、らしい
  • RDF
    • RDF Triple Database
    • グラフ構造
    • RDF Semantics Databases
  • 内部DBとして、AllegroGraphのようなものが必要で、それが「Triple Database」との事
    • Triple Database各種の比較表
  • 「イベント駆動型CRMプラットフォーム」
  • 質問:「No schema」との事だけど、どうやってるの?システムが勝手にschemaを学習して構築するの?
  • 質問:ハードウェアは?
    • 「I dont know」との事。Allegro CLが動けばどのシステムでも大丈夫という事だろうか

おわり

簡単な閉会の挨拶があって、解散と片付け。
すごい面白かった!
最後に記念にHHKの裏にみんなでサイン。和田先生のサインの隣にサインした。うわああああああああ
残った人で飲みに行くようなので途中までついていったけど、風邪か何かをひいたようで熱っぽさとフラフラしてやばそうなので自分は諦めて帰る事に。まさにfever。

自分的には色々な面でボロボロだったけど、すごい勉強になったし面白くてやる気が出た。

おまけ:海外の人の各単語の読み方観察

「--help」は「マイナスマイナスヘルプ」もしくは「ダッシュダッシュヘルプ」
「cdr」は大体の人が「シーディーアール」、たまに「クダール」
「cddr」は「シーディーディーアール」
「MOP」は「モップ」
「CLOS」は大体「クロス」、たまに「シーロス」