比对并行计算

FASTQ 比对并行计算

在整个分析流程中,read 比对(Read alignment)与基因注释(Annotation)通常是资源消耗最大、最耗时的步骤。因此,实现转录组比对的并行处理显得尤为关键。无论是在本地模式(local mode)还是集群模式(cluster mode)下,系统是否能够启用并行计算,完全取决于当前可用的内存总量以及为该分析任务分配的线程总数。

并行任务(同时运行的子任务)的数量由以下两者的较小值决定:

  • [最大空闲内存 / 单个比对子任务所需的内存]
  • [总分配线程数 / 单个比对子任务所需的线程数]

资源配置

例如:配置 150 GB 内存和 24 个线程来启动 saw count 分析任务,运行命令如下:

#analysis script
saw count \
...
--id=FASTQ_parallel_alignment \
--memory=150 \
--threads-num=24 \
...

查看资源配置YAML文件,通常在 /saw-8.X.X/config/resources.yaml ,内容如下:

#resource configuration yaml
version: "1.0"

global:
  scheduler: "sge"
  default_setting:
    max_retries: 0

schedulers: 
  sge:
    queue: " "

rules:
...
  alignment:  # Read 比对
    threads: 16
    mem_gb: null  ## 假设该子任务实际消耗的内存为 60 GB
    retry_factor: 1.5
...

无需在配置文件中设置处理一对 FASTQ 文件所需的内存,程序运行时会自动根据 Stereo-seq 芯片 Mask 文件(chip-mask)中的 CID 位点数量,动态、智能地计算出实际所需的内存。

并行情况分析

假设比对一对 FASTQ 文件(即一个 Read 比对子任务)实际需要 60 GB 内存。根据前文的计算公式:

  • 内存维度可支持的并行数:150 GB / 60 GB = 2 组
  • 线程维度可支持的并行数:24 / 16 = 1 组

取两者的较小值(1 组)。显而易见,在上述参数设置下,该分析任务无法实现并行,只能以串行(单任务逐个执行)的方式运行。

如何优化以启用并行计算?

最直接的解决办法是调整您的资源设置,您可以通过以下两种方式之一来解锁并行:

方式一:增加任务的总分配线程数(推荐) 保持单个子任务的线程配置不变,直接在运行脚本中给任务分配更多总线程(例如从 24 提升到 32,此时 32 / 16 = 2,可满足 2 组并行):

#analysis script
saw count \
...
--id=FASTQ_parallel_alignment \
--memory=150 \       # 内存充足 (150/60 = 2)
--threads-num=32 \   # 增加总线程数,此时 32/16 = 2,成功启用 2 组并行
...

方式二:降低单个子任务的线程占用在 YAML 配置文件中,调低单个比对子任务所占用的线程数(例如从 16 降低到 12,此时总线程 24 运行两个子任务 24 / 12 = 2,即可满足 2 组并行):

#resource configuration yaml
version: "1.0"

global:
  scheduler: "sge"
  default_setting:
    max_retries: 0

schedulers: 
  sge:
    queue: " "

rules:
...
  alignment:  #read alignment
    threads: 12      # 降低单个子任务的线程数,此时总线程 24/12 = 2,成功启用 2 组并行
    mem_gb: null     ## 假设该子任务实际消耗的内存为 60 GB
    retry_factor: 1.5  
...
© 2026 STOmics Tech. All rights reserved.Modified: 2026-09-15 10:50:37

results matching ""

    No results matching ""