基本信息
文件名称:2020-2021第二学期GPU程序设计期末考试.pdf
文件大小:127.65 KB
总页数:2 页
更新时间:2025-06-16
总字数:约1.47千字
文档摘要

GPU程序设计2020-2021学年期末考试

整理:lzh

1.(20分)填空选择,小题记不住,但主要是考GPU计算的基本概念和CUDA网格模型

2.(10分)简述共享内存的模型,共享内存冲突的解决办法和共享内存的两种使用方法

3.(10分)列出GPU中所有的内存种类及其特性

4.(15分)叙述统一内存(UnifiedMemory)的概念及其优缺点

5.(10分)结构体数组和数组结构体分别是什么,它们在CUDA的内存访问中有什么不同

6.(15分)讨论不同情况下的同步及其实现方法

7.(20分)阅读一段GPU规约的代码,回答如下问题

(1)(5分)for循环内为什么要__syncthreads()

(2)(5分)13行-21行if语句的作用

(3)(5分)13行-21行if语句中为什么不需要__syncthreads()

(4)(5分)代码中有哪些优化

1__global__voidreduceInterleaved(volatileint*g_idata,int*g_odata,unsignedintn){

2unsignedinttid=threadIdx.x;

3unsignedintidx=blockIdx.x*blockDim.x+threadIdx.x;

4int*idata=g_idata+blockIdx.x*blockDim.x;

5

6for(intstride=blockDim.x/2;stride0;stride=1){

7if(tidstride){

8idata[tid]+=idata[tid+stride];

9}

10__syncthreads();

11}

12

13if(tid32)

14{

15idata[tid]+=idata[tid+32];

16idata[tid]+=idata[tid+16];

17idata[tid]+=idata[tid+8];

18idata[tid]+=idata[tid+4];

19idata[tid]+=idata[tid+2];

20idata[tid]+=idata[tid+1];

21}

22

23if(tid==0)g_odata[blockIdx.x]=idata[0];

24}

25//记得大概长这样,细节有出入但是影响不大

注:数院好不容易第一年开了GPU编程的课,欢迎对高性能计算感兴趣的同学们选修