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
依赖库:
其中,SuperLU_DIST,STRUMPACK,MUMPS三个可选的直接线代求解器至少要有一个。本文选用了MUMPS。SLEPc和ARPACK这两个复数求解器,需要至少一个。如果没有,将无法实现特征值相关的计算。本文选用了ARPACK。
建立项目文件
建立两个项目,分别是静态库项目libpalace,和可执行文件项目palace。libpalace包含所有的头文件和源文件。palace是最后生成的可执行文件,只含有一个main.cpp文件。如图所示,
libpalace项目设置
设置外部头文件链接位置
添加预处理宏命令
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 删除。