首页/文章/ 详情

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

4月前浏览1847

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项目设置

设置外部头文件链接位置

添加预处理宏命令

    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仅用作技术博客文章与软件使用的参考。 

    来源:WELSIM
    WELSIMUMUnity
    著作权归作者所有,欢迎分享,未经许可,不得转载
    首次发布时间:2023-12-02
    最近编辑:4月前
    WELSIM
    一枚搞仿真的老员工
    获赞 17粉丝 40文章 249课程 0
    点赞
    收藏
    未登录
    还没有评论

    课程
    培训
    服务
    行家

    VIP会员 学习 福利任务 兑换礼品
    下载APP
    联系我们
    帮助与反馈