选择性地使用 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. 默认情况下编译器不生成 gatherhint nop

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 优化章节

 

Einzelheiten zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.