在可微编程中,ti.kernel
中无法使用 ti.svd()
操作. 例如如下代码片段
import taichi as ti
import numpy as np
ti.init(arch=ti.cuda, debug=True)
loss = ti.field(shape=(), dtype=ti.f32, needs_grad=True)
@ti.kernel
def func():
for i in range(1):
A = ti.Matrix([[1., 1., 1.], [0., 1., 1.], [0., 0., 1.]], dt=ti.f32)
U, S, V = ti.svd(A)
with ti.ad.Tape(loss, validation=True):
func()
print('END')
forward过程执行完之后显示报错
[I 09/08/24 19:42:12.757 26704] [auto_diff.cpp:taichi::lang::MakeAdjoint::visit@1334]
"unary_op_type_name(stmt->op_type)": "cast_bits"
[E 09/08/24 19:42:12.757 26704] [auto_diff.cpp:taichi::lang::MakeAdjoint::visit@1335] Not supported.
这个问题可以解决吗?