Windows版開発 その3

だいぶできたような気がする。
pards_finalize()で子プロセスが終了するのを待たない問題は、セマフォを使って解決。
SPMD終了時に子プロセスの終了を待つのも、バリアをかけてからexitすることで解決。UNIX版でもこの実装でよかったような気もするが。

bzip2のmakeは、最初namkeとかclのパスをどう通すんだろうとか悩んだんだけど、(VISTAの場合)「すべてのプログラム」からVisual Studio 2005 → Visual Studio Tools → Visual Studio 2005コマンドプロンプトを起動すればパスが通ったコマンドプロンプトが起動するので解決。

素のbzip2はnmake -f makefile.mscで一発でmake成功。
並列版も必要なファイルをディレクトリにコピーしてmakefileを少し修正するだけで、ほぼ一発でmake成功。一応、並列に動いている様子。ただ、本当は圧縮前のファイルを圧縮後に削除するんだけど、それがPermission deniedで失敗する。なぜだ? この部分は逐次版と同じはずなんだが…

速度の方は、9MBファイルほどのファイルをMacBookで圧縮した場合で、逐次版は4.3秒ほど、並列版は2.7秒ほど。圧縮したファイルを元に戻して一致しているようだから、ファイル削除に失敗する以外は正しく動いているんだろう、きっと。

あとはファイルを整理して公開できる状態にすることかなぁ。