圧縮を並列化

データ量は大きくなるばかりで、それをファイル圧縮して保存しておくなり、転送するなりが当たり前になっている。かつてはCPUのクロック数が上がることでこの圧縮が早くなることが望めたが、最近はクロック数はそれほど伸びなくなってきた。その代わりに1つのコンピュータが持つコア数が増え、並列計算でそれを実現することが良い解法となってきている。ファイル圧縮のプログラムとして長らくgzipやbzip2を使ってきたが、これらは並列化されておらず、1つのファイルあたり数Gから数十GbyteあるFASTQファイルの圧縮/解凍に長い時間待たされることが多くなってきていたが、そんな我々に朗報。

pigzがgzipの、pbzip2がbzip2のthread版として利用可能。Macならhomebrewで一発で入ります。

[shell] brew install -v pigz brew install -v pbzip2 [/shell]

使い方はこんな感じで、使うthread数を指定する必要は特にないようだ。

[shell] pigz large.fastq pigz -d large.fastq.gz [/shell]

デフォルトでCPUを使えるだけ使うようなので、&つけてバックグラウンドで走らせないほうがいいかと。


Written by bonohu in misc on 土 22 8月 2015.