在taichi kernel (@ti.kernel)中如何实现 if id in self.list

def force_3(self):
    self.plate_stress[None] = 0.0
    for i, j in ti.static(ti.ndrange(1000, 1000)):  
        id = i * 1000 + j  
        if id in self.list:  # self.list: 是一个一维列表

我想请教一下如果在taichi kernel (@ti.kernel)中如何实现 if id in self.list: 这个功能,因为如果不使用@ti.kernel的话这段函数运行时间太长了。

小白第一次发帖,谢谢各位大神啦

in_flag = 0
for i in range(length(self.list)):
    if id == self.list[i]:
        in_flag == 1
        break
if in_flag:
    ...
1 Like

感觉这样效率可能不是特别高,如果list不是太长应该可以这么做