我才用如下代码,发现cpu利用率与并行的规模有很大的关系,但是始终到不了80-90的利用率
import taichi as ti
ti.init()
num = 1110
a = ti.field(float, num)
@ti.kernel
def k():
for i in a:
a[i] = i
t = 0.
while t < 100:
k()
t += 1e-5
这段代码只有20%的利用率
我才用如下代码,发现cpu利用率与并行的规模有很大的关系,但是始终到不了80-90的利用率
import taichi as ti
ti.init()
num = 1110
a = ti.field(float, num)
@ti.kernel
def k():
for i in a:
a[i] = i
t = 0.
while t < 100:
k()
t += 1e-5
这段代码只有20%的利用率
这个程序计算量比较小,容易卡在 Python 侧,你试试设置 num = 10000000 以后CPU使用率是否有所提升?
嗯嗯这样的可以的,因为我做了一个小型的离散元代码,但是发现他的cpu利用率很低(大概20%左右),因此我想寻找一下思路一般需要从哪几个方面进行改进,不知道一般大佬的修改思路是怎么样的 Taichi离散元代码
问题的规模扩大后,还是 20% 占用率不?
如果问题规模很小,那么 CPU 占用率低并不奇怪,因为可能程序的串行部分占的比率会比较高。
是的 我大概加到一万多个颗粒还是20%左右,请问这是不是还是颗粒数太少的原因呢,感谢!
这段代码性能上不去有可能是伪共享的原因吧,先读后写,一级缓存没法重复利用