加速しなイカ?

Chapter 1. Motivations

あれは、今から86万4000秒前の出来事だったか・・・

xxxx様
新規利用申請を承認しました。
アカウント名は 10IKA101 です。

(つд⊂)ゴシゴシ→(;゚ Д゚) …!?
10IKA101

神は言っている・・・
Functional Ikamusume Advent Calendarに参加するのです、と・・・

Chapter 2. Introduction of Haskell to TSUBAME 2.0

というわけで今日はLINPACK日本最速のスパコン(c.f. http://www.top500.org/list/2010/11/100)を侵略するでゲソ!
まずは橋頭堡を築くでゲソ。さしもの関数型イカ娘もGHCが入らなければ何も出来ないでゲソ。

10IKA101@t2a006172:~> cat /etc/issue
Welcome to SUSE Linux Enterprise Server 11 SP1  (x86_64) - Kernel \r (\l).

SUSEとは渋いじゃなイカ!筆者はOpenSUSEを愛用しているでゲソ。定番Linuxディストロが自作マシンでは全部動かなかった時もOpenSUSEは動いてくれたでゲソ。ただしHaskellのサポートは比較的弱いでゲソ・・・

Haskell Platformが直接インストールできなイカらまずはGHC6.12.3をインナントカスルでゲソ。"Generic amd64 Linux." と書いてあるうちの上のを入れるでゲソ。下のは罠でゲソ。root権限が無いので海の家れもんの下にghcディレクトリを作って侵略の拠点とするでゲソ。

10IKA101@t2a006172:~> mkdir ghc
10IKA101@t2a006172:~> tar jxfv ghc-6.12.3-x86_64-unknown-linux-n.tar.bz2
・・・イカ略・・・
10IKA101@t2a006172:~> cd ghc-6.12.3/
10IKA101@t2a006172:~/ghc-6.12.3> ./configure --prefix=$HOME/ghc
・・・イカ略・・・
****************************************************
Configuration done, ready to 'make install'
(see README and INSTALL files for more info.)
****************************************************
10IKA101@t2a006172:~/ghc-6.12.3> make install
・・・イカ略・・・

続いてHaskell Platformをインストールするでゲソ。

10IKA101@t2a006172:~> cd haskell-platform-2010.2.0.0/
10IKA101@t2a006172:~/haskell-platform-2010.2.0.0> ./configure --prefix=$HOME/ghc
10IKA101@t2a006172:~/haskell-platform-2010.2.0.0> make
10IKA101@t2a006172:~/haskell-platform-2010.2.0.0> make install

これも三行でインストールできたでゲソ。良い時代になったじゃなイカ!あとはPATHを通せば出来上がりでゲソ。

export PATH=$HOME/ghc/bin:$PATH

cprbもParaisoもちゃんと動いたでゲソ。しかしこれではただのインストール日記でゲソね。もっと能あるイカらしい所をみせようじゃなイカ!

Chapter 3. Accelerating Haskell Array Codes on TSUBAME

わが眷属はすでにHPCの侵略を開始しているでゲソ。HaskellGPGPUを操ろうというプロジェクトは、Accelerate, Nikola, Obsidian, Paraisoなどいっぱいあるじゃなイカ!

Nikolaは有望なのでゲソが、公式サイトにThis code needs a lot of clean-up, ... Due to package dependencies, this release is compatible with GHC 6.10.4 but not GHC 6.12. と書いてあるでゲソ。これは明確な死亡フラグじゃなイカ?Obsidianは公開されているページを見付けられなかったでゲソ。Paraisoはプロトタイプが普通に動いたでゲソ!でもParaiso本体はまだ影も形も無いでゲソ・・・

というわけでaccelerateの方を試すでゲソ。実はTSUBAME内部からはインターネットへのアクセスが遮断されているのでcabalが動かないでゲソ。筆者は徹夜で(無駄な)苦労していたのでゲソが、読者は多分興味がなイカら省略させていただくでゲソ


・・・中略☆中略☆中略☆中略☆中略☆中略・・・

結局イカの点が有用だったでゲソ。

  • sshはできるがインターネットへのアクセスが制限されているマシンからインターネットにつなぐには、ローカルマシンからつなげるプロキシを、ssh -Rでフォワードしてやる
h102:~> ssh -R 8180:proxy.kuins.net:8080  -Y 10IKA101@login-t2gpu.g.gsic.titech.ac.jp
10IKA101@t2a006171:~> http_proxy='localhost:8180' wget www.google.com
10IKA101@t2a006171:~> http_proxy='localhost:8180' cabal update
  • cabalがdependencies conflictで失敗したり、cannot satisfy -packageになった時は、ghc-pkg unregister --user で怪しいパッケージを取り除いてやる。しかるのちcabal installし直せばまた入るから大丈夫。
  • accelerateはHackageの0.8.1.0よりdarcsレポジトリの0.8.2.0のほうが新しい http://code.haskell.org/accelerate/ 。サンプルが増えてたりするよ。
  • accelerateは --flags='cuda'を指定しないとCUDA対応版がインストールされない。accelerate.cabalがあるフォルダでイカの呪文をとなえるでゲソ。
10IKA101@t2a006175:~/accelerate-0.8.2.0> cabal install --flags='cuda'

普段バッドノウハウ駆動のおいらにはいい薬になったでゲソ・・・。


ともかく0.8.2.0を入れて、Accelerateの論文にもNikolaの論文にも載ってるblack-scholesサンプルをベンチマークしてるとこでゲソ。機会があればまた結果を報告させていただくでゲソ。これでTSUBAME 2.0も関数型イカ娘のお友達でゲソ!


                     ヘ(^o^)ヘ いいぜ
                      |∧  
                  /  /
               (^o^)/ 関数型言語じゃ
               /(  )   HPCは出来ねえってなら
      (^o^) 三   / / >
 \     (\\ 三
 (/o^)  < \ 三 
 ( /
 / く  まずはそのふざけた
       ゲソをぶち殺す
大☆勝☆利!