内容摘要:
本文详细介绍如何利用CMake GUI安装、下载METIS软件包,并应用到Windows系统下Visual Studio 2022配置环境,同时对安装时出现的部分问题给出相应的解决措施。
目录
一、关于METIS软件包
METIS 是一个著名的图分割和网格分解库,主要用于处理图形分割、大型稀疏矩阵的重排序以及有限元方法中的网格分解。由卡内基梅隆大学的 George Karypis 和 Vipin Kumar 开发,METIS 提供了高效的算法以解决如下问题:
1.主要功能
-
图分割(Graph Partitioning)
- 将图分割为指定数量的子图,最小化边界顶点的数量(以减少通信成本),同时尽量平衡每个子图的节点数。
- 适用于并行计算的负载均衡,特别是在分布式系统中。
-
网格分解(Mesh Partitioning)
- 将有限元分析中的网格划分为子网格,方便分布式计算。
- 使用经典的多层次图分割技术。
-
稀疏矩阵重排序(Sparse Matrix Ordering)
- 对稀疏矩阵重新排序以减少其带宽或轮廓,优化矩阵的存储和操作效率。
- 常用于求解大型稀疏线性系统。
2.核心技术
-
多层次方法(Multilevel Methods)
- 通过对图进行递归收缩构建简化图,然后在简化图上进行优化,再将结果扩展回原始图。
- 提供了高度高效的计算方法,能在较短时间内处理大规模问题。
-
启发式算法
- 利用启发式技术寻找接近最优的分割方案。
3.优势
- 高效性:能在大规模稀疏图和网格上快速运行。
- 质量优越:生成的分割和排序质量在许多应用中接近最优。
- 广泛应用:在科学计算、机器学习、网络分析等领域有广泛应用。
图来自于KarypisG ,KumarV .A Fast and High Quality Multilevel Scheme for Partitioning Irregular Graphs[J].SIAM Journal on Scientific Computing,2006,20(1):359-392.
二、开发环境
1.操作系统:Win10/Win11
2.开发工具:Visual Studio 2022
3.开发语言:C/C++
4.METIS版本:5.1.0
5.CMake版本:3.21.5
三、下载METIS
1.下载网址:
METIS 的官网地址:http://glaros.dtc.umn.edu/gkhome/metis/metis/overview
可以在官网上找到 METIS 的详细信息、使用文档、下载链接以及相关研究论文,但笔者尝试多种方法无法打开,欢迎给出解决措施。🌹🌹
官方 METIS GitHub 镜像:https://github.com/KarypisLab/METIS
起初笔者下载5.2.1版本的METIS,在 5.2.1 版本中,METIS的文件组织方式发生了一些变化,相比于 5.1.0 版本,某些文件和目录的结构可能有所调整,新版本METIS对于末尾参考教程中提到的方法不适用,这两个新旧版本主要有以下区别:
-
GKlib:在 METIS 5.2.1 中,原先与 METIS 5.1.0 一起提供的
GKlib
目录可能已经被合并或者调整到其他位置。GKlib
是 METIS 使用的一些核心数据结构和算法的库,可能在新版本中已被重构,或已并入 METIS 的其他部分。 -
gk_arch.h
:这个头文件(在 5.1.0 中用于指定机器架构)在 5.2.1 中可能已经移动,或者通过其他方式进行了优化或重构。新的版本可能将这类配置与其他编译选项和平台适配功能结合起来,因此gk_arch.h
文件可能不再直接作为单独的头文件存在。
所以建议直接在该网站中直接下载5.1.0版本:https://github.com/xijunke/METIS-1
2.下载后解压,metis-5.1.0文件夹中包含以下内容。
四、安装CMake GUI
安装CMake GUI 对METIS进行编译。
1.下载网址
官方网址:https://cmake.org/download/(想要下载最新版本的可以从官网下载,但不建议下载最最新版本,会出现一些错误。感兴趣可查看)
GitHub下载网址:https://github.com/Kitware/CMake/releases(该网址整理各个版本的cmake安装包,可自行选择下载,但要注意和VS版本兼容)
CMake 3.21 是正式支持 Visual Studio 2022 的第一个版本,为此笔者下载的压缩包为cmake-3.21.5-windows-x86_64.msi。
2.关于安装包.zip和.msi有什么区别,以下给出解答。
-
.msi
(Microsoft Installer):.msi
文件是Windows平台上常见的安装包格式,属于一种自动化安装方式。- 使用
.msi
文件安装时,安装过程会自动化处理,用户只需通过安装向导一步步完成安装。安装过程中,安装路径和其他选项可以自定义。 .msi
文件通常适用于大多数用户,尤其是那些希望简单快捷地安装,并且希望CMake自动配置环境变量等设置的用户。
-
.zip
文件:.zip
文件是CMake的压缩包,里面包含了CMake的所有文件,但并没有提供自动化的安装过程。- 用户需要手动解压文件,并且需要自己配置环境变量(例如将CMake的路径添加到系统的
PATH
环境变量中),以便能够在命令行中直接使用CMake。 .zip
文件适合那些需要手动控制安装过程的高级用户,或者那些希望避免修改系统设置、手动解压并运行CMake的用户。
总结:
- 如果你希望简单快捷地安装并自动配置,选择
.msi
安装包。 - 如果你想手动控制安装过程或者仅仅是想解压使用,选择
.zip
压缩包。
3.笔者选择用msi安装,一路默认NEXT即可,下载完成后如下图所示。
找到bin文件夹下的图标,双击打开cmake的GUI界面,如下图所示。
五、用CMake GUI编译
1.打开CMake GUI,选择刚刚解压的METIS地址为源代码,输出路径为该地址下的build文件夹。
该build为新建空文件夹,可手动新建,但一定要保证是空文件夹。若无手动新建,后续编译程序会自动新建。
2.点击Configure按钮,选择本机安装的VS版本的生成器(一般为默认选项),点击Finish。
3.编译结束后下面的输出框最后一行是Configure Done就可以了,继续点击Generate按钮,输出Generate Done,编译完成,如下图所示。
在build文件中可以看到METIS.sln。
注:若点击Configure按钮后出现如下图所示报错“Error in configuration process, project files may be invalid”,给出以下解决方案。
(1)确保所有路径(如 METIS 源码路径、Visual Studio 安装路径、CMake 安装路径等)都没有包含空格或特殊字符(这可能会导致某些工具链无法正常工作)。
(2)确保使用的 CMake 版本与你的 Visual Studio 版本兼容。
(3)有时候,CMake 的缓存文件可能会导致配置失败。你可以尝试清理 CMake 缓存并重新生成:删除 build 目录中的所有文件(或者只删除 CMakeCache.txt
文件),然后重新运行 CMake 配置命令或使用 CMake GUI 重新配置项目。
(4)检查 Visual Studio 安装组件:在“开始”菜单搜索“Visual Studio Installer”,然后点击已安装的 Visual Studio 版本旁边的“修改”按钮。在“修改”界面中,查看是否选中了“C++ 生成工具”(C++ build tools)和相关的 Windows SDK。如果没有,勾选并重新安装。
以Visual Studio 2022为例,确保安装以下两部分。
(5)以管理员身份运行 Visual Studio和CMake GUI,重新配置项目。
六、修改gk_arch.h文件
1.在解压的文件夹metis-5.1.0中打开文件夹GKlib,找到文件gk_arch.h,用记事本或者VS打开。
2.将这一行代码define rint(x) ((int)((x)+0.5)) 注释掉,如下图所示,保存文件。
七、用VS生成解决方案
1. 在刚刚METIS新建的build文件夹下选择 METIS.sln 文件,用VS打开,如下图所示。
2.将此处的Debug改为Release,如下图所示。
3.在解决方案管理器中,右击ALL_BUILD,选择“生成”,生成解决方案完成。
欢迎交流🌹🌹
参考文章: