gpt4 book ai didi

c++ - 当数据隐藏在对象中时如何使用 intel prefetch pragma?

转载 作者:可可西里 更新时间:2023-11-01 17:58:55 24 4
gpt4 key购买 nike

Intel 提供了预取编译指示,很有帮助;例如

#pragma prefetch a
for(i=0; i<m; i++)
a[i]=b[i]+1;

将预取 a 一定数量的循环周期,由编译器决定。

但是如果 a 不是一个数组而是一个覆盖了 [] 的类呢?如果operator[]做一个简单的数组访问,prefetch还能这样用吗?

(大概这个问题也适用于 std::vectors)。

最佳答案

找出答案的一种方法是尝试并查看程序集。如果还有其他问题,只需使用和不使用 pragma 对其进行基准测试。但是,我不确定 prefetch pragma 是否是您想要的:

The prefetch pragma is supported by Intel® Itanium® processors only.

http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011/compiler_c/cref_cls/common/cppref_pragma_prefetch_noprefetch.htm

您真的是为 Itanium 编写此代码吗?

在 x86/x64 系统上,硬件预取器已经很好地处理了像顺序内存访问这样的简单循环。因此,手动预取可能根本没有帮助。

有关预取示例,请参见此处:Prefetching Examples?

关于c++ - 当数据隐藏在对象中时如何使用 intel prefetch pragma?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7415722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com