首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__builtin_prefetch,它读了多少?

__builtin_prefetch,它读了多少?
EN

Stack Overflow用户
提问于 2011-12-11 06:52:53
回答 1查看 23.4K关注 0票数 21

我正在尝试使用以下命令优化一些C++ (RK4)

代码语言:javascript
复制
__builtin_prefetch

我不知道如何预取整个结构。

我不明白有多少const void *addr被读取了。我希望加载fromto的下一个值。

代码语言:javascript
复制
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/

EN

回答 1

Stack Overflow用户

发布于 2011-12-11 07:05:04

它读取高速缓存线。缓存线的大小可能会有所不同,但在现代CPU上,缓存线的大小很可能是64字节。如果您需要读取多个缓存线,请查看prefetch_range

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8460563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档