gpt4 book ai didi

silverlight - 在 Silverlight 5 上使用 GPU 进行通用数学计算

转载 作者:行者123 更新时间:2023-12-03 06:14:24 28 4
gpt4 key购买 nike

我正在开发一个浏览器内的 Silverlight 应用程序,该应用程序具有一些相当计算密集型的操作,例如每秒运行数百次离散余弦逆变换或快速傅里叶变换。如果能够将尽可能多的数据卸载到计算机的 GPU 上,那将是很有值(value)的。我知道有some discussion在 Silverlight 3 和 4 中,使用像素着色器,但共识是,因为 Silverlight 3/4 没有为其像素着色器使用硬件加速,并且因为他们的像素着色器语言仅限于 2 级,所以它不会从而大大提高性能(如果有的话)。

但是,据说 Silverlight 5 具有更广泛的硬件加速图形,包括相当完整的 3D 管道。然而,我还没有听说是否有人能够利用这个管道来加速通用数学运算(如 FFT、DCT、IDCT 等)。有人尝试过吗?有关于从哪里开始寻找的指示吗?

最佳答案

我想我应该发回我到目前为止所发现的内容。简短的回答是,不,我不认为 Silverlight 5 上的 3D 管道可以用于此类事情。一方面,据我所知,作为管道一部分的像素着色器和顶点着色器实际上是在 GPU 上执行的(与 Silverlight 4 中的 2D 着色器不同,它是在 CPU 上执行的) 。

但这就是说:

(1) 我读到的所有内容都表明,将数据获取到 GPU 的速度非常快,但对于大多数机器来说,从 GPU 获取数据的速度要慢得多,约为毫秒。这使得我们不可能比在 CPU 上更快地向 GPU 加载执行 FFT 所需的数据、执行 FFT,然后将数据拉回。

(2) Silverlight 5 可以在 GPU 上执行的指令集非常有限。具体来说,它仅限于 HLSL Level 2 ,其可用指令和寄存器数量有限。我怀疑是否有可能在这些有限的指令内对 FFT 或 DCT 进行建模,充其量是非常困难且非常缓慢的。

(3) 但即使我们可以绕过这两个限制,据我所知,Silverlight 也没有任何能力读取 GPU 正在执行的计算结果。普通的 XNA(Silverlight 3D 功能所基于的框架)具有各种 GetData() 或 GetTexture() 方法,我认为您可以使用它们来读取一组计算的结果。但 Silverlight 5 版本中缺少这些等效方法。据我所知,在 Silverlight 5 中,GPU 是一个只写设备。您将着色器加载到上面,加载数据,扣动扳机,然后挥手告别。您的代码将永远不会再看到这些字节。

如果事实证明我错了,我会回到这里更新这个答案。但至少目前看来,这是一条死胡同。

[编辑 2011 年 10 月 10 日 - 根据 Shawn Hargreaves MS 表示,Silverlight 5 不支持这一点。他猜测为什么 (a) 很难让它在所有 GPU 驱动程序中一致工作,(b) 除了一小类演示软件之外的所有驱动程序-风格的问题,这没有任何意义。哦,好吧。]

关于silverlight - 在 Silverlight 5 上使用 GPU 进行通用数学计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7604577/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com