如果存在由混合CPU-GPU实现的矩阵添加应用程序(在CUDA(即)中使用pthreads,其中每个线程在主机CPU和GPU中执行部分矩阵添加),例如,如果矩阵大小为1000,前500将由主机CPU计算,其余由GPU计算,基本上计算在cpu和gpu之间分配,因此与仅CPU计算和仅GPU计算相比,这是最好的。 请帮助我理解这个概念。
是否有任何分析工具可以帮助在这3个之间找到这种计算性能?我是CUDA的新手,所以我们将不胜感激任何帮助/指导。
谢谢!
答案 0 :(得分:0)
CPU-GPU混合计算的问题是你需要在CPU上返回结果的问题是两者之间的延迟。如果你希望在GPU上进行一些计算并将结果返回到CPU上,那么在GPU上开始计算就可以轻松实现几毫秒的延迟,从而将结果反馈到CPU上,因此在GPU上完成的工作量应该很大。或者,在启动GPU计算和从GPU返回结果之间,您需要在CPU上进行大量工作。执行1000个元素矩阵添加是微不足道的工作量,因此您最好不要在CPU上执行整个计算。您还需要在CPU和CPU之间来回传输数据的开销。跨越PCI总线的GPU增加了开销,因此计算需要在两者之间传输少量数据,更倾向于混合解决方案。
如果您永远不需要将结果从GPU读回CPU,那么您就不会遇到延迟问题。例如,您可以在GPU上进行N体仿真,并在GPU上执行可视化,因此永远不需要CPU上的结果。但是,当您需要将模拟结果返回到CPU时,您必须处理延迟问题。