GPU加速
概览
SAW 软件支持利用 GPU 资源来显著加速分析计算,通过单一参数进行控制:--gpu-id。
SAW 中的 GPU 加速模块主要由两个独立的部分组成:
- 图像处理 (原生自带):软件内置支持,用于加速图像分割任务。默认可用。
- 矩阵分析 (需安装插件):SAW 8.3 中的新增功能,主要用于加速下游的矩阵计算(如聚类、降维)。此功能需要通过
saw support plugin命令安装扩展包后方可使用。
在不同的分析流程中,指定 --gpu-id 参数将会对以下步骤进行加速:
SAW count & SAW realign
- 图像处理模块 (内置):
- 组织分割 (Tissue segmentation):加速从染色图像中识别组织边界的过程
- 细胞分割 (Cell segmentation):加速细胞核分割算法(例如:深度学习部分)以生成细胞分割轮廓
- 下游分析 (需安装插件):
- 降维 (Dimensionality reduction):GPU 加速的 neighbors 和 UMAP 计算
- 聚类 (Clustering):GPU 加速的 Leiden 聚类
SAW aggr
- 联合分析模块 (需安装插件):
- 聚类 (Clustering):加速对合并后的矩阵进行 neighbors、UMAP 和 Leiden 计算
SAW reanalyze
- cluster (需安装插件):
- 加速标准的下游分析工作流:基于输入的表达矩阵执行 neighbors、UMAP 和 Leiden 计算
- multiomics (需安装插件):
- 建模:加速针对 Stereo-CITE(蛋白与转录本)数据的概率建模步骤
- 下游分析:加速多组学数据后续的降维和聚类过程
驱动安装
SAW 分析流程在 Linux 系统上运行。当 Linux 服务器连接了一张或多张 NVIDIA 显卡后,请确保已安装相应的驱动程序。如果尚未安装,请参照 NVIDIA 官方的《Linux CUDA 安装指南》(NVIDIA CUDA Installation Guide for Linux) 来完成 CUDA 的安装。
检查 GPU 资源
安装 CUDA 后,请按如下要求检查环境中的 GPU
- 请确认 CUDA 版本 (CUDA Version) >= 11.7。
请确认剩余可用显存 (device memory remaining) > 3 GiB 且 GPU 利用率 (GPU utilization) < 100%。
Please confirm CUDA Version >= 11.7
$ nvidia-smi
Tue Jun 4 05:20:12 2024
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.65.01 Driver Version: 515.65.01 CUDA Version: 11.7 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:17:00.0 Off | 0 |
| N/A 28C P8 16W / 70W | 4MiB / 15360MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 Tesla T4 Off | 00000000:65:00.0 Off | 0 |
| N/A 34C P0 26W / 70W | 1259MiB / 15360MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 2 Tesla T4 Off | 00000000:CA:00.0 Off | 0 |
| N/A 36C P0 28W / 70W | 641MiB / 15360MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 3 Tesla T4 Off | 00000000:E3:00.0 Off | 0 |
| N/A 65C P0 66W / 70W | 14439MiB / 15360MiB | 99% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 1 N/A N/A 83410 C .../envs/cellbin2/bin/python 1255MiB |
| 2 N/A N/A 84598 C .../envs/cellbin2/bin/python 637MiB |
| 3 N/A N/A 15814 C python 14435MiB |
+-----------------------------------------------------------------------------+
在上方第一个表格 NVIDIA-SMI 中,可以直观地看到当前有 4 张 GPU 显卡,以及它们各自的序号 (GPU ID)、对应的风扇转速、显卡名称和性能状态。其余的详细参数涉及 GPU 整体使用率、显存使用率等,此处不再赘述。
第二个表格 Processes 则显示了各个进程占用的显存大小、进程号 (PID) 以及该进程所挂载运行的 GPU 序号。
启用 GPU 分析
以 NVIDIA 显卡为例,说明如何调用 GPU 来启动 saw count 分析任务。
--gpu-id 用于配置并指定要使用的 GPU 显卡。请根据服务器环境中的实际 GPU 资源分布情况,为 --gpu-id 选择一个合适的 GPU 序号 (GPU index)。如系统未检测到指定的 GPU,saw count 任务将直接无法启动(程序不会自动降级回退到 CPU 运行)。
请参考以下脚本运行分析任务:
cd /saw/runs
saw count \
--id=Demo_Mouse_Brain_with_GPU \
--sn=C04144D5\
--omics=transcriptomics \
--kit-version="Stereo-seq N FFPE V1.0" \
--sequencing-type="PE75_25+59" \
--chip-mask=/saw/datasets/chip_mask/C04144D5.barcodeToPos.h5 \
--fastqs=/saw/datasets/fastqs \
--reference=/saw/datasets/reference/mouse_transcriptome \
--image-tar=/saw/datasets/image/C04144D5_SC_20240620_153.tar.gz \
--gpu-id=0 ## 目前仅支持输入一个 GPU ID