初始提交:MPI/OpenMP 小程序作业集(并行计算,大三下)
并行计算课程(大三下)的小程序作业归档:教材 16+4 道 MPI/OpenMP 习题、MPI_Hello 编写调试、梯形积分、MPI_Reduce 归约求和与 NUMA 访存特性测试。
课程为《并行计算系统》(2025 至 2026 学年第二学期),作业围绕 MPI 分布式内存编程与 OpenMP 共享内存编程展开,以下要求提炼自各次实验报告:
小程序作业指南.md
MPI_Hello.c
trap_send_recv.c
trap_bcast.c
输入输出.txt
mpi_reduce.c
运行与结果.txt
Makefile
src/
scripts/
results/
generate_report.py
add_outline.py
依赖:Linux/WSL、GCC、MPICH 或其他 MPI 实现(mpicc/mpiexec)、OpenMP(gcc -fopenmp);numa_lag 另需 hwloc;generate_docs.js 需 Node.js 与 docx 包。
# book16+4:MPI 程序 mpicc -g -Wall -std=c99 -o 3.1_mpi_hello book16+4/3.1_mpi_hello.c && mpiexec -n 4 ./3.1_mpi_hello # book16+4:OpenMP 程序 gcc -g -Wall -fopenmp -o 5.1_omp_hello book16+4/5.1_omp_hello.c && ./5.1_omp_hello # mpi_hello(可先 gdb ./MPI_Hello 单进程调试) mpicc -g -o MPI_Hello mpi_hello/MPI_Hello.c && mpirun -np 32 ./MPI_Hello # trapezoidal(运行后输入 a b n,如实测 0 100000 10000000000) mpicc -o trap_bcast trapezoidal/trap_bcast.c && mpirun -np 32 ./trap_bcast # reduce mpicc -o mpi_reduce reduce/mpi_reduce.c && mpirun -np 4 ./mpi_reduce # numa_lag cd numa_lag && make && bash scripts/check_env.sh && bash scripts/run_all.sh # 生成作业文档(输出路径为脚本内绝对路径,可自行修改) npm i docx && node generate_docs.js
说明:numa_lag 与 trapezoidal 的报告生成脚本依赖未入库的 docx 解包目录(unpacked_template 等),仅作过程参考,不能独立运行。
并行计算课程 MPI/OpenMP 小程序作业:16+4 道习题、MPI_Hello、梯形积分、Reduce、NUMA 延迟测试
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MPI/OpenMP 小程序作业集
任务背景
课程为《并行计算系统》(2025 至 2026 学年第二学期),作业围绕 MPI 分布式内存编程与 OpenMP 共享内存编程展开,以下要求提炼自各次实验报告:
内容结构
小程序作业指南.md(1.5k 行)为每个程序整理的描述、完整代码与编译运行命令MPI_Hello.c:程序 3.1,入口加 sleep(10) 以支持 attach 调试trap_send_recv.c、trap_bcast.c两版梯形积分;输入输出.txt为运行记录与两种通信方式对比结论mpi_reduce.c归约求和;运行与结果.txt为不同数组长度/进程数下的实测记录Makefile与src/四个测试程序(NUMA 拓扑、访存延迟、带宽、Ping-Pong);scripts/为环境检查与一键运行脚本;results/为实机完整测试报告;generate_report.py、add_outline.py为实验报告 docx 生成脚本运行方法
依赖:Linux/WSL、GCC、MPICH 或其他 MPI 实现(mpicc/mpiexec)、OpenMP(gcc -fopenmp);numa_lag 另需 hwloc;generate_docs.js 需 Node.js 与 docx 包。
说明:numa_lag 与 trapezoidal 的报告生成脚本依赖未入库的 docx 解包目录(unpacked_template 等),仅作过程参考,不能独立运行。
来源声明