关于函数传入参数是list类型的时候遇到的问题

我在Python3.7.7中想要使用taichi提高我的程序计算性能,但是我的程序需要对列表进行操作。
当我的python函数传入参数数list类型的时候,我加上ti.kernel的修饰器就会报错。
这让我很迷茫,不知道该怎么解决这个问题,请求帮助,谢谢。
我的程序如下:

import taichi as ti
ti.init()
def index_of(a, list):
    for i in range(0, len(list)):
        if list[i] == a: return i
    return -1
@ti.kernel
def sort_by_values(list1: list, values: list):
    sorted_list = []
    while len(sorted_list) != len(list1):
        if index_of(min(values), values) in list1:
            sorted_list.append(index_of(min(values), values))
        values[index_of(min(values), values)] = math.inf
    return sorted_list
l1 = [0, 1, 2, 3, 4, 5]
vs = [225, 114, 123, 53, 654, 15]
r = sort_by_values(l1, vs)

Hi str,
Taichi目前暂时不支持将list直接传入Kernel,但是你可以把list转成numpy array进行传入,比如:

import taichi as ti
import numpy as np

ti.init(arch=ti.cpu)

x = ti.field(ti.i32, shape=3)
array = np.array([10, 20, 30])

@ti.kernel
def test(arr: ti.types.ndarray()):
    for i in range(3):
        x[i] = arr[i]

test(array)

好的,非常感谢。
我的最终程序计算任务需要太多这样的数组操作和字典操作了,或许并不适合使用taichi,有点可惜。

我上个帖子刚又问了一遍,看来大家都有这样的需求,哈哈哈 :joy:

1 个赞