我知道这在系统和实现之间会有所不同,但我完全不知道OpenMP是否可行,因为你可以使用易于管理的代码而不需要很长时间才能运行。例如,如果我有一个适合OpenMP的循环,但只需要几个ms就能在单个线程上运行,那么开销是否会消除任何收益?
我的用法是实时渲染,我们可能有20ms生成每个帧。因此,通常我们没有任何单个代码块占用超过5-10ms ... OpenMP是针对这种时间尺度的,还是仅针对需要运行几个秒的操作?< / p>
欢迎任何轶事/经验数据,以及更多“官方”消息来源。我想我主要对MSVC ++和GCC OpenMP实现感兴趣。
我找到了这篇有趣的文章:http://software.intel.com/en-us/blogs/2010/06/02/using-openmp-to-parallelize-a-game/
答案 0 :(得分:3)
当数据不可用时,所有经验问题的答案都是42 ......
但严重的是,对于您自己的硬件,软件和问题配置,您将不得不自己得出这个问题的答案。
是的,也许在1997年首次发布OpenMP时,典型的用例是针对相对较重的计算线程,每个花费几秒钟。从那以后处理器变得越来越快,实现越来越好,我认为如果没有基准测试,你会得到一个很好的答案。无论如何,无论你从SO学到什么,你都要进行基准测试,所以不要浪费时间去编码。
您可能会被说服OpenMP没用:但您根本不相信自己的要求。
您可能会说服OpenMP很有用:但您根本不相信自己的要求。
你可能会得到许多相互矛盾的轶事证据:但你不会完全相信你自己的要求。
获得基准测试。让我们知道你是如何进行的,因为轶事(比如我正在写的垃圾)太久了,对硬数据来说太短了。
PS不要丢失您的基准代码。随着您的体验发展以及硬件,系统软件和应用软件的变化,对其进行修改并重新运行。有一件事我确信没有数据:你的问题的答案是一个不断变化的目标。