在 CUDA C 中实现 X^i * Y 的和(i=0 到 k)

发布于 2024-10-01 01:30:50 字数 114 浏览 1 评论 0原文

我正在寻找技巧或研究论文来帮助我计算 X^i * Y 的总和(i=0 到 k),或更明确地说,Y + X^1 * Y +...+ X^k * CUDA C 中的 Y。其中 X 是 N×N 矩阵,Y 是 N×1 向量

I'm looking for tips or research papers that will help me perform the sum (i=0 to k) of X^i * Y, or more explicitly, Y + X^1 * Y +...+ X^k * Y in CUDA C. Where X is an N-by-N matrix, and Y is a N-by-1 vector

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

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

发布评论

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

评论(3

逆光飞翔i 2024-10-08 01:30:50

您应该查看Thrust

分解出 Y,然后进行扫描(使用乘法作为运算符),然后进行约简(使用加法作为运算符)。

You should check out Thrust.

Factor out the Y, then just do a scan (using multiplication as the operator) followed by a reduction (using addition as the operator).

暗藏城府 2024-10-08 01:30:50

我知道这不是您想要的,但是您不能将 Y 分解出来,然后将其与 X^i 的 sum(i=0 to k) 的结果相乘吗?

I know this isn't what you're looking for, but can't you factor the Y out and just right multiply it with the result of sum(i=0 to k) of X^i?

乱世争霸 2024-10-08 01:30:50

除了从总和中分解出 Y 之外,您还可以计算 X 的特征空间,然后非常有效地计算每个 X^i (计算总和无疑会将 X 提升到一系列幂,所以我会攻击它)。

更具体地说,计算 X 的特征值并形成特征值的对角矩阵,称为 Q。使用特征值,我们可以对角化X并创建一个新的矩阵D

(1)    D = Q^-1 X Q

因为D是对角的,我们可以非常有效地将其计算为任意幂i。应用(1)我们确定这一点

(2)    D^i = (Q^-1 X Q)^i

,此外,我们可以证明(2)相当于

(3)    D^i = Q^-1 X^i Q

最后,我们可以通过重新排列我们的方程和计算来有效地找到任何任意X^i

(4)    X^i = Q D^i Q^-1

(我想验证我的内存在这里,所以我在维基百科上找到了参考)。

Besides factoring out Y from the summation, you could compute the eigenspace of X and subsequently very efficiently compute each X^i (the slowest part of computing your summation will undoubtedly be raising X to a range of powers, so I'll attack that).

More specifically, compute the eigenvalues of X and form a diagonal matrix of the eigenvalues, call this Q. Using the eigenvalues, we can diagonalize X and create a new matrix D such that

(1)    D = Q^-1 X Q

Because D is diagonal, we can very efficiently compute it raised to any power i. Applying (1) we determine that

(2)    D^i = (Q^-1 X Q)^i

and furthermore, we can show that (2) is equivalent to

(3)    D^i = Q^-1 X^i Q

Finally, we can find any arbitrary X^i efficiently by rearranging our equation and computing

(4)    X^i = Q D^i Q^-1

(I wanted to verify my memory here, so I found a reference on Wikipedia).

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