为了账号安全,请及时绑定邮箱和手机立即绑定

__builtin_prefetch,它读多少?

__builtin_prefetch,它读多少?

C++
小怪兽爱吃肉 2019-12-05 16:05:03
我正在尝试通过使用优化一些C ++(RK4)__builtin_prefetch我不知道如何预取整个结构。我不知道const void *addr读了多少书。我希望有下一个值from和to加载。for (int i = from; i < to; i++){    double kv = myLinks[i].kv;    particle* from = con[i].Pfrom;    particle* to = con[i].Pto;    //Prefetch values at con[i++].Pfrom & con[i].Pto;    double pos = to->px- from->px;    double delta = from->r + to->r - pos;    double k1 = axcel(kv, delta, from->mass) * dt; //axcel is an inlined function    double k2 = axcel(kv, delta + 0.5 * k1, from->mass) * dt;    double k3 = axcel(kv, delta + 0.5 * k2, from->mass) * dt;    double k4 = axcel(kv, delta + k3, from->mass) * dt;    #define likely(x)       __builtin_expect((x),1)    if (likely(!from->bc))    {            from->x += (( k1 + 2 * k2 + 2 * k3 + k4) / 6);    }}链接:http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

它读取高速缓存行。高速缓存行的大小可能有所不同,但是在现代CPU上最有可能为64字节。如果您需要读取多条缓存行,请签出prefetch_range。


查看完整回答
反对 回复 2019-12-05
  • 2 回答
  • 0 关注
  • 1418 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信