更新1.3.0后矩阵乘法出现错误?

背景

更新1.3.0后发现之前能够运行的程序出现了问题,仔细检查后发现应该是矩阵乘法运算符 @ 出现了错误,列向量@行向量应该得到一个矩阵,但是结果变成了一个标量。

想问下这算是一个bug吗?更新1.3.0后应该怎么算向量相乘得矩阵呢?

代码

import taichi as ti
ti.init()

v1 = ti.math.vec3(1,2,3)
v2 = ti.math.vec3(4,0,7)

@ti.kernel
def foo():
	r = v1 @ v2.transpose()
	print("r =", r)

a = v1 @ v2.transpose()
print("a =", a)

foo()

1.2.2 下的运行结果:

[Taichi] version 1.2.2, llvm 10.0.0, commit 608e4b57, win, python 3.9.13
[Taichi] Starting on arch=x64
a = [[ 4.  0.  7.]
 [ 8.  0. 14.]
 [12.  0. 21.]]
r = [[4.000000, 0.000000, 7.000000], [8.000000, 0.000000, 14.000000], [12.000000, 0.000000, 21.000000]]

1.3.0 下的运行结果:

[Taichi] version 1.3.0, llvm 15.0.1, commit 0f25b95e, win, python 3.9.13
[Taichi] Starting on arch=x64
a = 25.0
r = 25.000000

自 v1.3.0 起 taichi 会将 vector 与 matrix 类型彻底区分开,因此不再提供 vector.transpose()。对于你列出来的情形可以使用 v1.outer_product(v2)。参考 v1.3.0 release notes: Release v1.3.0 · taichi-dev/taichi · GitHub