我的程序有一堆矩阵乘法和反演,这非常耗时。
我的电脑:CPU:intel i7; GPU:512MBNVIDIA®Quadro®NVS3100M
哪一个更有利于提高计算速度? OpenMP还是CUDA?
(ps。我认为一般来说,GPU有比cpu更多的内核,因此,CUDA可以比OpenMP提高多倍?)
答案 0 :(得分:1)
我猜这取决于您的应用程序是什么以及您如何尝试实施改进。请记住,每个优化都有权衡。例如,GPU通常使用半精度浮点,并且有一些编译器选项允许您绕过IEEE标准的某些方面,这会以牺牲精度等为代价带来一些额外的速度。
答案 1 :(得分:1)
根据我的经验(作为学校项目的工作,在大多数情况下,中等大小阵列的计算时间,我会说小于2000 * 2000,几乎相同,实际计算时间取决于工作加载你的计算机(通常当你使用openMP时,你会与其他人共享一个集群,所以要确保你单独运行你的应用程序,以便你可以获得更好的结果))
但是如果你擅长CUDA,GPU在这些计算方面非常强大,当我在我的CUDA项目上工作时,官方网站上有很多很好的资料。对于openMP,它只是一个库,如果你擅长c或c ++,不应该有任何问题让你使用它(但是openMP的编译器很麻烦~~,不要相信它,尝试记录任何东西)。
我认为你有CUDA的经验,我觉得不难找到一些好的例子。但是CUDA真的是假的,无法调试,所以我建议你先试试openMP,应该会更容易。