DualSPHysics v5.0源码编译教程,新手入门

目录

  • 一、前期准备
    • 1. 安装C++编译器
    • 2. 安装CUDA
  • 二、下载源码
  • 三、编译
  • 四、报错解决
  • 五、验证

一、前期准备

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进行计算是没有问题的!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/354108.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【笔试常见编程题01】删除公共字符串、组队竞赛、倒置字符串、排序子序列

1. 删除公共字符串 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.” 输入描述 每个测试输入包含2个字符串 输出描述 输出删除后的…

翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二 1. 将任何静态图表转换为动态数据可视化 ChatGPT Vision 不仅可以将涂鸦变成功能齐全的 Streamlit 应用程序,还…

Python算法题集_无重复字符的最长子串

本文为Python算法题集之一的代码示例 题目3:无重复字符的最长子串 说明:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "a…

LeNet跟LeNet5详解

1 LeNet结构 主要是为了手写数字识别 具体结构讲解:从图中例子可得 1 先传入一个灰度图像尺寸为1x28x28,通道数为1,尺寸为28x28的灰度图像 2 第一层5x5卷积,经过公式 输入图像尺寸-卷积核尺寸2padding/步长1,&#…

打造专业级ChatGPT风格聊天界面:SpringBoot与Vue实现动态打字机效果,附完整前后端源码

大家好,今天用SpringBoot、vue写了一个仿ChatGPT官网聊天的打字机效果。 所有代码地址:gitee代码地址 ,包含前端和后端,可以直接运行 使用本技术实现的项目:aicnn.cn,欢迎大家体验 如果文章知识点有错误的地方&#xf…

Visio绘图文件阅读器 --- VSD Viewer

VSD Viewer是一款轻量级、直观易用的软件,专门设计用于查看和打印Microsoft Visio绘图文件。它支持多种Visio文件格式,如VSD、VSDX等,并能够快速加载Visio绘图文件,无需等待太长时间。VSD Viewer还提供高质量的打印功能&#xff0…

【目标跟踪】多相机环视跟踪

文章目录 一、前言二、流程图三、实现原理3.1、初始化3.2、输入3.3、初始航迹3.4、航迹预测3.5、航迹匹配3.6、输出结果 四、c 代码五、总结 一、前言 多相机目标跟踪主要是为了实现 360 度跟踪。单相机检测存在左右后的盲区视野。在智能驾驶领域,要想靠相机实现无…

Ps:根据 HSB 调色(以可选颜色命令为例)

在数字色彩中,RGB 和 HSV(又称 HSB)是两种常用的颜色表示方式(颜色模型)。 在 RGB 颜色模式下,Photoshop 的红(Red)、绿(Green)、蓝(Blue&#xf…

空气质量预测 | Python实现基于线性回归、Lasso回归、岭回归、决策树回归的空气质量预测模型

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 政府机构使用空气质量指数 (AQI) 向公众传达当前空气污染程度或预测空气污染程度。 随着 AQI 的上升,公共卫生风险也会增加。 不同国家有自己的空气质量指数,对应不同国家的空气质量标准。 对于空气质量预测,…

SpringBoot将第三方的jar中的bean对象自动注入到ioc容器中

新建一个模块,做自动配置 config:需要准备两个类,一个自动配置类,一个配置类 CommonAutoConfig:此类用于做自动配置类它会去读取resoutces下的META-INF.spring下的org.springframework.boot.autoconfigure.AutoConfig…

EDEM仿真导入stl文件慢的原因

我在将solidworks导出为STL文件后,再导入EDEM软件进行离散元仿真时,导入速度特别慢,发现是因为stl文件分辨率设置的过于精细,将文件分辨率设置为粗糙后,导入速度就快了。

SSH客户端 Termius for Mac 中文激活版

Termius for Mac是一款强大的终端和SSH客户端,为开发人员、系统管理员和网络工程师提供了全面的远程访问和管理工具。 软件下载:Termius for Mac 中文激活版下载 无论您是在使用Mac、Windows还是Linux系统,Termius都能提供出色的功能和用户体…

一、计算机组成与体系结构【7分】

一、课程内容 二、分值 三、数据表示 1、进制转换 其他进制转换为十进制 十进制转换为其他进制 二进制转换为八进制与十六进制 2、码制 这一块目前不是很懂 3、浮点数表示 4、算数与逻辑运算 四、校验码 1、奇偶校验码(只能检测出奇位的错误,…

mac上搭建hbase伪集群

1. 前言 之前我们已经搭建过了 hbase单点环境,(单机版搭建参见: https://blog.csdn.net/a15835774652/article/details/135569456) 但是 为了模拟一把集群环境 我们还是尝试搭建一个伪集群版 2. 环境准备 jdk环境 1.8hdfs (hadoop环境 可选…

如何保证缓存与数据库双写时的数据一致性?

背景:使用到缓存,无论是本地内存做缓存还是使用 Redis 做缓存,那么就会存在数据同步的问题,因为配置信息缓存在内存中,而内存时无法感知到数据在数据库的修改。这样就会造成数据库中的数据与缓存中数据不一致的问题。 …

使用py-spy对python程序进行性能诊断学习

py-spy简介 py-spy是一个用Rust编写的轻量级Python分析工具,它能够监视正在运行的Python程序,而不需要修改代码或者重新启动程序。Py-spy可以在不影响程序运行的情况下,采集程序运行时的信息,生成火焰图(flame graph&…

MYSQL表的约束详解!

文章目录 前言一、空属性二、默认值三、列描述四、zerofill五、主键六、自增长七、唯一键八、外键 前言 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据…

【CANoe使用大全】——Logging窗口

🙋‍♂️【CANoe使用大全】系列💁‍♂️点击跳转 文章目录 1.概述2.Logging窗口打开方式3.创建Logging4.配置4.1. 命名4.2.格式选择4.3. 路径选择与命名4.3.1.Logging文件命名_自定义4.3.2.Logging文件命名_系统内选择 5.Logging触发方式5.1 Logging模块…

QT实现USB摄像头接入显示

一、UVC协议简介 UVC全称是USB Video Class(USB视频类),是一种标准化的USB视频设备通信协议,它定义了摄像头与主机之间的数据传输协议和格式。 UVC协议的出现,解决了摄像头厂商之间互不兼容,以及摄像头应…

win10通过ssh链接deepin23并开启x11转发

前提 主机环境:win10 lstc 虚拟机环境:deepin23beta2 终端:tabby x11服务器: vcxsrv 安装ssh sudo apt install ssh开启root登录(看你需求) 首先你要给root账号设置密码 sudo passwd root修改配置文件 sudo vim /etc/ssh/ss…