1、考试时间:2024/6/13
2、考试科目:多核平台上的并行计算(老师:LiuWeiGuo)
一、当讨论矩阵 -向量乘法时,我们通常假设 m 和n,即矩阵的行数和列数,都能够被 t 整除,t 是线程的个数。但是,如果 m 和 n 不满足能被 t 整除的条件,那么用什么公式来分配数据?
二、14个元素,四线程划分,块划分,循环划分,块循环划分
三、
循环依赖问题
题目
四、点对点通讯与集合通讯的区别?
五、在冯·诺依曼系统中加人缓存和虚内存改变了它作为 SISD 系统的类型吗?如果加人流水线呢?多发射或硬件多线程呢?
六、如何保证 cache 一致性,有哪些方法?各方法有什么特点?
题目 下列两种矩阵乘法哪一个更快
七、
指出下面代码有哪些性能问题?指出原因并给出改进后的代码。
__global__ void reduce0(int *g_idata, int *g_odata) {
extern __shared__ int sdata[];
// each thread loads one element from global to shared mem
unsigned int tid = threadIdx.x;
unsigned int i = blockIdx.x*blockDim.x + threadIdx.x;
sdata[tid] = g_idata[i];
__syncthreads();
// do reduction in shared mem
for(unsigned int s=1; s < blockDim.x; s *= 2) {
if (tid % (2*s) == 0) {
sdata[tid] += sdata[tid + s];
}
__syncthreads();
}
// write result for this block to global mem
if (tid == 0) g_odata[blockIdx.x] = sdata[0];
}
八、解释什么是Cache伪共享,然后修改下面的代码
九、下列奇偶排序存在什么性能问题,给出优化后的奇偶排序
整体来说,不难,但是考的比较细致,不过确实都是ppt上的