什么样的应用程序应该重写为使用OpenCL?
Mac OS X 10.6附带OpenCL,但如果将重写为使用OpenCL,有多少应用程序可以获得更好的性能?什么样的应用程序应该重写为使用OpenCL?什么样的应用程序应该重写为使用OpenCL?
我的公司正在使用OpenCL进行科学计算。虽然我不是使用它的开发团队的一员,但我可以告诉你他们正在使用它做的一些事情:图像的大规模数据处理,想象重建以及以前编写的科学代码的大规模并行化。
基本上,OpenCL是相当先进的。除非你想/不得不处理它,否则最好留给那些需要它的人。我并不是想阻止你,但它是一个专为利基市场设计的利基产品。你可以更好地为潜在的就业目的研究其他编程领域。
OpenCL不是一个神奇的“增加性能”按钮。有几个先决条件需要满足才能获得性能提升,第一个是适当的硬件(一个Tesla GPU可以帮助)。对于可以从中受益的软件,它是任何执行大量并行计算的软件。这排除了大多数“日常”软件,并且留下图形处理应用程序(渲染器,图像处理程序),操作可能并行的大型数据处理应用程序以及科学应用程序。
通常,如果您编写的应用程序可以从OpenCL中获益,您就会知道您已经从中受益;)。
首先,您不能使用OpenCL“重写”整个应用程序。您仍然需要GUI的“正常”语言等。
使用OpenCL,您可以加速非常大的数据并行问题。大多数问题不属于这一类。
最有前途的候选人是图形/视频和声音处理。但是,需要对大量数据进行相同操作的每个问题都是合适的。
我想大多数需要更多CPU能力的正常应用程序最好使用Grand Central Dispatcher,它也用于QuickTime X.从这里给出的答案中,我得到OpenCL对于一组受限制的应用程序OpenCL非常具体是向前迈出的一步,因为它允许使用基于C的编程语言,可以在不同的平台上使用它。 – kiamlaluno 2009-12-18 03:49:53
GCD基本上只是一个非常复杂的线程池实现。 通过自己管理线程可以做得更好。 – 2009-12-18 16:57:03
正常的GeForce/Radeon显卡和专业阵容之间的OpenCL支持没有区别。 – 2009-12-18 03:17:48