英特尔® 至强融核™ 协处理器调试用例概述

简介

面向 Linux* 的英特尔® Composer XE 2013 包括英特尔® 调试器对于运行在主机系统上并可在英特尔® 至强融核协处理器上创建卸载进程的异构应用的编码问题该调试器可提供若干分析与追踪方法。另外,英特尔® 调试器只允许调试协处理器代码。

支持英特尔® 至强融核协处理器的 3 种可用调试解决方案如下

1.     面向英特尔® 至强融核协处理器的英特尔® 调试器的 Eclipse* IDE 插件集成

2.     面向英特尔® 64 和英特尔® 至强融核协处理器的命令行英特尔® 调试器

3.     3. 面向英特尔® 至强融核协处理器的 GNU* 项目调试器 (GDB*)

其中前两种解决方案随面向英特尔® 至强融核协处理器的英特尔 Composer XE 2013 一起分发。GDB 发布请访问http://software.intel.com/en-us/forums/topic/278102

本白皮书介绍了这 3 种调试解决方案的设置与使用详情并概述了使用模式与特性集。这组灵活的解决方案可提供满足各类调试要求的方法,发现高度线程化异构执行环境中的编码问题与运行故障。

该英特尔调试器的特性集旨在提高这些高度线程化环境中的调试效率更快速地发现并发性方面的问题。这些特性包括:

·         线程专有运行控制

·         OpenMP 对象显示

·         高级 C++ 模板感知

·         m512i 矢量寄存器视图

·         m512i 矢量评估

面向英特尔® 至强融核协处理器的英特尔调试器插件集成至流行的 Eclipse IDE 是最新的调试解决方案也是目前唯一一种支持调试多个英特尔® 至强融核协处理器同时使用的设置的方案。

Eclipse IDE 调试启动程序中IDB-MIC 定义在调试配置下。您可切换至 Eclipse 调试视图开始在可能包含您的项目的相同 Eclipse IDE 内进行调试。进入卸载段后,调试器会自动切换至运行英特尔® 至强融核协处理器的代码的视图与控制。

下图 1概括了用于主机代码与协处理器代码同时调试的异构调试模式的卸载代码调试流程。


1:卸载进程创建与调试器连接流程

调试器安装与前提条件

面向英特尔® 至强融核协处理器的英特尔® 调试器是面向 Linux* 的英特尔® Composer XE 2013 的组件。因此,在运行英特尔 ® Parallel Studio XE 2013 安装包的安装脚本时,它会自动安装。

该安装程序将引导您完成安装流程它可能需要您接受许可协议并选择安装位置与待装组件。

如果您还想另外使用基于 Eclipse* 的图形用户界面请确保具备

·         X-Windows 支持

·         安装的 Java 运行时环境 (JRE) 1.5 1.6 也称为 6.0),以使用面向独立调试解决方案的 Eclipse* 框架

·         Eclipse* IDE 7.0 “Helios”8.0 “Indigo” 或面向 C/C++ 开发人员的 8.1 “Juno”基于安装的 Eclipse* 3.7.x以使用英特尔® 调试器与 Eclipse* 的集成

英特尔 Composer XE 与英特尔调试器的安装一完成您就可为它的环境变量设置

$ source /opt/intel/composerxe/bin/compilervars.sh intel64

这还将设置英特尔调试器的环境。

不建议只使用 idbvars.sh (/opt/intel/composerxe/bin/idbvars.sh ) 环境设置脚本因为您的代码库在库路径等方面将很可能具有编译器环境依赖性。恰当解决这些库路径依赖性将使调试更加便利。

借助 Eclipse 调试英特尔® 至强融核协处理器应用

借助 Eclipse 调试英特尔® 至强融核协处理器应用概述

英特尔® Composer XE 2013 可通过支持预定义的代码段在英特尔® 至强融核协处理器上执行或构建一个本地运行在英特尔® 至强融核协处理器上的应用扩展英特尔® C++ Composer XE 2013 和英特尔® Fortran Composer XE 2013 产品的特性集。

