GPGPUをもふもふする会に行ってきました。

講師が発表や説明するのではなく、サンプルがあって、それを動かしながら各自自習をするという形だった。
GPGPU初心者には少し敷居が高かったなぁと。
周りが超できる人たちだらけだったので、大変だった。
次回はちゃんと事前知識を入れてから行かないと駄目だぜ。

京大のGPUクラスタにログインして各自サンプルをコンパイルして動かすという形でしたが、ログインするのに、3重にsshログインをしなくてはダメではまった。
そんで、サンプルプログラムのzipを転送して、少し設定してからコンパイルって感じ。

いろいろ気になったことを聞いてみた。


Q GPGPUってMMXみたいな切り替えとかあるの?

全体で最初の一回だけある。
それをするには root 権限が必要になる。
一度、root が GPGPUのプログラムを実行さえすれば、 それ以降、一般ユーザもGPGPUを使えるようになる。
⇒全体で一回だけなんでほぼ問題ない。


Q OSのネイティヴスレッド(__beginthreadexとか)からGPGPU命令を呼ぶことは可能?
分ける必要がある。GPGPUはスレッドセーフではない(?)
どのネイティヴスレッドがどのGPUのコアを利用するかを設定することは可能。


Q md5計算サーバを早くできる?
サーバみたいなものがあってacceptしたスレッドが100本ぐらいある。その上でMD5計算をGPGPUを使って超高速に計算したい。
この場合どういうモデルがあるか?
(守秘義務?とかあってうまく説明できなかったのですが、、、情報をmd5にしたキーで独自データベースでもっている。そこにアクセスが有ると URLのmd5を計算し、データベースから対応する情報を付加して返すみたいな感じ。すべてC++で記述。もちSQLとかは一切なし)

通信スレッドとは別にGPGPU計算専用のスレッドをコア数作る。現在だと8コアぐらいだから、GPGPU計算スレッドは8本ぐらい。

多分こんな感じ?

通信スレッド100本
↓
GPGPUスレッド8本
↓
GPU

これだったら、SSEでmd5ロジック作った方がいいのかも。
それか、md5なんてやめて別のGPGPUで計算しやすいモデルにした方がいいのかもと思った。