1、一位新入职的暑期实习生对CUDA感到沮丧。他一直抱怨CUDA非常繁琐:他不得不将许多计划在主机和设备上都执行的函数声明两次,一次作为主机函数,一次作为设备函数。你会如何回应?
其实无需声明两次。可以在函数声明中同时使用 __host__ 和 __device__ ,这样编译系统会为同一个函数生成两个版本的目标文件,一个在主机上执行,只能由主机函数调用;另一个在设备上执行,只能由设备或内核函数调用。
2、如果我们需要使用每个线程来计算向量加法的一个输出元素,那么将线程/块索引映射到数据索引的表达式应该是什么:(A) i = threadIdx.x + threadIdx.y; (B) i = blockIdx.x + threadIdx.x; (C) i = blockIdx.x * blockDim.x + threadIdx.x; (D) i = blockIdx.x * threadIdx.x;
C
3、我们想用每个线程计算向量加法的两个(相邻)元素,假设变量 i 是线程要处理的第一个元素的索引。那么将线程/块索引映射到数据索引的表达式是什么?(A) i = blockIdx.x * blockDim.x + threadIdx.x + 2; (B) i = blockIdx.x * threadIdx.x * 2 (C) i = (blockIdx.x * blockDim.x + threadIdx.x) * 2 (D) i = blockIdx.x * blockDim.x * 2 + threadIdx.x
C
4、对于向量加法,假设向量长度为2000,每个线程计算一个输出元素,线程块大小为512个线程。网格中将有多少个线程?(A) 2000 (B) 2024 (C) 2048 (D) 2096
C
CUDA编程与GPU优化核心问题解析

最低0.47元/天 解锁文章
2195

被折叠的 条评论
为什么被折叠?



