本实验是高性能并行计算课程的结课作业1,主要涉及到矩阵相乘的并行计算实现。
实验中提供了三种不同的并行计算实现代码路径:
1. 矩阵相乘串行 C 语言程序路径:/home2/2020317110037/class_final/matrix/matrix_serial.c
2. 矩阵相乘 MPI 并行 C 语言程序路径:/home2/2020317110037/class_final/matrix/matrix_mpi.c
3. 矩阵相乘 MPI OpenMP 混合编程 C 语言程序路径:/home2/2020317110037/class_final/matrix/matrix_mpiopenmp.c
实验结果展示了两种不同实现方式在不同进程数和线程数下的运行时间、加速比和并行效率。
(1)MPI 并行,N=2000,进程数:
- 时间/s:239.32(串行)、260.10(并行)
- 加速比:1.00
- 并行效率:100.0%(串行)、99.1%(并行)
进程数:
- 时间/s:427.81(串行)、618.40(并行)
- 加速比:8.60
- 并行效率:215.1%(串行)、172.6%(并行)
进程数:
- 时间/s:617.40(串行)、816.84(并行)
- 加速比:13.75
- 并行效率:229.2%(串行)、177.6%(并行)
(2)MPI OpenMP 混合编程,N=2000,线程数为 4:
- 时间/s:239.32(串行)、250.46(并行)
- 加速比:4.74
- 并行效率:237.1%(串行)、129.0%(并行)
线程数为 4:
- 时间/s:420.61(串行)、611.04(并行)
- 加速比:11.61
- 并行效率:290.2%(串行)、361.2%(并行)
线程数为 4:
- 时间/s:88.42(串行)、228.0 (并行)
- 加速比:28
- 并行效率:undefined
综上所述,根据实验结果可以看出,在不同的实现方式和参数下,使用并行计算方法可以有效地减少矩阵相乘的运行时间并提高运行效率。其中,MPI OpenMP 混合编程在线程数为 4 时表现最佳,在最好情况下可以达到 28 倍的加速比。但是需要注意的是,在某些情况下并行效率可能高于100%,这是由于串行运行时间较长而导致的。