项目简介
本项目是基于C语言和MPI(Message Passing Interface)实现的并行程序,用于模拟Schelling模型中的城市分配问题。该模型主要将不同颜色的“代理”(如红色和蓝色)分配到二维网格中,以提高每个代理的满意度。利用并行处理技术,可有效缩短大规模网格模拟的时间。
项目的主要特性和功能
- 并行计算:借助MPI实现多进程并行处理,每个进程负责处理网格的一部分,提升计算效率。
- 自定义数据结构:使用自定义的数据类型(如
City
、UnHappy
等),便于对模拟过程中的数据进行管理和操作。 - 进程通信与同步:通过MPI的消息发送和接收功能,实现各进程间信息的共享和更新。
- 满意度计算与迁移:计算每个网格单元中代理的满意度,将不满足满意度的代理迁移到新位置。
- 循环与终止机制:在模拟过程中持续检查并更新状态,直至所有代理都达到满意状态。
安装使用步骤
编译
使用mpicc
编译器对main.c
文件进行编译,生成可执行文件,命令如下:
bash
mpicc main.c -o schelling
运行
使用mpirun
命令运行程序,需要指定进程数量(-np
参数)和输入参数(如网格大小、空单元格数量、蓝色代理数量、满意度阈值等),示例命令如下:
bash
mpirun -np [N_PROC] --hostfile hfile./schelling [SIZE] [EMPTY_CELL] [BLU AGENT] [SATISFACTION]
注:若使用weak.c
文件进行弱可扩展性测试,需额外指定列数,命令如下:
bash
mpirun -np [N_PROC] --hostfile hfile./weak [ROWS] [COLS] [EMPTY_CELL] [BLU AGENT] [SATISFACTION]
查看结果
程序运行结束后,可查看总的模拟时间以及最终的网格状态。
环境要求
确保系统已安装MPI库,并完成MPI环境的配置。为获得最佳性能,系统或集群需支持MPI并行计算,可根据实际情况调整输入参数。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】