SharedCourses/docs/courses/软件工程学院/并行程序设计/index.md

40 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2025春季学期并行程序设计期末考试试卷回忆版
## 选择题
选择题都较简单,不做记录。
## 填空题
1.均匀储存访问模型中,处理器访问储存器的时间\_\_\_\_物理储存器被所有处理器\_\_\_\_每台处理器带\_\_\_\_缓存。
2.MPI的点到点通信模式包括标准通信\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
3.四种循环转换包括:循环交换,循环分块,\_\_\_\_\_\_\_\_。
4.MPI集合通信的三个主要功能是通信\_\_\_\_\_\_\_\_。
## 简答题
1.简述OpenMP的Fork-Join工作模式。
2.分布式内存系统与共享内存系统的核心区别是什么?
3.MPI阻塞接收与非阻塞接收的区别是什么
4.临界区嵌套会导致什么问题?如何解决?
5.简述信号量Semaphore实现Barrier的方法。
## 编程题
1.哲学家用餐问题,如何用互斥锁与信号量解决哲学家用餐问题,保证不会出现死锁和饥饿?(注:此题只需写伪代码,不需要严格的参照接口定义)
2.多个进程分别拥有私有的数组,现在要计算各个进程中所有数组元素的平均值。
使用MPI_Allreduce实现函数void Global_average(double loc_arr[], int loc_n, MPI_Comm comm, double* global_avg)先计算局部总和与元素总数再归约计算全局总和与总元素数最后算平均值运行结束后所有进程中的global_avg都应该储存相同的结果即全局平均值。
其中loc_arr[]为每个进程拥有的局部数组loc_n为局部数组的大小comm为通讯器global_avg储存最终结果
本题下方提供了会用到的MPI函数定义以供查阅不需要特意背诵接口。不过奇怪的是考试中唯独没有提供MPI_Allreduce的定义比较诡异