请教一个问题,请问在mpm的GIMP或者APIC算法中,是不是将颗粒携带的信息利用AoS储存计算速度会更快,例如:
ti.root.pointer(ti.i, MaxparticleNum).place(self.material, self.body, self.x, self.v, self.gradv, self.td, self.m, self.vol, self.vol0 .........)
感谢!
请教一个问题,请问在mpm的GIMP或者APIC算法中,是不是将颗粒携带的信息利用AoS储存计算速度会更快,例如:
ti.root.pointer(ti.i, MaxparticleNum).place(self.material, self.body, self.x, self.v, self.gradv, self.td, self.m, self.vol, self.vol0 .........)
感谢!
为什么稀疏矩阵写入数据的时候,速度比dense慢很多,感觉在mpm里用稀疏矩阵反而速度变慢了
测试代码:
import taichi as ti
import time
ti.init()
x = ti.field(ti.f32)
block = ti.root.bitmasked(ti.i, 1000)
block.place(x)
@ti.kernel
def loops():
for i in range(8):
# ti.append(x.parent(), i, i)
x[i] = i
s = time.time()
loops()
e = time.time()
print(e - s)
其中pointer->0.2105s
dense->0.0811s
dynamic->0.2379s
bitmasked->0.1005s
4核CPU
Hi @Otis , 使用 pointer
, bitmasked
等稀疏数据结构(空间稀疏)和稀疏矩阵还不是一回事儿。
还有在测试性能的时候,还需要考虑编译时间。一般测试性能会先跑一下kernel, 再测试性能。
loops()
s = time.time()
loops()
e = time.time()
print(e - s)
先编译后我又重新测试了一次速度,发现稀疏数据结构还是会比dense结构慢一倍左右