我认为你需要准备的一些问题是: GPU中有多少种不同类型的内存? 什么是合并/非合并? 你能实现一个矩阵转置核吗? 什么是warp? 在多处理器内部,可以同时运行多少个warp? 块和线程之间的区别是什么? 线程之间可以相互通信吗?块之间呢? 你能描述一下缓存是如何工作的吗? 共享内存和寄存器之间的区别是什么? 哪些算法在GPU上表现更好?数据绑定还是CPU绑定? 将应用程序移植到CUDA需要执行哪些步骤? 什么是屏障? 什么是流? 你能描述一下内核的占用率是什么意思吗? 结构数组与数组结构有什么区别?
您有N个长度为M的向量(N>>M)。请告诉我您将如何设计核以评估距离矩阵。特别注意问题的分割方式以及线程协作可以用于提高占用率的方式。如果M>>N,那么您对这个问题的回答会发生什么变化?这里的想法不是让您编写代码,而是让您大声思考。这表明您真正知道如何使用GPGPU技术,而不仅仅是重复用户指南。