一尘不染

预取数据以缓存用于x86-64

linux

在我的应用程序中,有一点我需要对大块连续的内存数据块(100
MB的内存)执行计算。我当时的想法是继续预取程序将来会接触的部分块,以便在我对该部分执行计算时,数据已经在缓存中。

有人可以给我一个简单的示例,说明如何使用gcc实现这一目标吗?我在_mm_prefetch某处阅读,但不知道如何正确使用它。还要注意,我有一个多核系统,但是每个核都将并行处理不同的内存区域。


阅读 320

收藏
2020-06-07

共1个答案

一尘不染

gcc使用内置函数作为低级指令的接口。特别适合您的情况__builtin_prefetch。但是,只有在访问模式不容易自动预测的情况下,使用此选项,您才应该看到可测量的差异。

2020-06-07