本机环境:
本人QQ530422429,欢迎大家交流、指导。(1) Ubuntu 12.04.3 (2) 64位 (3) 已安装 libopenmpi-dev和openmpi-bin
安装步骤如下:
1. 在官网下载Parmetis,此处下载的是 parmetis-4.0.3.tar.gz
下载地址: http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/parmetis-4.0.3.tar.gz
2. 解压,得到 parmetis-4.0.3文件夹,存放路径:/home/gougou/GraphPartition/。命令如下:
gunzip parmetis-4.0.3.tar.gz
tar -xvf parmetis-4.0.3.tar
3. 进入 parmetis-4.0.3 目录,由于本机是64位,故要修改metis/include/metis.h 文件,
把 IDXTYPEWIDTH 的值修改为 64。
#define IDXTYPEWIDTH 64 (默认是32,修改为64)
4. 安装此软件需要 GNU make and CMake 2.8 ,因此需要安装 CMake。安装CMake前需要安装g++。
$ sudo apt-get install g++
$ sudo apt-get install cmake
5. 进行build。
$ make config
6. 编译
7. 安装,成功后如下图所示。$ make
7. 默认的安装目录在 /usr/local下,进入 /usr/local/bin,命令 $ ls后,结果如下:$ sudo make install
注:执行上述命令务必使用sudo,否则会报如下错误。
8. 添加环境变量 (默认PATH中已有/usr/local/bin,用echo $PATH 查看,确认后跳过此步骤):
$ vi /etc/profile
export PATH=$PATH:/usr/local/bin
使用步骤如下:
1. 查看parmetis命令的用法,如下:
2. 单机上运行parmetis命令,由于parmetis是根据mpi进行并行图划分,故命令应如下:
分析和实验知:<graph-file>为输入文件,邻接表形式存储,具体可参考metis的输入格式要求。
nparts为分区的数目;dbglvl为debug的级别,不同级别会显示不同的输出信息;seed的大小会影响分区效果。
其他参数未知,欢迎大家在博客下面留言指导!
mpiexec -n 2 parmetis /home/gougou/GraphPartition/parmetis-4.0.3/Graphs/rotor.graph 1 6 1 1 6 1
输入文件为自带的parmetis-4.0.3/Graphs/rotor.graph,划分为6个分区,dbglvl设为6(输入的信息较多),
其他的都设为1。运行结果如下图,会在parmetis-4.0.3/Graphs文件夹下生成 rotor.graph.part文件,里面是每个顶点所属的
分区id(0-5)。
从上图,可明显看出Coarsening Phase与Uncoarsening Phase。
3. 分布式环境下进行并行图划分。
实验环境:两台服务器test150和test151,两台机器上的mpi已经配置好。
新建machines文件,内容如下:
完!
并行运行parmetis的命令如下:
mpiexec -n 2 --hostfile machines parmetis /home/gougou/GraphPartition/parmetis-4.0.3/Graphs/rotor.graph 1 6 1 1 6 1