2014/08/23
Gaucheでaobench再び
ShoyoさんのAmbient Occlusionベンチマーク、 以前 (5年以上前か!) に.mjtさんのR6RS Scheme移植を元にしてGaucheで走らせてみた ことがあったけど、改めて本家のcコードからGauche向けに移植してみた。git master をチェックアウトすればexamplesの下に入ってる。
https://github.com/shirok/Gauche/blob/master/examples/aobench.scm
手元のマシン (Core i7-3770 3.40GHz) でCバージョンと比較。
ao.c | 0.74s | (gcc -O2) |
aobench.scm | 8.57s |
ふむ。約12倍か。悪くない…
というのは、嘘。実はaobench.scmはCPUコアをあるだけ勝手に並列に使うように 書いてあるので、Cはシングルスレッドだがaobench.scmは8スレッド並列だ。
チートなしで勝負すると:
aobench.scm (シングルスレッド) | 33.2s |
Cの45倍。まあこんなもんか。数値計算中心のコードはやっぱりJITじゃないと難しいかなあ。
(なお、シングルスレッドで走らせるには
環境変数GAUCHE_AVAILABLE_PROCESSORS
を1にセットする)
それより8スレッドで4倍弱しか速くなってないのが気になる。 CPU使用率はほぼいっぱいいっぱいなのでmutexで待っているわけでもないとは 思うんだが…
あ、でも8コアってのは物理4コア * Hyperthreadingだったっけ。 FPUは4つしか無いんだから仕方ないかな。 なお4スレッド並列だとこのくらい。
aobench.scm (4スレッド並列) | 10.1s |
Tags: Programming, Gauche
Post a comment