Skip to main content
FlexPod
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

GPU 设置

贡献者 kaminis85

截至发布时, GATK 工具不支持在内部执行基于 GPU 的原生。我们提供了以下设置和指导,帮助读者了解使用 GATK PCIe 夹层卡在后部安装的 NVIDIA Tesla P6 GPU 上使用 FlexPod 的简单程度。

我们使用以下 Cisco 验证设计( Cisco Validated Design , CVD )作为参考架构和最佳实践指南来设置 FlexPod 环境,以便可以运行使用 GPU 的应用程序。

下面是此设置期间的一组要点:

  1. 我们在 UCS B200 M5 服务器的夹层插槽中使用了 PCIe NVIDIA Tesla P6 GPU 。

  2. 对于此设置,我们已在 NVIDIA 合作伙伴门户上注册,并获得了一个评估许可证(也称为授权),以便能够在计算模式下使用 GPU 。

  3. 我们从 NVIDIA 合作伙伴网站下载了所需的 NVIDIA vGPU 软件。

  4. 我们从 NVIDIA 合作伙伴网站下载了授权 ` * 。 bin` 文件。

  5. 我们安装了一个 NVIDIA vGPU 许可证服务器,并使用从 NVIDIA 合作伙伴站点下载的 ` * 。 bin` 文件将授权添加到许可证服务器。

  6. 确保在 NVIDIA 合作伙伴门户上为您的部署选择正确的 NVIDIA vGPU 软件版本。在此设置中,我们使用的驱动程序版本为 460.73.02 。

  7. 此命令将安装 "NVIDIA vGPU Manager" 在 ESXi 中。

    [root@localhost:~] esxcli software vib install -v /vmfs/volumes/infra_datastore_nfs/nvidia/vib/NVIDIA_bootbank_NVIDIA-VMware_ESXi_7.0_Host_Driver_460.73.02-1OEM.700.0.0.15525992.vib
    Installation Result
    Message: Operation finished successfully.
    Reboot Required: false
    VIBs Installed: NVIDIA_bootbank_NVIDIA-VMware_ESXi_7.0_Host_Driver_460.73.02-1OEM.700.0.0.15525992
    VIBs Removed:
    VIBs Skipped:
  8. 重新启动 ESXi 服务器后,运行以下命令以验证 GPU 的安装并检查其运行状况。

    [root@localhost:~] nvidia-smi
    Wed Aug 18 21:37:19 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.73.02    Driver Version: 460.73.02    CUDA Version: N/A      |
    |-------------------------------+----------------------+----------------------+
    | 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 P6            On   | 00000000:D8:00.0 Off |                    0 |
    | N/A   35C    P8     9W /  90W |  15208MiB / 15359MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |    0   N/A  N/A   2812553    C+G   RHEL01                          15168MiB |
    +-----------------------------------------------------------------------------+
    [root@localhost:~]
  9. 使用 vCenter , "配置" 图形设备设置为 "shared direction" 。

  10. 确保已为 RedHat VM 禁用安全启动。

  11. 确保 VM 启动选项固件设置为 EFI ( "ref")。

  12. 确保已将以下参数添加到 VM 选项高级编辑配置中。pciPassthru .64bitMMIOSizeGB 参数的值取决于 GPU 内存和分配给虚拟机的 GPU 数量。例如:

    1. 如果为虚拟机分配了 4 个 32 GB V100 GPU ,则此值应为 128 。

    2. 如果为虚拟机分配了 4 个 16 GB P6 GPU ,则此值应为 64 。

  13. 在 vCenter 中将 vGPU 作为新的 PCI 设备添加到虚拟机时,请确保选择 NVIDIA GRID vGPU 作为 PCI 设备类型。

  14. 选择适合所用 GPU , GPU 内存和使用目的的正确 GPU 配置文件:例如,图形与计算。

  15. 在 RedHat Linux VM 上,可以运行以下命令来安装 NVIDIA 驱动程序:

    [root@genomics1 genomics]#sh NVIDIA-Linux-x86_64-460.73.01-grid.run
  16. 运行以下命令,验证是否报告了正确的 vGPU 配置文件:

    [root@genomics1 genomics]# nvidia-smi –query-gpu=gpu_name –format=csv,noheader –id=0 | sed -e ‘s/ /-/g’
    GRID-P6-16C
    [root@genomics1 genomics]#
  17. 重新启动后,验证是否报告了正确的 NVIDIA vGPU 以及驱动程序版本。

    [root@genomics1 genomics]# nvidia-smi
    Wed Aug 18 20:30:56 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.73.01    Driver Version: 460.73.01    CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | 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  GRID P6-16C         On   | 00000000:02:02.0 Off |                  N/A |
    | N/A   N/A    P8    N/A /  N/A |   2205MiB / 16384MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |    0   N/A  N/A      8604      G   /usr/libexec/Xorg                  13MiB |
    +-----------------------------------------------------------------------------+
    [root@genomics1 genomics]#
  18. 确保已在 vGPU 网格配置文件中的 VM 上配置许可证服务器 IP 。

    1. 复制模板。

      [root@genomics1 genomics]# cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
    2. 编辑文件 ` /etc/nvidia/rid` ,添加许可证服务器 IP 地址,并将功能类型设置为 1 。

       ServerAddress=192.168.169.10
       FeatureType=1
  19. 重新启动虚拟机后,您应在许可证服务器中的 " 已许可客户端 " 下看到一个条目,如下所示。

  20. 有关下载 GATK 和 Cromwell 软件的详细信息,请参见 " 解决方案设置 " 一节。

  21. 在 GATK 可以在内部使用 GPU 之后,工作流问题描述语言为 ` * 。WDL` 具有运行时属性,如下所示。

    task ValidateBAM {
      input {
        # Command parameters
        File input_bam
        String output_basename
        String? validation_mode
        String gatk_path
        # Runtime parameters
        String docker
        Int machine_mem_gb = 4
        Int addtional_disk_space_gb = 50
      }
      Int disk_size = ceil(size(input_bam, "GB")) + addtional_disk_space_gb
      String output_name = "${output_basename}_${validation_mode}.txt"
      command {
        ${gatk_path} \
          ValidateSamFile \
          --INPUT ${input_bam} \
          --OUTPUT ${output_name} \
          --MODE ${default="SUMMARY" validation_mode}
      }
      runtime {
        gpuCount: 1
        gpuType: "nvidia-tesla-p6"
        docker: docker
        memory: machine_mem_gb + " GB"
        disks: "local-disk " + disk_size + " HDD"
      }
      output {
        File validation_report = "${output_name}"
      }
    }