2013-01-31 37 views
-1

我的程序有一堆矩阵乘法和反转,这很耗时。想要提高矩阵计算,OpenMP或CUDA的运算速度吗?

我的电脑:CPU:intel i7; GPU:512MBNVIDIA®Quadro®NVS3100M

哪一个更适合提高计算速度? OpenMP或CUDA?

(PS。我普遍认为,GPU比CPU更多的内核,因此,CUDA可提高比OpenMP的更多多次?)

+2

您应该尝试它们并进行基准测试。 –

+0

是的,但是我会在1年多前学习一点CUDA,并且不了解OpenMP。学习OpenMP需要多长时间? – lightrek

+1

我希望你会使用优化库tbh。 –

回答

1

从我的经验(作为一个学校项目工作,在大多数情况下,一个中等大小的数组的计算时间,我会说不到2000 * 2000,几乎是相同的,实际的计算时间取决于您的计算机的工作负载(通常当你在openMP上工作时,你会与其他人共享一个集群,所以确保你单独运行你的应用程序,这样你可能会得到更好的结果))

但是,如果你擅长CUDA,GPU是这些计算的东西非常强大,当我在做我的工作时CUDA项目,官方网站上有很多很好的资料。对于openMP,它只是一个库,如果你擅长c或C++,不应该对你使用它有任何问题(但是openMP的编译器是错误的,不要相信它,尝试记录任何东西)。

而且我假设你有CUDA的经验,不难找到一些我认为很好的例子。但CUDA真的是虚拟的,无法调试,所以我建议您先尝试openMP,它应该更容易。

+1

当然可以调试CUDA! Nvidia也为cuda-gdb提供了强大的gui,你可以在visual studio或eclipse中使用eclipse! – hubs

1

我想这取决于你的应用是什么,你如何去试图实施改进。请记住,每个优化都有折衷。例如,GPU通常使用半精度浮点,并且有编译器选项允许您绕过IEEE标准的某些方面,这会以牺牲精度等为代价带来一些额外的速度。

+1

CUDA现在已经有了很长时间的双精度。我觉得这有点不可回答,它基本上是说“取决于”,而没有给出它所依赖的合理标准。 – us2012

+0

的确如此,尽管标准应该是原始问题的一部分;没有这些,就没有办法知道使用哪种“正确”的技术。 –