微软加速器除法运算

发布于 2024-08-25 06:47:59 字数 334 浏览 10 评论 0原文

我想在 Microsoft Accelerator 中执行相当简单的除法运算:

X = P / (1 + K * O')

其中 P、K 和 O 是向量,K * O' 执行点积运算。

我尝试了 PA.Divide(P, 1 + PA.Sum(PA.Multiply(K, O))) ,但是这不起作用,因为它给出了一个错误,指出提供给除法命令的矩阵具有不同的维度,这是有道理的,因为第二个参数应该只是一个标量。

我通过将第二个参数转换为数组然后使用其第一个元素来解决这个问题,但这会显着减慢计算速度。

如何在不先转换为数组的情况下执行此操作?

I would like to perform a fairly simple divide operation in Microsoft Accelerator:

X = P / (1 + K * O')

where P, K and O are vectors, and K * O' performs a dot product operation.

I tried PA.Divide(P, 1 + PA.Sum(PA.Multiply(K, O))), however this does not work as it gives an error saying the matrices supplied to the divide command are of different dimensions, which makes sense as the second argument should just be a scalar.

I got around this by converting the second argument to an array then using its first element, but this slows down computation significantly.

How can I perform this operation without converting to an array first?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

神回复 2024-09-01 06:47:59

我不知道 Accelerator 中的乘法逆元有多昂贵,但是如果您以这种方式重写表达式,则可以使用标量乘法:

X = P * (1 / (1 + K * O'))

其中 1 / (1 + K + O') 只是乘法逆元您已经计算的标量。

这是假设标量乘法可供您使用(它应该是 - 这是一个基本运算)。但当然我对加速器不熟悉。我只是从向量数学的角度来说。

I don't know how expensive multiplicative inversion is in Accelerator, but you can use scalar multiplication if you rewrite your expression this way:

X = P * (1 / (1 + K * O'))

Where 1 / (1 + K + O') is just the multiplicative inverse of the scalar you're already computing.

This is assuming that scalar multiplication is available to you (it should be - it's a fundamental operation). But of course I'm not familiar with Accelerator. I'm just speaking from a vector math point of view.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文