前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows环境下编译电磁仿真求解器Palace

Windows环境下编译电磁仿真求解器Palace

原创
作者头像
WelSim的小仿真
发布2023-11-20 11:20:06
1720
发布2023-11-20 11:20:06
举报
文章被收录于专栏:WELSIMWELSIM

Palace是一款开源的大规模计算电磁学软件包,由亚马逊云端业务实验室(AWS Lab)支持。功能丰富,同时能够在不同的高性能硬件上运行,软件上支持OpenMP, MPI和GPU并行计算。Apache的开源协议也是极为友好。详情参见《使用WELSIM生成电磁计算软件Palace的求解器文件》一文。

图片
图片

尽管Palace功能强大,但作为一款基于Linux开发的科学计算程序,官方并没有提供对Windows操作系统的完全支持。笔者对Palace在Windows系统运行的可行性做了研究,使用Visual Studio编译Palace,生成了原生的Windows版本应用程序,并计算得到仿真结果。

Palace提供了CMake的Superbuild编译方式,会自动下载全部的所需依赖库并完全编译。在Linux下可以顺利编译。然而在Windows系统下,大量的依赖库如PETSc,SLEPc,libCEED,MUMPS等核心依赖库需要手动编译,因此官方提供的Superbuild模式,还无法在Windows下顺利编译。我们需要通过手动建立Visual Studio项目的方法,完成编译。

图片
图片

系统环境与依赖库

操作系统:Windows 10, 64-bit

编译器:Visual Studio 2022 Community, C++17。Inter Fortran Compiler 2022。

Palace版本:0.11.2

依赖库

  • Intel MKL:著名的线性矩阵求解器。使用oneAPI 2022.2.0,和Fortran编译器版本一致。
  • METIS:用于并行计算的网格分区工具。使用5.3版本。
  • Hypre:计算包,使用2.52版本。
  • nlhmann/json:一款现代的基于C++的JSON语言读写包。
  • {fmt}:支持C/C++的输入输出流的格式化工具包。
  • Eigen:大名顶顶的C++数值计算包,无需编译,支持头文件直接调用。
  • libCEED:是一款线性代数计算管理终端,支持对各种CPU,GPU和集群的并行计算。
  • SuperLU_DIST:SuperLU的并行版本,是一个并行的稀疏直接线性代数求解器库。
  • STRUMPACK:一款大规模稀疏矩阵直接数值计算的开源软件库。
  • MUMPS:来自法国的求解大规模稀疏线性方程组的开源软件库。
  • SLEPc:支持复数线性矩阵计算,用于特征值计算。需要基于PETSc编译。
  • ARPACK-NG:支持复数线性矩阵计算,用于特征值计算。以F77程序为主,无需依赖PETSc,可以独立编译。
  • GSLIB:用于高阶谱单元的插值计算,可选。

其中,SuperLU_DIST,STRUMPACK,MUMPS三个可选的直接线代求解器至少要有一个。本文选用了MUMPS。SLEPc和ARPACK这两个复数求解器,需要至少一个。如果没有,将无法实现特征值相关的计算。本文选用了ARPACK。

建立项目文件

建立两个项目,分别是静态库项目libpalace,和可执行文件项目palace。libpalace包含所有的头文件和源文件。palace是最后生成的可执行文件,只含有一个main.cpp文件。如图所示,

图片
图片

libpalace项目设置

设置外部头文件链接位置

图片
图片

添加预处理宏命令

代码语言:javascript
复制
CEED_SKIP_VISIBILITYPALACE_WITH_ARPACK_CRT_SECURE_NO_WARNINGS

palace项目设置

添加外部头文件和预处理宏命令的方式,与libpalace几乎一样,这里不在赘述。编译可执行程序需要链接所有依赖库。添加的链接库如下

图片
图片

编译后,需要将所有的依赖动态库放置与palace.exe文件在一起,即可运行palace了。测试可执行程序,可以在Windows的命令行下运行。

图片
图片

也可以使用mpiexec命令进行MPI并行计算。GPU并行计算应该也可以实现,会在以后的文章中讨论。

为贡献仿真与开源社区,笔者开源了Palace的编译文件,分享在 https://github.com/WelSimLLC/palace,并提供了编译好的palace.exe可执行文件,供用户直接使用。

总结

目前可用的开源电磁场仿真求解器不多,Palace提供了强大的计算功能同时,也有着很友好的开源协议。Welsim也成为了世界上第一个在Windows下成功编译Palace,并开源编译方法与文件的开发者。

Palace的一些依赖库在Windows下编译也存在难点,将在以后的文章中讨论。


WelSim与作者不隶属于Palace。和Palace开发团队与机构没有直接关系。这里引用Palace仅用作技术博客文章与软件使用的参考。 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档