标签: cuda opencl gpgpu pycuda jocl
对于我的科学展览项目,我必须编写一个非常适合并行化的计算密集型算法。我读过有关OpenCL和CUDA的文章,它们似乎主要用于C / C ++。虽然对于我来说编写一个简单的主要内容并不困难,但我想知道如果我使用Java或Python绑定进行GPU计算会有多大的性能影响?具体来说,我对使用CUDA的性能影响更感兴趣,因为这是我计划使用的框架。
答案 0 :(得分:2)
一般来说,每次添加一个抽象层都会失去性能但是,在CUDA的情况下,这并不完全正确,因为无论使用Python还是Java,你最终都会在C / Fortran上编写CUDA内核,因此GPU方面的性能与使用C / Fortran相同(查看一些pyCUDA示例here)
坏消息是Java和Python永远无法在某些任务上实现C等编译语言的性能,请参阅this所以回答有关此主题的更详细讨论。 Here是关于C与Java的良好讨论,也是关于SO的。
关于解释语言和编译语言之间的性能比较有很多问题和讨论,所以我鼓励你阅读其中的一些。