异构应用的调试解决方案用作 Eclipse CDTC/C++ 开发工具的插件集成。

建议 C/C++ 开发人员下载安装有 CDT Eclipse 套件。

Eclipse 3.7 Eclipse CDT 8.0 8.1 支持基于 Eclipse 的调试解决方案。

您必须在可行的 X Window System 环境中使用基于 Eclipse 的调试解决方案。

Eclipse* 中添加编译器和调试器

面向 Linux* 操作系统的英特尔 C++ 编译器可提供编译器和英特尔调试器与 Eclipse CDT 的集成支持您在可视的交互式环境中开发、构建和调试您的英特尔 C/C++ 项目。

如欲向您的 Eclipse 配置中添加英特尔 C++ 编译器产品扩展

1. 开启 Eclipse
2.
选择或创建工作区。例如利用已有的代码选择或创建 makefile 项目。更多信息请见 Eclipse New Project(新项目)向导。Makefile 需要包含规则 "all:",以构建整个项目。
3.
选择 Help帮助 > Install New Software安装新软件
4.
点击 Work with执行字段旁边的 Add添加按钮。
1. Add Site
添加站点对话框打开。
5.
点击 Local本地按钮并浏览相应的英特尔 CDT 集成目录
install_dir/eclipse_support/cdt7.0/eclipse
install_dir/eclipse_support/cdt8.0/eclipse
6.
点击 OK(确认)
7.
请勿选择 Group items by category(分类组项目)
8.
选择以英特尔开头的选件包括英特尔调试器 (IDB) —— 如果您想选用它并点击 Next下一步
9.
遵循安装说明。
10.
当被问到是否想要重启 Eclipse 请选择 Yes

Eclipse 重启后您可创建并执行使用英特尔 C++ 编译器的 CDT 项目。

调试异构应用

异构应用具有运行在英特尔® 64 主机和英特尔® 至强融核协处理器上的进程。一般而言,这种应用会将卸载模式用于英特尔® 至强融核协处理器。

如欲启动并调试异构应用您需要新创建具有适于英特尔® 调试器的设置的调试配置。

如欲创建调试配置,请:

1. 选择 Run(运行) > Debug Configurations(调试配置)....
2.
选择调试配置类型 C/C++ ApplicationC/C++ 应用)
3.
点击 New新建按钮。
4.
输入配置名称。




5. Main主菜单选项卡上查找进程启动程序信息并点击Select other选择其它....出现 Select Preferred Launcher选择首选启动程序对话框。



6. 浏览 Use configuration specific settings使用配置特定设置复选框。
7.
选择 UIDB-MIC (DSF) Create Process Launcher(创建进程启动程序)
8.
点击 OK确认
Select Preferred Launcher
选择首选启动程序对话框关闭。
9.
如果您想要 IDB-MIC 成为默认启动程序请选择 Window窗口 > Preferences偏好),扩展 Run/Debug运行/调试并选择 Launching启动。相应地改变默认启动程序。
10.
切换至 Debugger(调试器)选项卡。
11.
选择 Debugger Options调试器选件下的 Main主菜单选项卡。请确保字段 IDB Debugger IDB 调试器.中正确指定有可执行的调试器路径。IDB DebuggerIDB 调试器)默认包含有开始运行脚本 idb_mpm。由于 composerxe 环境是稍早提供的,因此无需改变这点。



12. 返回 Debug Configurations调试配置对话框的 Main主菜单选项卡。
13.
C/C++ ApplicationC/C++ 应用进入您希望调试的应用的路径。



14. 点击 Apply(应用)保存配置改动。

