《并行程序设计》实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《并行程序设计》
实验报告
2018/07/04
华南理工大学本科实验报告课程名称并行程序设计成绩评定
实验项目名称MPI+OpenMP实现PSRS排序实验。数据量大小1G个整型数。
1、实验目标
(1)利用visual studio配置MPI环境和mpi混合编译环境;
(2)MPI+OpenMP实现PSRS排序实验。数据量大小1G个整型数。
2、串行程序代码(串行程序已经放在网络教学平台,请把主要代码部分摘抄在下面)
void Odd_even_sort(
int a[] /* in/out */,
int n /* in */) {
int phase, i, temp;
for (phase = 0; phase < n; phase++)
if (phase % 2 == 0) { /* Even phase */
for (i = 1; i < n; i += 2)
if (a[i-1] > a[i]) {
temp = a[i];
a[i] = a[i-1];
a[i-1] = temp;
}
} else { /* Odd phase */
for (i = 1; i < n-1; i += 2)
if (a[i] > a[i+1]) {
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
} /* Odd_even_sort */
3、并行程序关键代码
4、性能分析
表3 采用4进程时,使用不同线程数在1G数据集上的测试结果
图1 串行:
图2 1G数据1、2、4进程+1线程:
图3 1G数据1、2、4进程+2线程:
图4 1G数据1、2、4进程+4线程:
图5 1G数据1、2、4进程+8线程:
图6:不同进程分别在不同线程下排序所需要的时间
5、总结
本次实验的机器是4核CPU,每个核有8个逻辑处理器,因此分别进行了1、2、4进程搭配1、2、4、8线程的实验,从实验结果来看,只有在单进程的时候,将线程数增加到8才取得了更好的效果,而进程数的增加反而更慢了。特别的是在4进程的时候,算法的性能相比于2进程有很大的提升,但是仍然不如串行的性能好。
6、附件
Mpi_omp_int_vs.cpp