【发布时间】:2014-01-25 18:57:04
【问题描述】:
我正在开发由 464 个 HP 刀片系统、两个头节点和一个虚拟化的登录(提交)节点池组成的 Titan 集群。每个节点有八个内核(两个四核处理器)和 16GB(430个节点)或 32GB(34 个节点)内存。这提供了 3712 个计算核心和 8 TB 的总 RAM(内存)
任务是为每个示例文件使用 2 个部分,即 R1,R2。因此每个示例文件都有成对存在的 R1,R2 类型,它们将一起用于创建一个 .sam 文件,参考是 human_g1k_v37.fasta ,并且软件是 BWA。我正在为此使用 for 循环,但是我无法在集群上并行化它,因为每次运行一个样本需要很长时间。下面的脚本用于迭代运行每次一对(有效)
sourcedir=/sourcepath/
destdir=/destinationpath/
for fname in *_R1.fastq.gz
do
base=${fname%_R1*}
bwa-0.7.5a/bwa mem -t 8 human_g1k_v37.fasta "${base}_R1.fastq.gz" "${base}_R2.fastq.gz" > "$destdir/${base}_R1_R2.sam"
done
因为使用 for 循环会将每个作业放在同一个处理器上。我尝试使用“&”,但我相信它是一样的,在这种情况下它似乎不起作用。我需要所有这些进程在不同的处理器上运行并行(可能是数组作业??) 下面的脚本不起作用(用于并行处理)
sourcedir=/sourcepath/
destdir=/destinationpath/
for fname in *_R1.fastq.gz
do
base=${fname%_R1*}
bwa-0.7.5a/bwa mem -t 8 human_g1k_v37.fasta "${base}_R1.fastq.gz" "${base}_R2.fastq.gz" > "$destdir/${base}_R1_R2.sam" &
done
wait
更多详情,请看我之前的这个帖子。Looping files in bash
谢谢
【问题讨论】:
-
查看您的
man xargs文档是否表明它可以支持-n选项(我认为。n=进程数)。并在此处搜索[bash] xargs以了解如何使用它。祝你好运。 -
是的,我看过了。我的文件是 51772BL1_R1.fastq.gz,51772BL1_R2.fastq.gz 用于生成一个样本。另一对是 51805BL1_R1.fastq.gz,51805BL1_R2.fastq。 gz 来生成其他。同样,要创建 50 个样本。由于数组作业需要一个 SGE_TASK_ID,我在这些文件中找不到任何可以使用的模式。我必须分配某种独特的模式到他们?
标签: bash parallel-processing cluster-computing sungridengine qsub