taichi开启debug模式(debug=True),前缀和数组如果太大,无法得到正确的结果,我的taichi版本为1.4.1,n=234000时,不能得到正确的结果,和np计算的结果比相差很大,也就是a!=0,
而当n=233000时可以算出正确的结果,a1=0.0。似乎不同taichi版本得到的结果也不一样,1.7.1版本里n=233000也算不对,小于10w才可以。
但是关闭debug模式,即使100w的数组前缀和也能算对。为啥开了debug反而算不对呢?
另外,device_memory_fraction越大,好像效率越低,这是为啥
import taichi as ti
import numpy as np
ti.init(arch=ti.cuda, device_memory_fraction=0.8, default_fp=ti.f32,debug=True)
n = 234000
prefix_sum_executor = ti.algorithms.PrefixSumExecutor(n)
arr = np.random.randint(low=8, high=13, size=(n))
arr_ti = ti.field(ti.i32, shape=(n))
arr_ti.from_numpy(arr)
prefix_sum_executor.run(arr_ti)
arr_pre_fix_np = np.cumsum(arr)
arr_pre_fix_ti = arr_ti.to_numpy()
a = np.linalg.norm(arr_pre_fix_np - arr_pre_fix_ti)
print(a)
n = 233000
prefix_sum_executor1 = ti.algorithms.PrefixSumExecutor(n)
arr2 = np.random.randint(low=8, high=13, size=(n))
arr2_ti = ti.field(ti.i32, shape=(n))
arr2_ti.from_numpy(arr2)
prefix_sum_executor1.run(arr2_ti)
arr2_pre_fix_np = np.cumsum(arr2)
arr2_pre_fix_ti = arr2_ti.to_numpy()
a2 = np.linalg.norm(arr2_pre_fix_np - arr2_pre_fix_ti)
print(a2)