如何使用英特尔预取pragma时,数据隐藏在一个对象
How to use intel prefetch pragma when data hidden inside an object?
Intel提供了一个预取pragma;例如
#pragma prefetch a
for(i=0; i<m; i++)
a[i]=b[i]+1;
将提前预取a
一定数量的循环周期,由编译器决定。
但是如果a
不是一个数组,而是一个类与[]
覆盖?如果operator[]
做一个简单的数组访问,还可以这样预取吗?
(大概这个问题也适用于std::vectors
)
找到答案的一种方法是尝试并查看程序集。如果有的话,只要在有和没有pragma的情况下对它进行基准测试。然而,我不确定是否预取pragma是你想要的:
http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011/compiler_c/cref_cls/common/cppref_pragma_prefetch_noprefetch.htm只有Intel®Itanium®处理器支持预取。
你真的是在为安腾写这篇文章吗?
在x86/x64系统上,像顺序内存访问这样的简单循环已经被硬件预取器很好地处理了。因此,手动预取可能根本没有帮助。
查看这里的预取示例:prefetch Examples?
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 只知道运行时的数据类型.如何将数据详细信息隐藏到使用它们的其他类
- pImpl、范围和隐藏数据成员
- 是否应隐藏所有数据成员
- 封装与数据隐藏
- 如何将隐藏的数据发送到 Pyqt 中的 QComboBOX
- 数据隐藏的原因
- 隐藏复合数据类型的某些字段,使其不被写入(或从hdf5文件中读取)
- 多态性和数据隐藏:基类是覆盖还是忽略派生类的访问限制?
- 在DDD中隐藏静态数据成员,或者只显示某些成员
- 如何使用英特尔预取pragma时,数据隐藏在一个对象
- 数据实际上是如何隐藏在类中的
- 在c++中隐藏数据