如此,使用英特尔调试器调试英特尔® 至强协处理器应用的配置便设置完成,可供使用。如欲使用该配置调试您的应用,请点击 Debug Configurations(调试配置)对话框中的 Debug(调试),或关闭该对话框并选择菜单栏中的 Run(运行) > Debug(调试),或点击 Debug(调试)按钮。
15.
如欲访问应用中所包含共享对象的符号信息并对这种对象进行源级调试您还将需要在 Debug Configurations调试配置对话框中指定共享对象的搜索路径您可将它添加在Shared Libraries共享库选项卡下。



卸载进程一旦启动且调试器在协处理器上与它连接那么协处理器调试线程就被显眼地标记为 core:mic<n>以指定协处理器 —— 当前调试代码运行在它之上 —— 的编号。运行在主机上的线程被标记为 core:local

Eclipse* IDE 的统一 GUI 视图中您可使用与进入卸载代码段之前完全相同的源窗口和相同的调试环境继续调试源代码。

只在协处理器上进行调试

如欲仅在协处理器上进行调试您需要连接运行在英特尔® 至强融核协处理器上的应用。使用适合英特尔® 调试器的设置,创建新的调试配置,以实现这一目的。

如欲仅在协处理器上进行调试

1. 选择 Run运行 > Debug Configurations调试配置....
2.
选择调试配置类型 C/C++ Attach to ApplicationC/C++ 连接至应用)
3.
点击 New新建按钮。
4.
输入配置名称。
5.
Main主菜单选项卡上查找进程启动程序信息并点击 Select other选择其它....
出现 Select Preferred Launcher选择首选启动程序对话框。
6.
浏览 Use configuration specific settings使用配置特定设置复选框。
7.
选择 IDB-MIC (DSF) Attach to Process Launcher(连接至进程启动程序)




8. 点击 OK确认
Select Preferred Launcher
选择首选启动程序对话框关闭。
9.
切换至 Debugger调试器选项卡。
10.
Intel® Xeon Phi™ Coprocessor Options英特尔® 至强融核协处理器选件浏览 Attach to Intel® Xeon Phi™ Coprocessor连接至英特尔® 至强融核协处理器对话框。11. Card(卡片)下拉菜单中选择理想的协处理器。12. File Location文件位置浏览与您想要连接的进程相关的符号文件。13. 点击 Debug(调试)

调试器开始运行Select a Process选择进程对话框打开并显示一列运行的进程。
14.
选择您想要连接的进程并点击 OK(确认)

连接英特尔® 至强融核协处理器应用的调试配置设置完成,调试会话开启。

无限工作循环 (Endless Worker Loop )

如果使用断点开始调试不可行那么您或可使用无限工作循环。

就确保您的本地或英特尔® 至强融核协处理器端应用中的无限工作循环顺利执行甚至使用最强编译器优化方面推荐的实施方式如下 C/C++ 为例):

void attach_idb() {
    volatile int loop = 1;
    do {
        volatile int a = 1;
    } while (loop);
}

在适合连接该调试器的位置调用此函数。

这是必要的因为当面向英特尔® 至强融核协处理器的英特尔® 调试器连接该进程调试器可随机关闭目标上的位置。一般而言,这是等待从主机端获取工作的调度程序中的一个位置。

对卸载代码而言您还可进行空卸载然后在 CPU 上进行读取 Fortran 为例):

!dir$ offload begin target(mic)
!dir$ end offload
   
!
读取临时 var。花时间连接英特尔® 至强融核然后输入某个值继续操作。
!
这种技术可能不总是适用,但更易于应用
读取*、临时

调试命令行上的英特尔® 至强融核协处理器应用

调试命令行上的英特尔® 至强融核协处理器应用概述

如欲了解有关在英特尔® 至强融核协处理器上进行命令行调试的详细阐述请查阅标题如下的单独白皮书

调试命令行上的英特尔® 至强融核协处理器目标应用

面向命令行上的异构应用的调试解决方案包括 2 个单独的调试器

主机调试器

