Windows Mobile 上的 GPU 访问

3
我正在为Windows Mobile 6.5构建一个应用程序,想知道是否有任何方法可以对各种计算进行硬件加速。我希望GPU为应用程序做一些工作,而不是依靠CPU来完成所有任务。我想使用C#,但如果不可能,那么C++也可以。感谢任何指导!
编辑-我想要将25-100个不同矩形的位置计算出来,以便将它们放置在屏幕上。这只是一个简单的例子,但我目前已经在一个单独的线程上做这些计算,所以我认为(由于这是几何计算)它是GPU的一个主要候选人。

1
只是为了明确,您是在询问GPGPU API,而不是渲染吗? - Ben Voigt
@Ben:我认为是的。“加速各种计算[在]GPU上而不是依靠CPU”。 - user703016
@Cicada:还有许多与渲染相关的计算可以在CPU或GPU上执行。提供一些澄清(以及可能的计算示例)将会很有帮助。 - Ben Voigt
@Ben:我同意。我只是有一种感觉,觉得OP在询问一般性的计算,但我可能错了。 - user703016
哇,抱歉我消失了!我刚开始一份新工作,忙得不可开交。无论如何,感谢你们的回答!我想要将计算类型“通用计算”卸载到GPU上,但它们将用于设置我的显示器视图。我会在帖子中更新一个示例。 - joe_coolish
1个回答

3
为了完全回答您的问题,我需要更多关于您正在尝试执行哪些计算的细节,但简短的答案是不行,在Windows Mobile设备和Microsoft公开的SDK中使用的GPU不适用于GPGPU(通用图形处理器上的通用计算)。
只有在GPU开始提供具有DirectX9的可编程顶点和像素着色器(以及8中的有限支持)时,GPGPU才真正变得实用。Windows Mobile 6.5设备使用的GPU与DirectX8周围的GPU非常相似,并且没有可编程的顶点和像素着色器: http://msdn.microsoft.com/en-us/library/aa920048.aspx 即使在具有CUDA等GPGPU库的现代桌面图形卡上,将计算卸载到GPU时获得性能增益也不是一项微不足道的任务。这些计算必须本质上适合GPUS(即能够大规模并行运行,并且对任何内存执行足够的计算,以抵消将其传输到GPU和返回的成本)。
这并不意味着在Windows Mobile 6.5上使用GPU加速计算是不可能的。然而,只有一小部分问题可以映射到无需着色器的固定函数管线中。如果您能通过渲染多边形并读取生成的图像来解决问题,那么就可以使用GPU来完成,但您需要做的计算可能不适合使用GPU,或者尝试使用GPU也不值得。

谢谢您的解释。根据计算量(或缺乏计算量)和计算类型,我猜想我应该找到优化算法的方法,而不是试图将它们推到GPU上。好吧,这值得一试! - joe_coolish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接