並列計算の実行

提供:biaswiki
2012年6月21日 (木) 08:01時点におけるCproom (トーク | 投稿記録)による版 (新しいページ: '== 並列計算について == 並列計算は「マルチプロセス」および「マルチスレッド」と呼ばれるものに分けられます。 *マルチプロセ...')
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

並列計算について

並列計算は「マルチプロセス」および「マルチスレッド」と呼ばれるものに分けられます。

  • マルチプロセス: 複数の子プロセスを生成して並列処理するプログラム、メモリは共有しない
  • マルチスレッド: プロセスが複数スレッドを持ち、並列処理するプログラム、メモリを共有する

Multi.jpg
当システムにおいては、

  • 分散処理計算機クラスタ:「マルチプロセス」用(small, medium, large キュー)
  • 共有メモリ型計算サーバ:「マルチスレッド」用(bias, cat キュー)

マルチプロセス並列計算においては、それぞれのプロセス同士で独立した計算が可能でないと並列化できません。 互いの結果が影響し合うような並列計算には向いていません
マルチスレッド並列計算は主にソフトウェアの仕様により、オプションを付けることで並列化される場合が多いです。(例: BLASTの -a オプション, tophatの -p オプションなど)
並列計算には、並列実行環境:Parallel Environment(PE)と並列度を指定します。

マルチプロセス

大きく分けて2つの方法があります、

  • 大きなジョブを小さく分割する(例: BLAST検索でクエリーを細かく分けてそれぞれをジョブスクリプトにする)
  • MPI対応のソフトウェアを利用する

MPI

環境はOpenMPIです。
MPI対応のソフトウェアのコンパイラに「mpicc」が用意されています。
MPIを使った並列プログラムを実行する場合、並列実行環境:Parallel Environment(PE)と並列度を指定します。
利用可能なPE:

  • mpi128(最大128並列)
  • mpi64(最大64並列)

PEは、qsubのオプションか、ジョブスクリプト内で指定します。(PEにmpi64を指定、8並列で実行)

#!/bin/sh
#$ -pe mpi64 8

必要に応じて、mpirun にオプションをつけてください。

mpirun -np 8

ジョブが投入されると、その時点で指定した並列数のコアを掴むので、あまりに長時間・多並列なジョブの実行はお控えください。

マルチスレッド

メモリを共有できないため、複数ホストにわたる並列化を行うことができません。

  • 推奨利用キュー:bias(最大16並列)
  • PE:smp (ホストをまたがずにコアを確保します)

他のキューでも smp は利用できますが、最大8並列になります。
必要に応じて、コマンドにsmpに指定したのと同じ並列数を指定してください。
4並列の例:

#!/bin/sh
#$ -q bias
#$ -pe smp 4