使用 $ idbc 启动命令行主机

调试器

目标调试器

·         对于异构应用当编译器运行启动了异构应用在协处理器上执行的部分时启动目标调试器。

·         对于本地运行在英特尔® 至强融核协处理器上的应用这是您用于调试应用的唯一调试器。使用 $ idbc_mic -tco -rconnect=tcpip:mic[n]:port 启动命令行

目标调试器

例如使用默认端口输入第一个 MIC 设备的 idbc_mic -tco -rconnect=tcpip:mic0:2000

默认:

<port> = 2000

若不 mic[n] 指定特定的英特尔® 至强融核协处理器您也可使用 172.31.x.x 格式的 IP 地址。

–tco 参数会通知调试器远程调试连接已被请求。–rconnect 参数可为调试器提供通信协议、目标 ip 地址和通信端口

命令行版调试器不支持自动连接特性。如果您想同时调试应用的主机和协处理器版本,我们强烈建议您使用基于 Eclipse* 的调试解决方案。

只在协处理器端上进行调试

如果您只想手动在协处理器上开启应用并连接它那么该进程必须包含无限工作循环。

您可能只想在协处理器上调试应用。如果应用是异构应用请在协处理器上开启进程然后将目标调试器连接该进程。如果编写的应用需在本地的英特尔® 至强融核协处理器上运行,请使用目标调试器启动该应用。

1.     将应用的调试版本 (debug build) 上传至协处理器。

2.    2. 使用下列命令在主机上启动面向英特尔® 至强融核协处理器的远程调试器

idb_mic -tco -rconnect=tcpip:mic[n]:port

有关 IP 地址分配至协处理器的信息请登录 http://www.intel.com/software/mic 查阅 MPSS 文档。

默认端口号是 2000

例如使用默认端口输入第一个英特尔® 至强融核协处理器设备的 idb_mic -tco -rconnect=tcpip:mic0:2000

3.      

4.    如果您的应用未基于相同的系统或包含调试信息的共享对象已从原始位置移开您可能需要告知调试器在哪里搜索应用的特定调试信息。使用以下命令

(idb) set solib-search-path path[:path]



(idb) set solib-search-path /usr/linux-k1om-4.7/linux-k1om/lib64/lib:/usr/linux-k1om-4.7/x86_64-k1om-linux/lib64

为了确保调试器使用正确的目标 Linux* 运行时库

您可使用相应的显示命令语法获得搜索路径中的所有目录列表:

(idb) show solib-search-path

5.     使用调试器控制应用

·         如果您正在调试异构应用请运行该应用并使调试器连接它。

·         使用以下命令

卸载代码
(idb) attach <pid>
/opt/intel/composerxe/lib/mic/offload_main

本地应用
(idb) attach <pid> <binary path on development host>

·         如果您为了使应用运行在本地的英特尔® 至强融核协处理器上而正对其进行调试请使用该调试器启动该应用

1.
指定远程可执行的文件
(idb) file-remote target-bin-path
2.
指定包含调试信息的文件
(idb) file host-bin-path

  在设置断点及启动应用前您想要实施的所有其它事项后可启动应用

(idb) run

该调试器启动应用或连接至应用的进程并中断它。

调试协处理器应用时共享库 libmyodbl-service.so 需要手动上传。

实现方式是创建重叠以便在启动时上传文件。遵循关于如何使用 MPSS readme.txt 重叠的说明,实施这一特定重叠所需的步骤大致如下:

1.    在包含以下内容的协处理器目标上创建 /etc/sysconfig/mic/conf.d/myo.conf

# MYO
卸载文件

Overlay / /opt/intel/mic/myo/config/myo.filelist

2.     在包含如下内容的调试主机上创建 /opt/intel/mic/myo/config/myo.filelist

dir /lib64 755 0 0

file /lib64/libmyodbl-service.so

opt/intel/mic/myo/lib/libmyodbl-service.so 755 0 0

