我正在为 Windows Mobile 6.5 构建一个应用程序,我想知道是否有任何硬件加速各种计算的方法。我想让 GPU 为应用程序做一些工作,而不是依赖 CPU 做所有事情。
我想使用 C#,但如果那不可能,那么 C++ 就可以了。
感谢您的指导!
编辑-
我想卸载到 GPU 的计算类型的一个示例是计算 25-100 个不同矩形的位置,以便将它们放置在屏幕上。这只是一个简单的示例,但我目前一直在单独的线程上进行此类计算,所以我认为(因为它是几何计算)它将是 GPU 的主要候选对象。
最佳答案
为了完整回答您的问题,我需要有关您尝试执行的计算的更多详细信息,但简短的回答是否定的,Windows Mobile 设备中的 GPU 和 Microsoft 公开的 SDK 不适合 GPGPU(通用计算在图形硬件上)。
只有当 GPU 开始为 DirectX9 提供可编程的顶点和像素着色器(并且在 8 中提供有限支持)时,GPGPU 才真正变得实用。 Windows Mobile 6.5 设备使用的 GPU 与 DirectX8 周围的 GPU 更相似,并且没有可编程的顶点和像素着色器: http://msdn.microsoft.com/en-us/library/aa920048.aspx
即使在带有 GPGPU 库(如 CUDA)的现代台式机显卡上,将计算卸载到 GPU 时获得性能提升也不是一件容易的事。计算必须本质上适合 GPUS(即能够大规模并行运行,并且在任何内存上执行足够的计算以抵消将其传输到 GPU 和返回的成本)。
但这并不意味着无法在 Windows Mobile 6.5 上使用 GPU 加速计算。有一小部分问题可以映射到没有着色器的固定功能管道。如果你能弄清楚如何通过渲染多边形并读回生成的图像来解决你的问题,那么你可以使用 GPU 来完成它,但你需要做的计算不太可能是合适的,或者它会是值得尝试。
关于c# - Windows Mobile 上的 GPU 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6449745/