请问taichi怎么才能使cpu利用率达到最高

我才用如下代码,发现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使用率是否有所提升? :slight_smile:

嗯嗯这样的可以的,因为我做了一个小型的离散元代码,但是发现他的cpu利用率很低(大概20%左右),因此我想寻找一下思路一般需要从哪几个方面进行改进,不知道一般大佬的修改思路是怎么样的 :grinning:Taichi离散元代码

1 个赞

问题的规模扩大后,还是 20% 占用率不?
如果问题规模很小,那么 CPU 占用率低并不奇怪,因为可能程序的串行部分占的比率会比较高。

是的 我大概加到一万多个颗粒还是20%左右,请问这是不是还是颗粒数太少的原因呢,感谢!

这段代码性能上不去有可能是伪共享的原因吧,先读后写,一级缓存没法重复利用