无限工作循环 (Endless Worker Loop )

如果使用断点开始调试不可行那么您或可使用无限工作循环。

就确保您的本地或英特尔® 至强融核协处理器应用中的无限工作循环顺利执行甚至使用最强编译器优化方面推荐的实施方式如下C/C++ 为例):

void attach_idb() {
    volatile int loop = 1;
    do {
        volatile int a = 1;
    } while (loop);
}

在适合连接该调试器的位置调用此函数。

这是必要的因为当面向英特尔® 至强融核协处理器的英特尔® 调试器连接该进程调试器可随机关闭目标上的位置。一般而言,这是等待从主机端获取工作的调度程序中的一个位置。

对卸载代码而言您还可进行空卸载然后在 CPU 上进行读取 Fortran 为例):

!dir$ offload begin target(mic)
!dir$ end offload
   
!
读取临时 var。花时间连接 MIC并输入某个值以继续操作。
!
这种技术可能不总是适用,但更易于应用
读取*、临时

GNU* 项目调试器 – GDB*

安装

目前如欲了解支持英特尔® 至强融核协处理器的 GNU* 项目调试器 GDB*请访问

http://software.intel.com/en-us/forums/topic/278102

如欲下载 GDB*请登录

http://registrationcenter.intel.com/irc_nas/2618/gdb-intel-mic-2.1.3126.tgz

GDB* 自述文件网址

http://registrationcenter.intel.com/irc_nas/2618/gdb-intel-mic-2.1.3126-readme.txt

调试器安装

1.     卸载 gdb-intel-mic-2.1.xxxx.tgz

2.     拆包
$ tar xzf gdb-intel-mic-2.1.xxxx.tgz

3.     复制 gdb/gdbserver 到英特尔® 至强融核协处理器

$ scp gdb gdbserver root@mic0:/usr/bin

或使用用户账户

$ scp gdb gdbserver mic0:

借助 GDB* 本地调试英特尔® 至强融核协处理器

1.     在英特尔® 至强融核协处理器上运行 GDB*

$ ssh –t mic0 /usr/bin/gdb

或使用用户账户

$ ssh –t mic0 ./gdb

2.    通过 process-id 连接运行的应用

(gdb) shell pidof <my_application> <pid>

其中<pid> 表示 process-id<my_application> 是您想要调试的应用的名称。

(gdb) attach <pid>

3.     直接通过 GDB* 运行应用

(gdb) file /target/path/to/applicaton

(gdb) start

借助 GDB* 进行远程调试

1.     在您的本地主机上运行 GDB*

$ /usr/linux-k1om-4.7/bin/x86_64-k1om-linux-gdb

2.     在英特尔® 至强融核协处理器上启动 gdbserver

(gdb) target extended-remote | ssh –T mic0 gdbserver –-multi –

使用 |ssh -T mic0 gdbserver --multi – 进行远程调试

使用 stdio 进行远程调试

3.     通过 process-id (pid) 连接运行的应用

(gdb) file /local/path/to/applicaton

(gdb) attach <remote-pid>

4.     直接通过 GDB* 运行应用

(gdb) file /local/path/to/applicaton

(gdb) set remote exec-file /target/path/to/application

结论

用于调试运行在英特尔 64 架构和基于英特尔® 至强融核协处理器的协处理器上的异构代码的英特尔调试器解决方案可提供一套只调试协处理器代码或同时调试主机和协处理器代码的方法。

全新 Eclipse IDE 集成统一调试器插件的功能仍然在开发中但该集成调试器是面向多卡调试支持的出色解决方案。它允许在熟悉的 Eclipse IDE 开发环境中进行调试。成对的独立 GUI 调试器的大量并行特性正不断迁移至新的调试解决方案。

矢量寄存器窗口可提供 m512i 寄存器使用的程序流程和执行上下文方面的描述同时执行英特尔® 至强融核协处理器代码库。

