Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在GCC中禁用/启用预取?_C++_C_Gcc - Fatal编程技术网

C++ 如何在GCC中禁用/启用预取?

C++ 如何在GCC中禁用/启用预取?,c++,c,gcc,C++,C,Gcc,-O3是否在GCC中启用预取?如果是,如何禁用预取?是否有控制预取“攻击性”的选项?例如,每次迭代中要预取的数据量。根据GCC网站,当前可能的选项有: GCC中现有的数据预取支持包括: 通用预取RTL模式 针对多个目标的特定目标支持 一种\u内置的\u预取功能,对不支持预取或预取支持尚未支持的目标不执行任何操作 已添加到GCC中 由-fprefetch循环数组启用的一种优化,它预取循环中使用的数组 然后查看一下,-fprefetch循环数组需要明确启用(也就是说,即使使用-O3,它也没有启用

-O3是否在GCC中启用预取?如果是,如何禁用预取?是否有控制预取“攻击性”的选项?例如,每次迭代中要预取的数据量。

根据GCC网站,当前可能的选项有:

GCC中现有的数据预取支持包括:

  • 通用预取RTL模式
  • 针对多个目标的特定目标支持
  • 一种
    \u内置的\u预取
    功能,对不支持预取或预取支持尚未支持的目标不执行任何操作
    已添加到GCC中
  • -fprefetch循环数组
    启用的一种优化,它预取循环中使用的数组
然后查看一下,
-fprefetch循环数组
需要明确启用(也就是说,即使使用
-O3
,它也没有启用)

如果目标计算机支持,则生成预回迁指令 内存,以提高访问大型阵列的循环的性能

此选项可能生成更好或更差的代码;结果非常令人满意 取决于源代码中循环的结构

-Os
级别禁用

请注意,声明中称,目前在函数声明器(C99 6.7.5.3/7)的上下文中,它没有考虑数组的C99
static
关键字。这意味着“大数组”的大小及其真正含义完全由实现控制