关于CUDA编程的面试问题?

Git*_*tmo 6 c cuda

我在一周的时间内接受了一次面试,这是一个入门级职位,涉及CUDA编程(希望与C一起).

我想知道是否有人可以提出一些我在面试中可以期待的面试问题.

我已经阅读了官方编程指南,但我现在并不是那么方便.

谢谢.

fab*_*ioM 21

我认为你应该准备的一些问题是:

  • GPU中有多少种不同的记忆?
  • 什么意思是合并/未合并?
  • 你能实现矩阵转置内核吗?
  • 什么是扭曲?
  • 在多处理器内可以同时运行多少个warp?
  • 块和线程有什么区别?
  • 他们之间可以进行线程通信 和块?
  • 你能描述一下缓存是如何工作的吗?
  • 共享内存和寄存器有什么区别?
  • 哪种算法在gpu上表现更好?数据绑定还是cpu绑定?
  • 您将应用程序移植到cuda的哪些步骤?
  • 什么是障碍?
  • 什么是流?
  • 你能描述一下内核的占用意味着什么吗?
  • 什么意思是阵列结构与结构数组?

  • 这应该是一次采访,而不是一个智力竞赛节目.你想问一些要求他们展示头部轮子如何转动的东西,而不是验证他们是否阅读了用户指南. (8认同)

drx*_*zcl 7

"你有N个长度为M的向量(N >> M).告诉我你将如何设计一个内核来评估距离矩阵.特别注意问题被细分的方式和线程的方式 - 操作可用于改善入住率.

如果M >> N,你对这个问题的回答会怎样改变?"

这里的想法不是为了让你编写代码,而是为了让你大声思考.这表明您确实知道如何使用GPGPU技术,而不仅仅是反复使用用户指南.


Tom*_*Tom 5

如果是科学角色,那么您可能会对浮点数和数值精度提出疑问,尤其是您应该查看NVIDIA SDK中的折减样本,因为这也说明了Fabrizio帖子中所有点的负载。