(以下内容适用于 Abaqus 6.11 及更高版本。
Abaqus 6.11 及更高版本支持 GPGPU 直接求解器加速。Abaqus/Standard 中的直接稀疏求解器可以使用具有计算能力的 GPGPU 卡来减少方程解的运行时间。支持通用处理 (GPGPU) 的高端显卡提供了一种提高计算密集型应用程序性能的另一种方法。
请注意以下事项:
测试的 GPGPU 图形设备列在 SIMULIA 系统要求页面上。可以使用其他 GPGPU 设备,只要它们支持计算能力级别 2.0 或更高。
GPGPUS 的支持策略和计算 GPGPUS 的测试状态可以在从 abaqus 版本 6.13(版本 6.13 的程序目录示例)及更高版本开始的程序目录的先决条件选项卡下找到。
有关 GPGPU 性能和配置的常见问题
1、如果我的机器中有支持 CUDA 的显卡,并且我安装了额外的显卡,例如 Quadro P4000,我是否可以使用 Tesla 进行计算?Abaqus 如何确定应该使用哪种设备?
GPGPU加速库根据以下几点选择最佳GPU。库根据 gpus 参数值选择最合适的设备。将选择“计算”设备而不是显卡。
计算能力 2.0 或更高
最高内存
处理单元的数量和速度
2、我可以使用多个 GPU 吗?
从 Abaqus 6.12 开始,不再支持“gpu”选项,取而代之的是“gpus”选项。现在会自动检测 GPU 类型 (NVIDIA/AMD)。“gpus”选项用于指定每个主机或 MPI 进程要使用的 GPU 数量。
3、我可以在计算集群上使用 GPGPU 卡吗?
是的。Abaqus 6.11-2 及更高版本支持具有基于 MPI 的并行化 (DMP) 的 GPGPU 卡,每个主机使用一个 GPGPU 设备。在 Abaqus 6.12 中,“gpus”选项用于指定每个主机或 MPI 进程要使用的 GPU 数量。
4、CUDA 核心数量如何影响 GPGPU 性能?
Abaqus 将利用 GPGPU 卡上提供的全部 CUDA 内核。例如,特斯拉 C2050 和 C2070 有 448 个 CUDA 核心,而 C2090 有 512 个核心。预计 C2090 的性能会更好。NVIDIA 预计将发布具有更多 CUDA 内核的新硬件。SIUMLIA 不建议使用任何 CUDA 内核少于 448 个的显卡。
5、CUDA 设备上安装的内存量如何影响性能?
特斯拉 C2050 配备 3GB 板载内存,C2070 配备 6GB RAM。如果求解器遇到太大而无法放入卡内存的超节点(在稀疏求解器中一起求解的方程块),它们将使用常规机器 CPU 内核进行处理。通常,作业越大,超节点就越大。大多数分析都有适合 6GB RAM 的超级节点,但有时有些可能不适合。对于 3GB 卡,某些分析可能具有无法容纳卡的超级节点,这将降低 GPU 性能优势。对于未在 GPU 上处理的超级节点,由于使用ABA_GPU_VERBOSE环境变量时它们太大,因此将向消息文件写入注释。使用 6GB 卡时,这种情况应该很少见。
超节点大小是超节点中的方程数。当使用ABA_GPU_VERBOSE环境变量时,将计算 GPU 上可以容纳的最大超节点大小并将其打印到日志文件中。超级节点所需的内存(以字节为单位)大约由以下公式计算:
超节点大小是超节点中的方程数。当使用ABA_GPU_VERBOSE环境变量时,将计算 GPU 上可以容纳的最大超节点大小并将其打印到日志文件中。超级节点所需的内存(以字节为单位)大约由以下公式计算:(neq*(neq+1)/2)*sizeof(double)
用于对称求解器,以及
neq*neq*sizeof(双倍)
用于非对称求解器。这里,neq 是一个超级节点的大小。请注意,GPU 上的可用内存将略低于卡规格给出的标称内存量。以下示例中的第二个数字 (4680) 是超节点的大小:
超级节点已启动 902 4680 522 4158 0 0
要启用 GPU 详细输出:
导入作系统
作系统环境['ABA_GPU_VERBOSE'] = '3'
注意:ABA_GPU_VERBOSE变量只能用于诊断目的,并且只能在 SIMULIA 支持工程师请求时进行设置。它最初使用 3 GB 卡最有用,可以检测超级节点太大而无法放入内存的情况,而现在这种情况应该很少发生。
6、当使用支持 CUDA 的显卡(例如 Quadro 6000)而不是 Tesla C20xx 卡时,您是否预计性能会有任何实质性差异?
这取决于特定型号。NVIDIA Quadro 6000 本质上是带有内置显卡的 Tesla C2070,其性能应该与 C2070 相似。Quadro 4000 的性能应该与特斯拉 C2050 相似。
7、如何判断正在使用哪张卡以及它是否正确?
通过上述ABA_GPU_VERBOSE设置,检测到的 GPGPU 设备将记录在 job.log 文件中。选择算法旨在选择“最佳”资源。找到可用GPU时,通知将写入消息(.msg)文件,指示启用GPU加速。
8、我的机器中有两张(或更多)相同的 GPGPU 卡。我可以同时运行两个 Abaqus 作业吗?
默认情况下,Abaqus 分析将根据规格选择“最佳”GPU 设备。两个 Abaqus 分析很可能会选择相同的图形设备;因此,由于两个作业都争夺相同的硬件,性能将会下降。
有两种可能的替代配置可以实现所需的行为:
8.1、配置每个 NVIDIA GPGPU 卡以进行独占计算进程访问。这将防止两个作业同时选择同一个显卡。在具有管理权限的命令提示符下,输入以下命令:
C:\Temp> nvidia-smi –c 3
将 GPU 0000:0F:00.0 的计算模式设置为 EXCLUSIVE_PROCESS。
将 GPU 0000:28:00.0 的计算模式设置为 EXCLUSIVE_PROCESS。
全部完成。
请注意,EXCLUSIVE_PROCESS模式仅在 Abaqus 6.14 及更高版本中受支持。此外,EXCLUSIVE_PROCESS模式不是持久的;因此,每次系统重新启动后都必须重复该命令。启用独占处理模式后,以下作业应使用单独的 GPGPU 卡:
abaqus job=test1 cpus=4 gpus=1
abaqus job=test2 cpus=4 gpus=1
8.2、将每个 Abaqus 作业的环境配置为仅查看一个 GPGPU 卡。在运行每个作业之前,将CUDA_VISIBLE_DEVICES变量设置为特定的 GPGPU 卡。例如
设置 CUDA_VISIBLE_DEVICES=0
abaqus 作业=测试1 cpus=4 gpus=1
设置 CUDA_VISIBLE_DEVICES=1
abaqus 作业=测试2 cpus=4 gpus=1
请注意,Abaqus 使用自己的内部 GPU ID 编号;因此,job.log的ABA_GPU_VERBOSE输出可能与 NVIDIA GPU ID 编号不对应。这可能会在将来的版本中得到纠正。例如
Using GPU 0 Tesla K20Xm 6039339008
9、我是否可以使用每个节点使用多个 MPI 进程运行单个 Abaqus/Standard 分析?
默认情况下,每个 MPI 进程都应用相同的逻辑,并将为每次运行选择相同的“最佳”GPU 卡。多个 MPI 进程可能会选择与上一个问题相同的 GPU。但是,Abaqus 2016 及更高版本包含防止这种情况发生的逻辑。通过启用独占计算过程模式,仍可获得最佳结果(参见上一个问题)。请注意,CUDA_VISIBLE_DEVICES 环境变量不能用于此方案。重要提示:请查看将基于 MPI 的并行化与 Abaqus/Standard 直接求解器一起使用
10、使用 GPGPU 运行 Abaqus 的最佳性能配置是什么?
当 CPU 内核与 GPU 设备的比率超过 8 或 10 时,GPGPU 性能的优势会降低。例如,使用以下配置时可以实现最佳性能:
2 个 Intel E5-2697A V4 处理器(每个 16 核)
256GB内存
4 个 512GB SSD 硬盘,采用 RAID 0 配置
2 张 NVIDIA TESLA K80 GPGPU 卡(每个 K80 包含 2 个 K40 设备)
使用此配置,使用 32 个 CPU、4 个 MPI 进程和每个 MPI 进程 1 个 GPU 运行 Abaqus。
abaqus -j 作业 -CPU 32 -mp_host_split 4 -GPU 1
注意:只有当分析可以完全适合核心内存(内存以最小化 IO 值)时,才能实现最佳性能。如果无法做到这一点,请尝试以下作来减少每个主机的内存要求:
使用其他计算节点运行分析
删除 mp_host_split 选项,以便每个主机有一个 MPI 进程。
示例:abaqus -j job -cpus 32 -gpus 4
11、我可以使用任何计算级别为 2.0 或更高级别的 NVIDIA 兼容设备吗?
是的,但并非所有设备都能提供显着的性能优势。事实上,某些设备实际上可能会导致性能下降。许多 NVIDIA 设备针对高级图形性能进行了优化,并且没有足够的峰值 64 位浮点计算率 (FP64)。Abaqus 求解器至少需要 1TFLOPS 或更高的 FP64 速率(1000 Giga FLOPS)。供应商可能没有明确宣传 FP64 费率。使用 Tech PowerUP GPU 规格数据库查看您的设备是否具有足够的性能。
此外,在某些情况下,与较旧的 K40 和 K80 设备(现在以低廉的价格出售)相比,较新的高性能设备(例如 Tesla P100 和 V100)可能无法提供显着的性能优势。尽管具有非常高的 FP64 速率,但这些设备受到机器 PCI-E 总线上数据传输速度的限制。如上述性能设置所示,通过安装多个 K40 或 K80 设备可以实现更好的价值。
12、通过 Windows 远程桌面运行分析时如何使用 NVIDIA GPGPU 设备?
为了在远程桌面模式下使用 GPGPU,必须使用 nvidia-smi 命令将显卡设置为 TCC 模式,其中命令的语法如下。此命令必须由计算机的管理员运行
nvidia-smi -g(GPU ID)-dm 1
(WDDM 为 0,TCC 为 1)
要获取 GPU ID,您需要首先运行 nvidia-smi 命令,没有选项来显示基本信息,包括 GPU 设备编号、当前 DM 模式和总线 ID。示例可能采用以下形式:
GPU 0000:03:00.0其中,上面是返回的输出中为第一张卡列出的总线 ID,称为设备 0
GPU 0000:22:00.0其中,上面是返回的输出中为第二张卡列出的总线 ID,称为设备 1。
13、为什么在分析消息文件中收到消息 GPU SOLVER ACCELERATOR UNAVAILABLE?
出现此问题的原因有多种:
尚未安装 GPU 卡或驱动程序。分析日志文件中还将存在以下消息
警告:未检测到 GPU 加速器兼容驱动程序。
GPU 驱动程序级别或版本不符合特定 Abaqus 版本支持的最低级别。有关详细信息,请参阅 Abaqus 分析报告 GPU SOLVER ACCELERATION UNAVAILABLE。
在 Linux 系统上,分析日志文件中可能存在以下消息:“Error initializing the CUDA Driver NO DEVICE”。请求 GPGPU 解决方案时,请参阅 Abaqus 分析报告“Error initializing the CUDA Driver NO_DEVICE”。
14、当我提交 Abaqus 分析并请求使用 GPGPU 并行化时,我的工作会立即中止,并出现:
GPGPU token is not available
GPGPU 并行化需要在您的 Abaqus 许可证中启用适当的功能。请联系您当地的销售办事处了解更多信息。
15、是否支持 AMD Firepro GPGPU 卡?
是的,我们在 6.11-2 版中开始使用 AMD FirePro V9800 和 V9800P GPU 卡测试 AMD GPU 设备。我们测试的最新 GPU 卡与我们在程序目录中使用的 6.13 及更高版本的设备驱动程序一起列出
对于仅使用 AMD GPU 的 Abaqus 6.11-2 及更高版本的 6.11:
您需要使用命令行选项 '-gpu amd' 或 'gpu=amd',或者您可以在 abaqus_v6.env 文件中使用 gpu=AMD 设置参数。
AMD 对 6.11 版本的支持还需要以下附加环境变量设置:
# 设置为 AMD GPU 使用
if applicationName == 'analysis' and analysisType == STANDARD:
os.environ['GPU_MAX_HEAP_SIZE']='100'
os.environ['GPU_NEW_ALLOC_SCHEME']='1'
os.environ['GPU_ZERO_COPY_ENABLE']='1'
# 以下内容仅在 Linux
上需要 os.environ[“DISPLAY”]=“:0”
必须将 AMD GPGPU 卡配置为主显示器。
Abaqus 分析必须从图形登录控制台运行。
不支持分布式内存并行化 (DMP)
16、使用 GPGPU 时的代币使用公式是什么?
请参阅有关 SIMULIA Abaqus 统一有限元分析产品的信息或您的 SIMULIA 价目表。
另请参阅: Abaqus 分析所需的令牌数
注意:
由于CUDA驱动的NVIDIA统一虚拟地址(UVA)编程模型,GPU求解器在初始化时会分配大量的虚拟内存;但是,物理内存使用量在预期范围内。
Nvidia_DGX_A100_Benchmark_Data_from_Q4_2022.pdf
获取正版软件免费试用资格,有任何疑问拨咨询热线:400-886-6353或 联系在线客服
未解决你的问题?请到「问答社区」反馈你遇到的问题,专业工程师为您解答!