我知道这在不同的系统和实现中会有所不同,但我完全不知道OpenMP是否适合使用,因为在这里可以很容易地并行化代码,并且不需要很长时间来运行。例如,如果我有一个循环,这对于OpenMP来说很理想,但是在一个线程上运行只需要几个ms,那么开销会不会损失任何收益?
我的用法是实时渲染,在那里我们可能有20毫秒来生成每帧。所以通常情况下,我们不会有超过5-10毫秒的代码块.OpenMP是针对这种时间尺度的,还是只针对运行几秒钟的操作?
任何轶事/经验数据都是受欢迎的,也欢迎更多的官方消息来源。我想我主要对MSVC++和GCC OpenMP实现感兴趣。
我发现了一篇有趣的文章:http://software.intel.com/en-us/blogs/2010/06/02/using-openmp-to-parallelize-a-game/
发布于 2012-02-28 09:52:56
在没有数据的情况下,所有经验问题的答案是42 .
但说真的,你必须为你自己的硬件、软件和问题的配置找到你自己的答案。
是的,也许在1997年OpenMP首次发布的时候,典型的用例是相对重量级的计算线程,每一次都需要几秒钟。从那以后,处理器变得更快,实现也越来越好,我认为如果不进行基准测试,您的问题就不会有一个很好的答案。无论如何,不管你从中学到什么,你都要做基准测试,所以不要浪费时间,去编写代码。
您可能会相信OpenMP是无用的:但是您不会完全相信wrt您自己的需求的答案。
您可能会相信OpenMP是有用的:但是您不会完全相信wrt您自己的需求的答案。
您可能会得到许多相互矛盾的轶事证据:但是您不会完全相信wrt您自己的需求的答案。
做基准测试。让我们知道你是如何相处的,所以轶事(比如我正在写的垃圾)太长了,硬数据太少了。
不要丢失你的基准代码。随着您的经验的发展以及您的硬件、系统软件和应用软件的变化,请修改它们并重新运行它们。在没有数据的情况下,我确信一件事:你的问题的答案是一个移动的目标。
https://stackoverflow.com/questions/9479531
复制相似问题