如何使用Nvidia显卡对abaqus进行加速

本文介绍了如何使用 Nvidia CUDA1的加速功能,使Abaqus计算加速。

原文

GPU加速的功能暂时只支持Standard的计算,Explicit不支持

驱动都设置完成可直接查看查看 环境变量设置

安装显卡


提前查询好主板是否与显卡兼容,在购买显卡。
本次使用的是Nvidia 2021 新推出的 RTX A4000显卡2

GPU特性RTX A000
GPU显存带纠错码ECC DDR6 16GB
显存带宽448GB/s
图形总线PCI-E X16
CUDA核心数6144
单精度浮点计算19.2 TFLOPS

*具体可参考 A4000规格书

  1. 插入卡槽
  2. 连接显卡电源(6Pin)
  3. 开机测试

安装显卡驱动


Nvida显卡驱动官网找到合适自己的显卡驱动下载,并重启。

安装CUDA 工具


CUDA工具包安装地址

CUDA的安装需要较长时间,属于正常情况。

环境变量设置


在这里有两种方法可以开启CUDA的加速

直接编辑系统环境变量,如下图

在系统全局变量里加入

环境变量内容
变量名ABA_ACCELERATOR_TYPE
PLATFORM_CUDA

编辑abaqus_v6.env

abaqus_v6.env3文件的句末加上

os.environ["ABA_ACCELERATOR_TYPE"]="PLATFORM_CUDA" # Nvidia

的字段使其可以使用CUDA加速工具加速ABAQUS。

是否加速成功


成功加速Abaqus反馈的Log里面会出现如下加速成功的字符。

回答各类显卡是否支持加速

Abaqus的GPU(CUDA)加速,和AI学习的GPU计算稍有不同。Abaqus属于科学计算,对精度要求很高,因此对于有双精度浮点计算能力的P100,V100 以及最新出的 A30, A100是最佳的。
结论:

  • 理论上可以下载并使用cuda-tool工具包的显卡都能进行abaqus gpu加速,只是因为普通的消费者级别的RTX系列双精度能力很低,因此加速效果没太明显,不过对于计算量大的项目,其实速度提升也很多。
  • 理想的情况下是使用拥有双精度浮点计算能力的专业显卡,效果可以提升近一倍多。

提交任务

对于在abaqus CAE的GUI里直接提交任务的情况下,直接在GPGPU上打勾并设置为1(一张显卡的情况下)
和CPU的设置不同,gpu的参数表示显卡的数量,不表示CUDA核心数
在这里插入图片描述

对于命令形式可以参考以下(8核心cpu并行计算,1块显卡加速的情况):
abaqus job=<job-name> cpus=<8> gpus=1

速度对比

实际使用时根据显卡的双精度算力显存的大小以及模型的复杂度相关,以下速度对比仅作参考。

CPU: Xeon Silver 4310 12C ×2

边界条件非线性,摩擦解析,同样的模型同样在使用GPU的情况下,用A30只用了8小时算完,而A2000用了21小时,不使用GPU的8核心用了36小时算完。
在这里插入图片描述

下图代表了解析计算倍速,以4核计算为1倍作为基准,高复杂度的解析GPU计算为2倍,A30则对于不用GPU的8核心提高到了4倍。
在这里插入图片描述

模型复杂程度越高使用GPU所带来的收益就约明显

Reference


  1. Nvidia Cuda 适用于类似于RTX or Quardo之类的 计算卡,一般的 Geforce 显卡不不推荐使用CUDA加速。 ↩︎

  2. 官网介绍 ,购入金额15万日元。 ↩︎

  3. abaqus_v6.env的路径一般是在C:\SIMULIA\EstProducts\2020\win_b64\SMA\site这里。 ↩︎

  • 9
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 37
    评论
使用Python脚本调用Abaqus插件对模型进行操作,需要使用Abaqus提供的Python API。以下是一个简单的示例代码,演示如何在Python脚本中使用Abaqus插件对模型进行操作: ```python import os from abaqus import * from abaqusConstants import * # 设置工作目录 os.chdir(r"D:\Abaqus_Workspace") # 打开模型数据库文件 mdb = openMdb("example.odb") # 调用插件 myPlugin = mdb.plugins["myPlugin"] myPlugin.run() # 获取模型中的实例 myInstance = mdb.models["Model-1"].rootAssembly.instances["Part-1-1"] # 在实例中创建一个新的部件 newPart = mdb.models["Model-1"].Part(name="NewPart", dimensionality=THREE_D, type=DEFORMABLE_BODY) # 将实例中的节点和单元复制到新部件中 newPart.generateMeshFromInstance(myInstance, elemShape=TET) # 将新部件保存为一个新的模型数据库文件 mdb.Model(name="NewModel", objectToCopy=newPart).writeInput(consistencyChecking=OFF) ``` 在这个示例中,我们首先使用`os.chdir()`函数将当前工作目录设置为包含需要使用Abaqus插件的模型数据库文件的目录。然后,我们使用`openMdb()`函数打开模型数据库文件,以便我们可以从中提取所需的数据。接着,我们使用`mdb.plugins[]`语法获取插件对象,并使用其`run()`方法运行插件。 接下来,我们使用`mdb.models[]`语法获取模型对象,并使用其`Part()`方法创建一个新的部件。然后,我们使用`generateMeshFromInstance()`方法将实例中的节点和单元复制到新部件中。最后,我们使用`mdb.Model()`方法将新部件保存为一个新的模型数据库文件。 请注意,以上示例仅供参考,并且可能需要根据您的具体情况进行修改。此外,您需要确保您的Python脚本与Abaqus版本兼容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cykaede

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值