我对GPGPU编程非常陌生,所以如果这个问题不是特别合适,请原谅我。据我了解,与通常的CPU编程相比,GPU编程是一项非常复杂的工程工作。必须注意发散性问题,切片,固定的内存分配以及主机设备通信/设备计算重叠。
经过一些研究后,我发现了推力库,它似乎试图模仿C ++ STL。很好 但是,基于我非常有限的经验,并且看到了获得良好性能所需的所有微观管理,我对性能有些怀疑。能否有效地内部处理所有复杂的编程部分?一些非常著名的库(例如PETSc)似乎使用了此软件包,这使我相信它应该以某种方式出现。
我想知道,与低级CUDA编程相比,对CUDA有更多经验和推力的人能否对软件包的性能说一两句话。什么时候可以使用推力?什么时候应该切换回CUDA?