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