2012年9月30日

#readghc 第一回

GHCのRTS読んだり、GC読んだり、LLVMの解説を聞いたり、Coreの最適化の話を聞いたりしました。
3
Seizan Shimazaki @seizans

参加の前提条件を満たさないと・・・ | GHCソースコードリーディング勉強会 第1回 #readghc - [PARTAKE] http://t.co/mBD13yV2 @partakeinさんから

2012-09-27 09:25:05
めるぽん.dylib @melponn

こんなのあったのか…もう満員や…。 / (発表者募集中) GHCソースコードリーディング勉強会 第1回 #readghc - [PARTAKE] http://t.co/pB4ivGWA @partakeinさんから

2012-09-27 09:28:17
日比野 啓 (Kei Hibino) @khibino

ghc-7.4.1 で CSE (Common Sub-expression elimination) が適用される例が作れない #Haskell

2012-09-27 12:36:50
shelarcy(しぇらーしぃ) @shelarcy

@khibino cse-ghc-plugin のテストに使われているコードはどうでしょうか? https://t.co/cJ2Z6gCv #Haskell

2012-09-27 12:50:42
日比野 啓 (Kei Hibino) @khibino

@shelarcy ありがとうございます。見てみます

2012-09-27 14:02:58
日比野 啓 (Kei Hibino) @khibino

@shelarcy ありがとうございます。このサンプルでうまくいきました。

2012-09-27 14:09:56
日比野 啓 (Kei Hibino) @khibino

@shelarcy このサンプルは定数式のようですが、定数式ではなく変数を含んだ式の例はどこかに無いですかね

2012-09-27 14:10:40
もっちぃ @tanimocchi

@khibino 計算式を二項演算に分けて、明らかに(どのプログラムパスを辿っても)冗長になるように書いてもダメなんですか? 因みにCSEは非力なので、GVNやPREの例だと上手くいかないかもです。

2012-09-27 15:33:57
日比野 啓 (Kei Hibino) @khibino

@tanimocchi ダメなように見えるんですよねー let { x = p + q; y = p + q} in (x, y) みたいなのを試したんですが削除されない

2012-09-27 15:38:20
もっちぃ @tanimocchi

@khibino それより簡単な例は作れないですね。冗長削除は、割と効果があって、例えばこんな記事があったりします → LabVIEW 2010をNational Instrumentsが発表,コンパイラの改良で実行速度を20%向上 http://t.co/z5R7qgO6

2012-09-27 15:54:17
もっちぃ @tanimocchi

@khibino λ項にすると、α変換との関係で、式の字面での置換えが困難になるんですかね? だとするとGVN位しか実装できなくなってしまうので、非力な最適化になりますね。どのフェーズで最適化するかで、問題の見え方が異なるのだとは思いますが、演算精度保証を考えると、うーん。。。

2012-09-27 15:59:29
もっちぃ @tanimocchi

@khibino (続き)α変換起因で、式の字面での等価性を用いた冗長削除が困難なのであれば、それは案外良い発案・論文ネタになるかも知れません。演算精度のための型情報と冗長削除の実装のし易さとを考慮した解決が必要になると予想されますので。あー、9/29に参加したかったorz

2012-09-27 16:02:34
日比野 啓 (Kei Hibino) @khibino

@tanimocchi いま手元でいろいろ試しているものがうまくいけば、今度お会いしたときにちょっとだけ面白いものをお見せできるかもしれません。

2012-09-27 16:12:03
mkotha @mkotha

@khibino @shelarcy こんな例を見つけました module Foo where f :: (Int->Int)->Int->Int; f g x = y * z where y = g (x + 1); z = g (x + 1)

2012-09-27 16:48:17
日比野 啓 (Kei Hibino) @khibino

うまくいったように見えます。ありがとうございます。@mkotha こんな例を見つけました module Foo where f ::(Int->Int)->Int->Int; f g x = y * z where y = g (x + 1); z = g (x + 1)

2012-09-27 17:28:41
日比野 啓 (Kei Hibino) @khibino

(*) の引数がちゃんと同じ変数になって展開されている #GHC.Prim.*# x_aaS x_aaS @mkotha @tanimocchi @shelarcy @khibino

2012-09-27 17:33:56
Mitsutoshi Aoe/maoe @ma0e

@khibino CmdArgsは内部でunsafePerformIOを乱用していて、同じ属性をもつオプションを複数作るとcseによって壊れます。

2012-09-27 17:49:12
日比野 啓 (Kei Hibino) @khibino

.@ma0e おもしろい情報提供ありがとうございます。安全な CmdArgs を作り直した方がいいんじゃないだろうかw

2012-09-27 17:55:45
日比野 啓 (Kei Hibino) @khibino

.@ma0e _ アンダースコア付きだと、pure 版ということなのかな cmdArgs_

2012-09-27 17:57:24
Mitsutoshi Aoe/maoe @ma0e

@khibino そちらは使ったことないですがそういうことだと思います。

2012-09-27 17:59:16
DMスパマーに乗っ取られました @master_q

@xuwei_k @hirabushi #readghc 主催者の岡部と申します。会場が狭いため机のある席が御用意できないのですが、イスのみの席でよろしければ、是非ご参加ください。 http://t.co/bxFSq5AX

2012-09-27 20:59:06
t_uchida @t_uchida

面白そうだったので参加。 / (発表者募集中) GHCソースコードリーディング勉強会 第1回 #readghc - [PARTAKE] http://t.co/WiPtBAlL @partakeinさんから

2012-09-27 23:17:03
mukaken @mukaken

ついに第1回が開催されるみたいです。もう満席ですが。 (発表者募集中) GHCソースコードリーディング勉強会 第1回 #readghc - [PARTAKE] http://t.co/REcWOMSN

2012-09-27 23:31:56
残りを読む(64)

コメント