如何利用 Windows* 版英特尔® 线程调节器来分析 Linux* 应用

总结:

VTune™ 性能分析器 Windows* 版的英特尔® 线程调节器特性提供了功能强大的浏览器,可用于检查在改进应用代码期间收集到的数据。遗憾的是,该特性只能在 Microsoft Windows* 环境中运行。不过,“Enabling collector for Linux*”支持用户在其 Linux 机器上为其应用收集原生数据,以及在 Windows 机器上查看结果。本文介绍了其中的流程。

需要准备的工具:

  • 英特尔® VTune 性能分析器 9.1 Windows 版,包括:
    • Windows* 版英特尔® 线程调节器
    • Enabling collector for Linux*(tprofile_cl – 可通过安装 Tprofile3.1_XXXrdc_lin.tar.gz 获得))

该收集器可通过 VTune 性能分析器的产品下载区域下载获得,网址为 http://registrationcenter.intel.com

  • Linux* 版英特尔® 编译器(可选)

如欲了解有关购买或评估这些产品的信息,请访问 http://www.intel.com/software/products

二进制插桩:

对象:用于大多数基于 IA-32 和英特尔® 64 架构的 POSIX*、英特尔® 线程构建模块和 OpenMP*§ 应用。

方式:

1) 通过执行以下命令来设置面向 IA-32 架构的英特尔® 线程调节器环境:

# source /opt/intel/itt/tprofile/bin/32/tprofilevars.sh

或通过执行以下命令来设置面向英特尔® 64 架构的英特尔® 线程调节器环境:

# source /opt/intel/itt/tprofile/bin/32e/tprofilevars.sh

执行何种命令取决于您的环境。

2) 利用英特尔® 线程调节器命令行来运行应用

# tprofile_cl myapp

3) 将最新创建的包含 .tp 文件的结果目录(默认值 = threadprofiler)复制†回至 Windows 系统。

a. 可选:将二进制代码(包括任意 .so 文件)和源代码复制到 Windows 系统

4) 在 Windows 版英特尔® 线程调节器中打开†(文件:打开)bistro.tp。如果您的应用创建了多个进程.…..则针对主进程创建的所有进程均存在一个对应的 tprofile.pid.tp 文件。您将需要打开对应于您希望分析的进程的 tprofile.pid.tp 文件。

§面向英特尔® 线程调节器的二进制插桩能够更好地支持通过英特尔编译器提供的 OpenMP* 兼容性库(最新版本:libiomp5.so 或 libguide40.so)。该库已使用用户级同步 API,针对英特尔® 线程调节器进行了改进。默认情况下,该库与英特尔® 编译器一起使用。此外,该库也可与 OpenMP* GCC* 编译的应用一起使用。使用第三方 OpenMP* 库时,线程调节器仍能收集数据。但是,这种情况下英特尔® 线程调节器将无法理解 OpenMP 调用 - OpenMP 调用将被分析为 POSIX* 应用。

注意:英特尔® C++ 和Fortran 编译器(从 11.1 Update 1 (11.1.046) 版本到 11.1 Update 3 (11.1.059) 版本)中的 OpenMP* 兼容性库不兼容英特尔® 线程编译器。您需要使用更早版本的 OpenMP 库或随英特尔® C++ 和 Fortran 编译器 11.1 Update 4 (11.1.061)和更高版本)提供的 OpenMP 库。

源代码插桩:

对象:当二进制插桩不适用(如服务器)– 或所用机器为英特尔® 安腾® 架构系统时用于 POSIX* 应用。

方式:

1) 通过执行以下命令来设置面向 IA-32 架构的英特尔® 线程调节器环境:

# source /opt/intel/itt/tprofile/bin/32/tprofilevars.sh

或通过执行以下命令来设置面向英特尔® 64 架构的英特尔® 线程调节器环境:

# source /opt/intel/itt/tprofile/bin/32e/tprofilevars.sh

执行何种命令取决于您的环境。

2) 利用使用以下开关的英特尔® 编译器来编译应用:

-tprofile

3) 运行二进制

4) 将生成的 .tp 文件和 .tpd 文件复制†到 Windows* 系统。

5) 复制†二进制(包括任意 .so 文件)

a. 可选:将源代码复制到 Windows* 系统

6) 在 Windows 版英特尔® 线程调节器中打开†(文件:打开).tp 文件。

 

特定 OpenMP*:

对象:此模式专门用于 OpenMP* 应用。

方式:

1) 利用使用以下开关的英特尔® 编译器来编译应用:

-openmp_profile

2) 运行应用

3) 将生成的 guide.gvs 文件复制回到 Windows* 系统

a. 可选:将二进制代码(包括任意 .so 文件)和源代码复制到 Windows* 系统

4) 在 Windows* 版英特尔® 线程调节器中打开†(文件:打开)guide.gvs 文件。下载数据时,它会向您询问系统的频率。此时,请输入您用于运行二进制代码的 Linux* 系统的频率。


†在 Linux* 系统上交叉加载 Windows* 系统为将文件复制到 Windows* 系统或访问 Windows* 系统上的文件提供了另一种更加简便的方法。

对于英特尔® 线程调节器有用的编译器设置:

开关

目的

-g
(强烈推荐)

英特尔® 线程调节器使用此符号将地址关联到源代码行。

"Release" Build (-O2)
(强烈推荐)

如果您使用的不是标准生产开关(非 O0),执行一段代码所需的时间可能会改变。由此可能导致您分析和尝试优化一段不属于性能问题的代码。

-tprofile
(可选)

使用此设置进行源代码插桩。注意:仅英特尔® 编译器支持此设置。

对于利用支持英特尔® 线程调节器的英特尔® 编译器编译的 OpenMP* 应用有用的设置::

开关

目的

-openmp
(必需)

如果您正在进行二进制插桩分析,请使用此设置。

-openmp_profile
(可选)

如果您正在进行特定 OpenMP 分析,请使用此设置。


对于使用英特尔® 线程构建模块(支持英特尔® 线程调节器)的应用有用的设置:

开关

Purpose

-D
"TBB_USE_THREADING_TOOLS"
(强烈推荐)

此设置添加了用户级同步 API,支持英特尔® 线程调节器准确识别英特尔® 线程构建模块。

 

Per informazioni più dettagliate sulle ottimizzazioni basate su compilatore, vedere il nostro Avviso sull'ottimizzazione.