1.8 KiB
1.8 KiB
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的定义,比较诡异)