选择性地使用 gatherhint/scatterhint 指令

面向英特尔® MIC 架构的编译器方法

选择性地使用 gatherhint/scatterhint 指令

概述

本章仅适用于 Composer XE 2013 第一版(2012 年 9 月,13.0.0.079 版本)和 Composer XE 2013 产品更新 1 (2012 年 11 月,13.0.1.117 版本)的编译器用户。同时,本章还介绍了早期英特尔® 至强™ 融核™ 协处理器(2011 年的 A0 步进) alpha 硬件存在的已知问题以及解决该问题的未定义选项。

-mGLOB_default_function_attrs=”use_gather_scatter_hint=on” 编译器选项用于生成 gatherhint/scatterhint 指令。Composer XE 2013 更新 2 和更高版本(2013 年 2 月中旬后)默认(无需选择)启用该选项。当您的代码进行非单位步长访问和/或通过指针或索引数组使用间接寻址时,可以使用该选项。

主题

英特尔编译器解决了早期英特尔® 至强™ 融核™ 协处理器 alpha 硬件(A0 步进,2011)存在的 bug,该硬件与生成 gatherhint/scatterhint 相关:

编译器行为:

  1. 1. 默认情况下,编译器不生成 gatherhint 和 nop

  2. 2. 当指定 -mGLOB_default_function_attrs=”use_gather_scatter_hint=on” 时,则生成 gatherhint 和 nop——nop 能解决早期英特尔® 至强™ 融核™ 协处理器 alpha 硬件(A0 步进,2011)存在的 bug。

gatherhint
gatherhint
nop
gather

将该选项添加到当前编译器中可以获得 gatherhints 优势但是也会因 nop-插入导致更多损耗。

3. 此外,如果指定选项 –mCG_knc_insert_nop_after_gatherhint=FALSE,则不生成变通方案 nop——英特尔® 至强™ 融核™ 协处理器 B1 步进解决了该基础硬件问题,因此如果您使用 B1 (或更高版本) 硬件则可以添加该选项。如果在更早的步进中使用该选项(与之前的选项一起使用),可能会因为硬件 bug 发生故障。该选项可能无法提升性能,但可以在开启和关闭该附加选项的两种情形下测试 -mGLOB_default_function_attrs=”use_gather_scatter_hint=on”。

要点

gatherhint/scatterhint 指令适用于带有非单位步长内存访问的代码以及通过指针或索引数组使用间接寻址的代码。Composer XE 2013 更新 2 和更高版本的编译器(2013 年 2 月后)默认启用 -mGLOB_default_function_attrs=”use_gather_scatter_hint=on”。本文信息仅适用于 Composer XE 2013 产品更新 1 和更早的版本。

下一步

要在英特尔® 至强融核™ 协处理器上成功调试您的应用,请务必通读此指南,并点击文中的超链接查看相关内容。本指南提供了实现最佳应用性能所要执行的步骤。

返回高级 MIC 优化章节

Para obter informações mais completas sobre otimizações do compilador, consulte nosso aviso de otimização.