一、前期准备

DualSPHysics是可以编译运行在CPU和GPU上的,所以需要安装C++编译器:例如gcc,和CUDA编译器:nvcc。
如果电脑上不支持CUDA,那么DualSPHysics也是可以运行的,只使用了CPU的那部分,而不用GPU。

这里需要注意的是,如果要使用可执行文件在GPU上运行DualSPHysics,仅需要支持NVIDIA CUDA的GPU卡,并且必须安装最新版本的GPU驱动程序。 但是,要编译源代码,必须在计算机上安装GPU编程语言CUDA和nvcc编译器。 CUDA Toolkit 的版本要对应DualSPHysics的版本。例如由下图可知,DualSPHysics v5.0对应到的CUDA版本最高为9.2,而DualSPHysics v5.2对应到的CUDA版本最高为11.7。如果下载更高的CUDA版本,将会出问题。
在这里插入图片描述
我们是要编译源代码,所以需要下载CUDA Toolkit(里边包含了编程语言CUDA和nvcc编译器)

1. 安装C++编译器

以下是一些常用的C++编译器,只要电脑中有其中一个就可以了。
在这里插入图片描述
比如我之前电脑下载了Visual Studio,里边就包含MSVC,是C++编译器的一种,可以直接使用。
在这里插入图片描述

2. 安装CUDA

首先要查看自己的电脑系统是否支持CUDA。
具体查看方式:计算机管理–>设备管理器–>显示适配器
在这里插入图片描述

因为CUDA是NVIDIA旗下产品,所以DualSPHysics v5.0及以前版本只能在NVIDIA上运行,在AMD上是不行的。但是V5.2版本及以后是可以运行在AMD GPU上的

在这里插入图片描述
或者看自己电脑里有没有NVIDIA控制面板,如果有的话,则支持CUDA
在这里插入图片描述

DualSPHysics_v5.0及以前版本是不支持AMD的,但是最新版的DualSPHysics_v5.2我发现在change list里说明最新版是支持AMD GPUs的。本文讨论的是V5.0版本。
在这里插入图片描述

下载安装CUDA注意DualSPHysics v5.0对应的一定要下载v9.2版本的CUDA,具体下载安装可以参考我另一篇教程:https://blog.csdn.net/changyana/article/details/135876568
完成后,在cmd里输入nvcc -V,可以看到CUDA的版本,则表示安装成功!
在这里插入图片描述

二、下载源码

直接下载整个包或者从github上拉源码都是可以的。
我是直接下载的整个包,下载地址:https://dual.sphysics.org/downloads/,填写个人信息,然后选择需要的版本进行下载。(我选择的是DualSPHysics_v5.0.1.zip进行下载,没有下最新版的DualSPHysics_v5.2.1.zip)
在这里插入图片描述
这两个版本的区别是:
① DualSPHysics updated for latest compilers (Visual Studio 2022 (v143), gcc 11.2, CUDA 11.7).官方支持的编译环境从Visual Studio 2015变到了Visual Studio 2022
② DualSPHysics compiled for AMD GPUs as well.同时也支持了AMD,之前只支持NVIDIA)
如下图,左边红色是v5.0的编译器,右边绿色是v5.2的编译器。
在这里插入图片描述
如下图,是v5.2的change list
在这里插入图片描述

下载解压完之后,进入src文件夹,可以看到编译所需的内容。
在这里插入图片描述

三、编译

在Windows系统上,可以使用VisualStudio进行编译,也可以使用CMAKE进行编译。
本文尝试用Visual Studio进行编译,DualSPHysics_v5.0对应的VisualStudio是2015版本。我的Visual Studio之前下载的是2019版本,但是也可以使用2015的编译器,办法是在Visual Studio 2019里安装 Visual Studio 2015 的“MSVC v140 - VS 2015 C++ 编译器工具集”(Visual C++ 14.0),具体安装过程如下:
打开Visual Studio Installer
在这里插入图片描述
然后点击修改
在这里插入图片描述
进入之后在“使用C++的桌面开发”里勾选MSVC v140 - VS 2015 C++ 生成工具 (v14.00),然后点击右下角的修改。等待安装完成。
在这里插入图片描述
等待安装完成后,重启Visual Studio 2019。然后在Visual Studio 2019中打开项目。
在这里插入图片描述
选择DualSPHysics_v5.0–>src–>VS–>DualSPHysics5Re_vs2015.sln打开。
在这里插入图片描述
打开之后软件给我提示可以升级到最新的。我这里选择不升级,因为要用匹配的2015版本进行编译的。
在这里插入图片描述
然后给它进行匹配使用2015版本的工具集:
在项目上右键,然后点击“属性”
在这里插入图片描述
在配置属性——>常规——>平台工具集,下拉菜单里边选择Visual Studio 2015(v140),点击右下角的确定,这样就可以使用2015进行编译了。
在这里插入图片描述
之后还需要配置一下编译的类型。在上方的配置下拉框里选择Release。
(Release构建出来的DualSPHysics是可以使用GPU&CPU,而下方的ReleaseCPU是只针对CPU,不能使用GPU)
在这里插入图片描述

更改完之后,点击右键进行生成编译。等待编译成功…
在这里插入图片描述

四、报错解决

  1. 如果报错说MSB4019 找不到导入的项目“D:\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations\CUDA 9.2.props”。
    解决办法:https://blog.csdn.net/changyana/article/details/135881246
  2. 如果报错说错误MSB8036 The Windows SDK version 8.1 was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solution and selecting “Retarget solution”.找不到 Windows SDK 版本 8.1。请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
    解决办法:https://blog.csdn.net/changyana/article/details/135884668
    没有什么报错的话就跑起来了,等待编译
    在这里插入图片描述
    编译完成后,就会提示生成成功
    在这里插入图片描述

五、验证

查看编译完成的地址:在项目属性里可以看到路径
在这里插入图片描述
然后可以看到该目录下的这几个文件都是最新的,时间都是刚刚更改编译后的时间
在这里插入图片描述
我们来跑一个案例测试一下。
可以直接运行DualSPHysics/examples下的示例,如图,选择第一个主要示例编译运行。
先以文本形式打开wCaseDambreak_win64_GPU.bat,可以看到这里默认就是调用刚刚编译生成的DualSPHysics可执行文件,如果自己更改了刚刚源码编译生成的路径,这里也需要对应更改一下(注意这个示例还使用了其它后处理的文件,比如partvtk和partvtkout等,所以要注意调用路径的正确性。。。)
在这里插入图片描述

如果直接就是默认的路径,上边已经确认了,直接双击wCaseDambreak_win64_GPU.bat运行
在这里插入图片描述
计算完成之后会提示All done
在这里插入图片描述
接着刷新一下就可以看到在同级目录下生成了案例_out文件夹,里边就是DualSPHysics计算生成的结果。
在这里插入图片描述
使用可视化软件打开看看,我这里是使用了ParaView进行展示的。
图片:
在这里插入图片描述

视频:

ParaView展示DualSPHysics案例

可以看到由自己编译出的DualSPHysics进行计算是没有问题的!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