コンパイルします。
$ ghc -O2 -threaded -rtsopts --make -XFlexibleContexts -eventlog mandel.hs
$ ./mande -2 2 2 3000 +RTS -N2 -l | display
displayコマンドにパイプします。
動作を確認。
$ threadscope mamdel.eventlog
殆どの時間2Coreで動いています。
Data.Array.Repa.IO.BMP
モジュールには
readImageFromBMP :: FilePath -> IO (Either Error (Array U DIM2 (Word8, Word8, Word8)))
writeImageToBMP :: FilePath -> Array U DIM2 (Word8, Word8, Word8) -> IO ()
という関数がありBMPファイルの読み書きができる。
画像サイズもコマンドラインから与えます。
$ ./mandel2 -2 2 2 1000 3000 +RTS -N2 -l
index のTable (Int のタプルの配列)を作るのに時間がかかっているようなので、
配列を連結するやり方も試みた。
また mandel2.hsにおいてIndexをIntではなくWord16に置き換えてみたが効果は微妙だった。
世の中にはGPUを使ってマンデルブロー集合を極めて高速に描画するプログラムもあるらしい。
0 件のコメント:
コメントを投稿