《并行编程原理与实践》课程浓缩了计算机系统结构与并行编程的众多知识,涵盖多线程编程(Pthread)、OpenMP、MPI、CUDA等多种并行编程技术,让您用最短的时间了解最广阔的并行编程相关概念、原理、方法和工具。课程参考了CMU、UC Berkeley等国内外名校的相关课程和优秀书籍,含英咀华,溯本求源,探索系统结构与并行编程的本质。通过本课程的学习,您能够深入理解并行计算机系统和程序设计的原理,掌握共享内存、分布式、异构平台上的并行编程和优化技术,了解计算机系统结构和并行编程技术的发展趋势。
北京理工大学并行编程原理与实践单元测验题答案
1. 并行编程概述
- SIMD属于哪种并行? A.任务并行 B.进程级并行 C.线程级并行 D.指令级并行…
- 以下说法错误的是: A.强可扩展是指问题规模固定,增加进程/线程个数时效率不变 B.弱可扩展是指增加…
- 某程序中只能串行执行的部分占40%,其它部分可完全并行执行,则Amdahl定律计算的加速比上限为: A.2…
- 评估程序性能通常是统计程序运行的 A.用户CPU时间 B.墙上时钟时间 C.系统CPU时间 D.用户CPU时间…
- 标准C的clock函数得到的是 A.用户CPU时间 B.墙上时钟时间 C.用户CPU时间+系统CPU时间 D.系统…
- 以下哪些函数能够获得墙上运行时间? A.clock_gettime B.MPI_Wtime C.omp_get_wtime D.clock…
- E级超算”是指性能达到每秒百亿次浮点运算的超算系统。 A对 B错…
- 加速比不可能大于处理单元数量。 A对 B错
- 并行效率反映了处理器的利用率。 A对 B错
2. 并行计算机体系结构
- 程序局部性原理表现为: A.时间局部性 B.空间局部性 C.数据局部性 D.指令局部性…
- 以下哪些属于发掘ILP(Instruction-Level Parallelism)的技术 A.超长指令字(VLIW) B.向量指令(SIMD) …
- 以下哪些属于Intel的向量指令? A.RISC-V VECTOR B.NEON C.SSE2 D.AVX512
- 推动微处理器性能不断提高的因素主要有哪两个方面: A.体系结构的不断发展 B.光刻机技术的发展 C.…
- 多核处理器的核间通信机制主要有: A.总线 B.交换机 C.交叉开关 D.片上互连网络…
- Consistency保证对同一个内存地址写的顺序在各个内核来看都一样 A对 B错…
- Coherence保证对同一个内存地址写的顺序在各个内核来看都一样 A对 B错…
- 多核处理器把多个CPU(核心)集成到单个处理器芯片中,通过“纵向扩充”提高性能。 A对 B错…
- 针对存储墙问题,人们将存储系统设计成了层次结构,利用缓存和程序运行时的局域性来缓解处理器和存…
- NUMA结构中各个处理单元访存时间(延迟)相同。 A对 B错
4. 并行编程的关键问题
- 5名教师阅100份试卷,可以每人阅20份试卷,这属于 A.访存并行B. 循环并行 C.数据并行 D.任务并行…
- 以下哪种动态调度算法中没有集中式任务队列? A.Work-sharing B.Work-stealing C.Self Scheduling…
- GPU因为大量CUDA线程同时访问相邻位置数据时会进行合并访问,因此经常采用下面哪种数据布局 A.S…
- 关于锁,以下说法错误的是 A.锁根据是否可重入划分为:可重入锁(递归锁)、不可重入锁 B.锁根据是否…
- 同步操作主要有哪几种? A.路障(Barrier) B.同步通信操作 C.信号量(Semaphore) D.锁(Lock)…
- 任务划分的关键在于确定任务间的依赖关系,应考虑以下哪几种数据依赖? A.WAR(读后写) B.RAW(写后读) …
- 基于任务的并行编程模型所涉及的关键问题有: A.同步和通信B. 任务划分 C.数据分布 D.任务调度…
- 为了创建并行算法,关键不是要进行哪种分解,而是首先从哪种分解开始,任务分解和数据分解可能都要进行…
- 嵌套这种结构化编程模式只适用于串行编程,不适用于并行编程。 A对 B错…
- 任务分解只能在程序运行前静态完成。 A对 B错
- 任务调度的终极目标是最小化程序执行时间、最大化资源利用率。 A对 B错…
- 为提高性能,应始终把相关的线程放在同一个处理器上。 A对 B错…
- 发散操作是给定一个源数组和一组源数组的位置集合,将源数组给定位置的数据存入一个输出集合中。 …
- 读写锁允许多个线程同时进行读访问,但是在某一时刻却最多只能由一个线程执行写操作。 A对 B错…
5. 多线程编程
- 关于进程和线程,以下说法错误的是 A.线程ID、寄存器、栈、堆内存是线程独有的 B.线程是程序调度…
- threads线程库提供的函数一般都以什么开头 A.pt_ B.pthreads_ C.thread_ D.pthread_…
- Pthreads线程终止有哪些情况 A.线程调用pthread_exit函数退出 B.线程的函数正常结束 C.整个进程…
- 调用pthread_cond_wait前,需要调用pthread_mutex_unlock,使互斥量处于锁住状态 A对 B错…
- pthread_join等待的线程属性可以是Detached A对 B错
6. OpenMP编程
- 共享存储系统上并行编程的工业标准是 A.CUDA B.OpenMP C.MPI D.MapReduce
- 分布式存储系统上并行编程的工业标准是 A.MapReduce B.OpenMP C.CUDA D.MPI
- #pragma omp for schudule(static, 4)表示的调度方式是 A.循环迭代空间被划分成相同大小的…
- 以下程序能正确运行吗? #pragma omp parallel for for(k=0;k<100;k++) { …
- 以下程序的输出是 int main(int argc, _TCHAR* argv[]){ int A=100,B=100; #pragma…
- 以下哪个是OpenMP用来设定最大线程数的环境变量 A.OMP_NESTED B.OMP_SCHEDULE C.OMP_DYNAMIC D.…
- 以下哪些OpenMP编译制导语句的结构块结尾处有一个隐式barrier存在 A.single B.master C.paralle…
- 以下哪些OpenMP编译制导指令属于工作共享指令 A.omp for B.omp parallel C.omp sections D.…
- 结构块是指仅有一个入口(顶端)和一个出口(底端)的一块儿语句 A对 B错…
- OpenMP工作共享指令区域如果不放在并行域内,则只会被一个线程串行执行 A对 B错…
- #pragma omp single指定的结构块仅由主线程执行,其它线程跳过并继续执行 A对 B错…
7.3 深入MPI编程
- 以下关于MPI说法不正确的是 A. MPI是一种标准和规范,而非某个对它的具体实现 B. MPI是分布…
- MPI中的通信模式主要包括哪两种? A. 直接通信和间接通信 B. 集合通信和广播通信 C. …
- 在MPI中,以下哪个函数用于获取当前进程在进程组中的编号? A. MPI_Comm_size B…
- 以下哪个通信域表示所有MPI进程的集合 A. MPI_COMM_NULL B. MPI_COMM_WORLD C. MPI_COMM_A…
- 以下哪个MPI函数用于非阻塞的接收消息 A. MPI_Irsend B. MPI_Recv C. MPI_Irecv D. …
- 以下哪个MPI函数用于缓冲模式下的阻塞发送消息 A. MPI_Ssend B. MPI_Bsend C. MPI_Send D. MPI_…
- 关于MPI阻塞通信,以下说法错误的是 A. 调用阻塞通信函数,进程将被阻塞,调用返回时,消息传递中所…
- 判断MPI非阻塞通信是否完成,并能在调用后会立刻返回的函数是 A. MPI_Test B. MPI_Waitany C. …
- MPI_Comm_split(comm, 0, rank, &newcomm) 等同于 A. MPI_COMM_WORLD B. MPI_COMM_SELF C. MP…
- MPI_Comm_split(comm, rank, rank, &newcomm)等同于 A. MPI_COMM_NULL B. MPI_COMM_WORL…
- 以下哪个MPI函数能够从一个数组中提取不规则的数据子集,形成新的用户自定义数据类型 A. MPI_Ty…
- 以下MPI用来构造用户自定义数据类型的函数中,哪个最为灵活 A. MPI_Type_create_struct B. MPI_…
- 以下哪个MPI函数能实现如下图的数据移动 A. MPI_Allgather B. MPI_Gather C. MPI_Bcas…
- 以下哪个MPI函数能实现如下图的数据移动和计算 A.MPI_Allreduce B.MPI_Scan C.MPI_Ga…
- 以下哪个MPI函数能实现如下图的数据分发 A. MPI_Gather B. MPI_Alltoall C. MPI_Bca…
- 同一个MPI进程在不同的MPI通信域里编号(rank)始终相同 A.对 B.错
- 任何MPI通信函数均必须在某个通信域内发生 A.对 B.错
9. CUDA编程
- 以下关于OpenACC说法错误的是 A. OpenACC以库函数的形式实现并行编程 B. OpenACC提供了…
- 一个CUDA kernel函数的调用,映射到GPU上对应于一个 A. Block B. Thread C. Grid D. SM…
- 以下哪个变量表示一个CUDA线程在线程块中的索引 A. threadIdx B. gridDim C. blockIdx…
- CUDA编程模型中以下哪种内存访问速度最快? A. texture memory B. shared memory C. local memory…
- CUDA中声明一个函数是在CPU端调用,在GPU端执行,应在函数声明处加上 A. __global__ B. __gpu__…
- CUDA中用__shared__修饰的变量存储在 A. 流式处理器内的寄存器或local memory B. GPU上的共享…
- CUDA中,哪种同步机制可以确保一个线程块中的所有线程都达到同一点后再继续执行? A. global() …
- 在CUDA中,主机与设备之间的数据传输主要使用哪个函数? A. memcpy B. move C. cudaMemcpy D. cop…
- CUDA中一个block的共享数据不能被另一个block的线程访问 A.对 B.错
- __syncthreads()可以同步不同CUDA块中的线程 A.对 B. 错
- OpenCL设备可分成一个或多个处理单元 (PE),每个处理单元又可进一步分成一个或多个计算单元 (CU) …