XSPECのフィットやエラー計算を並列で実行する (parallelコマンド)

最近のMac/PCでは複数コアが利用可能なので、計算を並列化することによって実効的な計算速度を向上させることができます。XSPECでも、HEASOFT 6.13に入っているversion 12.8.0以降で、parallelコマンドが利用可能になっています。複数のフリーパラメタについての誤差計算を並列化して行なう事ができます(1個のエラー計算を内部的に並列化するわけではありません)。

詳細は、http://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XSparallel.html に記載されていますが、現状ではerrorコマンドとleven(fitコマンド内のLevenberg-Marquardt algorithm)の並列化が出来るようになっています。

例えばerrorコマンドによる誤差計算を8並列(8個のCPUコアを利用)して実行する場合は、

XSPEC12> parallel error 8

としてから、errorコマンドを実行します。パラメタ3、6、10、15の誤差計算を実行する場合は

XSPEC12> error 3 6 10 15

とします(この場合4並列で計算が実行されます)。

フィットの際のLevenberg-Marquardt algorithmの並列数は、以下のように設定します。どれくらいfitコマンドの実行時間が短縮されるかは、モデルの複雑さに依存しており、単純なpowerlawやapec等ではあまり高速化は望めません。もともと計算に時間のかかるモデルだと高速化の恩恵が受けられるようです。

XSPEC12> parallel leven 8

parallelコマンドフォーマットは、以下のようになっています。

XSPEC12> parallel COMMAND <# of parallelization>

同じ内容の記事をHongoWikiにもアップロードしてあります。 Xspecのエラー計算を並列化する HongoWiki