お勧めの本

ときどきの雑記帳(http://www.kt.rim.or.jp/~kbk/zakkicho/)で、 あなたの好きなその本を紹介してください。 できればなぜ、どの辺が好きなのか書いてくださるとうれしいです。 とあって、ちょうどいい本があったので紹介します。 π―魅惑の数 http://www.ama…

yarv2llvm近況

結局、スレッドからジャイアントロックを無くすたくらみは中断して、地道に行くことにしました。とりあえず、Ruby1.9.2に添付されているサンプルプログラムやベンチマークを*そのまま*動かせるように(今はいろいろ変更しないと動かない)いろいろやってみます…

@itに取り上げられてる!!

今日は一級管工事施工管理の講習で名古屋に行っていました。携帯で何気なく@itを読んでいたら私の名前が!!コーヒー飲んで無くてよかった。(http://www.atmarkit.co.jp/news/200907/24/ruby2.html) 取り上げてくださって本当にありがとうございます。これで…

LLVMが過激に変わっている!

昨日のGlobalAliasがセグフォしてしまう話はひょっとしてLLVMのバグでは?と思い初め(自分のことは棚に上げる)、LLVMを最新(s vn updateで)にしてみました。すると、llvmrubyをコンパイルするとエラーがいっぱい出ます. 調べてみるとLLVMContextというオブジ…

LLVMの弱点?

yarv2llvmのスレッドランタイム、まだ苦戦しています。色々追ってみて、Cで定義されたグローバル変数がうまく扱えていないことが分かりました.具体的には、ruby_current_threadという変数に現在Activeになっているスレッド構造体を入れておく必要があるので…

近況

土日は地元のお祭の運行警備をしていました。山車の運行コースに自動車が入ってこないように警備する役です。RubyKaigi行きたかったですが、これはこれで疲れましたが楽しかったです。日曜の夜に同年(みんなで警備をやった)で飲んだのですが、ちょっと濃いコ…

yarv2llvmの拡張のドキュメントをここに書く

AOベンチの高速化は結局手詰まりになってしまいました。今は、数ヶ月ほったらかしにしていたThreadのランタイムを再開しています。ジャイアントロックの無いThreadのランタイムと排他制御処理の自動挿入を実現してCPUをこき使えるといいなと思っています。 T…

1+2+3+4+・・・ は

みなさん! 1+2+3+4+・・・はいくつになると思いますか?!(主張発表会を見てきたのでちょっと影響されている) ゼータ関数理論とか(私はよくわからない)難しい話を駆使すると-1/12になるんだそうです。(http://ja.wikipedia.org/wiki/1%2B2%2B3%2B4%2B%E2%80…

yarv2llvmの近況(自分用のメモ)

インライン展開処理にバグがあって--inline-blockが実は動いていなかったのですが、動くようにしました。でもまだ、バグがあるようです。bm_so_mandelbrotの実行結果がおかしくなります。--inline-blockをつけると、Fixnum#times, Array#each, Range#eachな…

ao benchを高速化しているのですが、うまく行かない

今は、なんだかんだ忙しいのであまりプログラムをいじっていないのですが、時間があるとao benchを高速化することに凝っています。いろいろ試しているのですが、いまいち効果がでません。例えばこんなことを試してみました。 インスタンス変数はGCの関係上BO…

setn命令をサポートしたら速度が落ちた

YARVにはsetnという命令があります。これをずっとサポートしていなかったのですが、なぜかAOベンチはこの命令を使っているのに動いていました。それはこういう状況で使っているからです。 if isect.hit then col = ambient_occlusion(isect) rad.x = rad.x +…

SDLが使えるようになりました.

不完全ですが、yarv2llvmからRuby/SDLを介してSDLが使えるようになりました。こんな手順で使えます。 Ruby/SDLをインストールしてください(http://www.kmc.gr.jp/~ohai/rubysdl.html) yarv2llvmについては、ここのもの(SDLブランチ)を使ってください(http://…

でもって今は

今は、yarv2llvmでRuby/SDLを動かそうとしています。今は、ウインドウが一瞬でてすぐ終わるというところまでできました。Ruby/SDLで定義されているメソッドやクラスの型情報を付加すると動きそうです。 本当はdxRubyが速そうで動かしてみたいのだけど、Cygwi…

エスケープ解析中断しています

エスケープ解析ですが、aoベンチに適用してみると、効果がなさそうなので中断しています。適用できる場所そのものは結構あるのですが、適用できるのがトップレベルに近い寿命の長いあまりアロケーションしないオブジェクトで、本当に適用して欲しいループの…

エスケープ解析うまく行きそうです

ちょっと試してみたら、結構うまく行きそうです。でも、ちゃんとチェックしないと訳の分からないGCのエラーでひどい目にあいそうなので、しっかりチェックします。 変更点がここにあります。 http://github.com/miura1729/yarv2llvm/commit/83758bd5c935227b…

Linuxはじめました & エスケープ解析の検討

この間思い立ってLinux(Debian)をインストールしました。yarv2llvmを動かしてみたら動きませんでした。ごちゃごちゃ調べてみたら、次のようにするととりあえず動きます。わざわざ付いているのを削るので多分問題があるんでしょうが。llvm/lib/Target/X86/X86…

リフレクティブなマクロの実験

yarv2llvmのマクロは、定義の中でyarv2llvmのメソッドが呼べます。これを利用するとオブジェクトの型や、スタックフレームなどメタなものに対して色々な操作ができます。まだ、APIを整備していないのでyarv2llvmの処理系の一部みたいなコードを書かないとい…

メモ

http://freespace.virgin.net/hugo.elias/models/m_perlin.htm

longlife gcパッチ(手抜き)レポート

authorNariさんが、GCの面白いハックを行ったのでちょっと試してみました。 http://d.hatena.ne.jp/authorNari/20090511/1242054805yarv2llvmでao-benchをコンパイルする時間が速くなったか調べてみました。時間が掛かるのでao-benchの実行速度そのものは調…

yarv2llvmの近況

yarv2llvmを細々と作っております。いまやっているのは、大きく二つです。Threadのランタイムを作るのは止まっています。いろいろ、手を広げてみんな中途半端なのは良くない傾向ですが、まあそのうち何とかなるでしょう。カオスになって収集つかなくなるかも…

水道屋がRubyを活用する(その3)

うちでは仕事で使う書類は図面を除いてMS Officeを使って作っています。TeXを使うとかFOPを使うとか色々考えたのですが、他の会社などとのやり取りを考えると、MS Officeを使うのが一番かなと思います。さらに、MS OfficeではOLEを使ってアプリケーションを…

水道屋がRubyを活用する(その2)

その1での手順で求めた固有ベクトルは、対応する部品と共に値が大きい順に並べると、関連のある(同じ見積書の中に出てくる可能性の高い)部品が集まります。うちのデータで行ったものはこんな感じになりました。固有ベクトルは行列の次元数だけありますが、…

水道屋がRubyを活用する(その1)

私の本職は水道屋で穴を掘ったり墓穴を掘ったりして生活しています。水道屋といっても当然書類仕事もあるので、PCを活用しています。多くの場合はWordとかExcelやCADなどのアプリケーションを使って書類を作っています。こういったアプリケーションは使うこ…

yarv2llvmにはマクロがあります

追記 具体例を追加しました テストが通るようになりました。マクロではなく従来の処理部分のバグがテストに漏れて残っていました。 yarv2llvmにとても不完全ですがマクロが入りました。でも、エンバグして他のテストが通らなくなりました(最近こんなのばっか…

面白そうなソフトウエアのメモ

deliciousに面白そうなソフトウエアがブックマークされていたのでメモ Cをllvmのbitcodeに落として、それをアプリケーションに特化したプロセッサのVHDLに落とすそうです! とりあえず究極と思っていたコンパイラの形態が既にあるとは驚きです。http://tce.c…

yarv2llvm近況

先週のyarv2llvmの開発はそんなに時間は取っていないのですが、ずっとデバッグでした。Unsafeのサポートの為シビアに定数の畳み込みを行う必要があり、畳み込みが甘いところを直すと、既存のプログラムの型推論が失敗するということの繰り返しでした。何とか…

Cの関数を呼べるようにしました

ランタイムをRubyで書くための準備で、Cの関数を呼べるようにしました。これで後は、動的ロードと外部変数をアクセスできるようにしたらランタイムが書けるんじゃないかなと思います。実装がバグバグなんでバグ取りが山のように残っていますが。サンプルプロ…

Unsafeの続き

Unsafeの開発は結構順調です。定数伝播処理が上手に効いて、一見配列やオブジェクトを作るような効率の悪そうなコードが、構造体へのアクセス命令だけで済んでいます。 def unsafe type = LLVM::struct([RubyHelpers::VALUE, RubyHelpers::VALUE]) a = [:a] …

yarv2llvm開発を再開しました

LLVM勉強会でスレッドが並列に動いてないと指摘を受けて、ジャイアントロックをはずした独自ランタイムを作ろうとしています。 http://d.hatena.ne.jp/miura1729/20090323/1237799188 ところが、スレッドを実現するランタイムはかなり大きく、これをLLVMで手…

「天才になれる秘密」について

http://d.hatena.ne.jp/teruyastar/20090406/1238950447 考えさせられる記事ですね。個人的には、この記事中の「要領の悪い人」に分類される天才の方が多いような気がする。本当の天才だと相当運が良くないと認められないですよね。他にそんなこと考えている…