需要仅限命令行的调试方法的人员也可使用它。

其它资源

文档
如欲了解可用英特尔调试器命令行语法的详情请参考位于下述位置的命令行参考手册

/opt/intel/composerxe/Documentation/en_US/debugger/cl/index.htm

另外整个文档的指针、入门指南和调试器用户界面集成用户手册位于

/opt/intel/composerxe/Documentation/en_US/debugger/debugger_documentation.htm

使用 Eclipse 集成调试解决方案时可通过英特尔调试器图形用户界面的 Help帮助下拉菜单或 Eclipse IDE 的调试器视图的 help帮助下拉菜单查看完整的调试器用户手册。

MPSS 2.1 自述文件
http://registrationcenter.intel.com/irc_nas/2618/readme.txt

GNU* 项目调试器 GDB* 自述文件
http://registrationcenter.intel.com/irc_nas/2618/gdb-intel-mic-2.1.3126-readme.txt

分发位置

英特尔® Composer XE 2013
http://software.intel.com/en-us/intel-composer-xe/

Java* 运行时环境
http://www.java.com

Eclipse* CDT:
http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers-includes-incubating-components/indigosr2

GNU* 项目调试器 GDB*
目前如欲了解支持英特尔® 至强融核协处理器的 GNU* 项目调试器 GDB*请访问

http://software.intel.com/en-us/forums/topic/278102

请登录下列网址下载 GDB*

http://registrationcenter.intel.com/irc_nas/2618/gdb-intel-mic-2.1.3126.tgz

作者简介

Robert Mueller-Albrecht 是英特尔公司的技术咨询工程师主要负责两方面工作面向嵌入式计算的软件开发工具解决方案和跨各类基于英特尔® 架构的设计的调试解决方案。在 2001 年进入英特尔之前,他曾为 CAD-UL AG 工作,并获得了凯特斯劳滕技术大学的物理学硕士学位。

声明

本文件中包含关于英特尔产品的信息。本文件不构成对任何知识产权的授权,包括明示的、暗示的,也无论是基于禁止反言的原则或其他。除英特尔产品销售的条款和条件规定的责任外,英特尔不承担任何其他责任。英特尔在此作出免责声明:本文件不构成英特尔关于其产品的使用和/或销售的任何明示或暗示的保证,包括不就其产品的(i)对某一特定用途的适用性、(ii)适销性以及(iii)对任何专利、版权或其他知识产权的侵害的承担任何责任或作出任何担保。

 

除非经过英特尔的书面同意认可,英特尔的产品无意被设计用于或被用于以下应用:即在这样的应用中可因英特尔产品的故障而导致人身伤亡。

 

英特尔有权随时更改产品的规格和描述而毋需发出通知。设计者不应信赖任何英特产品所不具有的特性,设计者亦不应信赖任何标有保留权利未定义说明或特性描述。对此,英特尔保留将来对其进行定义的权利,同时,英特尔不应为因其日后更改该等说明或特性描述而产生的冲突和不相容承担任何责任。此处提供的信息可随时改变而毋需通知。请勿根据本文件提供的信息完成一项产品设计。

 

本文件所描述的产品可能包含使其与宣称的规格不符的设计缺陷或失误。这些缺陷或失误已收录于勘误表中,可索取获得。

 

在发出订单之前,请联系当地的英特尔营业部或分销商以获取最新的产品规格。

 

索取本文件中或英特尔的其他材料中提的、包含订单号的文件的复印件,可拨打1-800-548-4725,或登陆http://www.intel.com/design/literature.htm

英特尔、Intel 标识、VtuneCilk 和至强是英特尔在美国和/或其他国家的商标。

Java Oracle /或其附属公司的注册商标

* 其他的名称和品牌可能是其他所有者的资产。

英特尔公司 © 2012 年版权所有。所有权保留。

优化声明

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