`
ld_hust
  • 浏览: 171542 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

正确设置编译选项以利于英特尔® Parallel Inspector线程错误分析

阅读更多

简介:
英特尔® Parallel Inspector 能够分析二进制代码来查找线程错误。然而,在编译程序时使用适当的编译器设置可使分析更加容易。

基于本文主旨,下文提及英特尔® Parallel Inspector 时,即指英特尔® Parallel Inspector 中的线程错误分析。

对英特尔 Parallel Inspector 有用的编译器设置:

编译选项

目的

/Zi, /ZI
(极力推荐)

英特尔 Parallel Inspector 使用编译中产生的符号将地址与源代码行关联起来。

对于线程错误分析,使用此设置将减少误报的发生。

/Od
(推荐用于初步分析)

使英特尔 Parallel Inspector更轻松地将错误与相应源代码行关联起来。

英特尔 Parallel Inspector 还可分析优化的二进制代码,但由于优化的汇编程序没有具体的源代码行,因此英特尔 Parallel Inspector 难以精确定位其中造成问题的源代码。并且,优化的编译倾向于将变量保存在寄存器中,以避免出现数据竞争。

注意:虽然对使用 /Od 编译的二进制代码进行分析比较简单,但检查 "released"(非 /Od)版本二进制代码的线程错误也同样重要。

/MD or /MDd

(推荐)

使用此设置将减少误报。

  

基于使用英特尔编译器编译的 OpenMP* 应用程序,英特尔 Parallel Inspector 所需的编译器设置:

编译选项

目的

/Qopenmp

(极力推荐)

如果没有设置这个选项,英特尔 Parallel Inspector 将找不到与OpenMP* pragma 指令相关联的线程中可能存在的数据竞争或死锁。

/Qopenmp-link:dynamic

(推荐)

在英特尔® 编译器 11.0 和英特尔® Composer 中,此设置选择 OpenMP* 运行库的动态链接版本,该版本已经为Parallel Inspector插入了相应的调试代码。

使用英特尔编译器 11.0 或英特尔 Parallel Composer 时,此项为默认设置。

   

  

基于使用英特尔® 线程构建模块 (TBB) 的应用程序,英特尔 Parallel Inspector 所需的编译器设置:

编译选项

目的

/D "TBB_USE_THREADING_TOOLS" (极力推荐)

如果没有此设置,英特尔 Parallel Inspector 将在英特尔® TBB 中识别误报。注意:如果使用 /Od 进行编译,此项将被自动设置。

  

在英特尔 Parallel Inspector 中使用线程错误分析时不推荐设置的编译器选项:

编译选项

目的

/Qtcheck
(请勿使用)

此设置可用来替代英特尔® 线程检查器的调试代码插入。英特尔 Parallel Inspector 并不使用此编译选项。

/Qopenmp-link:static

(请勿使用)

此设置将英特尔® OpenMP* 库的静态版链接进您的代码中。此静态库不包含避免误报所需的调试代码。

/Qtprofile

(请勿使用)

此设置可用来替代英特尔® 线程档案器的调试代码插入。英特尔 Parallel Inspector 并不使用此编译选项。

/Qopenmp_stubs

(请勿使用)

此设置将阻止 OpenMP* 代码实际并行化。

/debug:parallel

(请勿使用)

此设置为英特尔 Parallel Composer 启用英特尔® Parallel Debugger Extension。它并不用于英特尔 Parallel Inspector。

  

对英特尔 Parallel Inspector 线程错误分析没有影响的编译器设置:

编译选项

目的

/FIXED:NO

此设置对英特尔 Parallel Inspector 而言不是必需的。它是一个连接器选项,在英特尔线程检查器、英特尔线程档案器以及英特尔 VTuneTM 性能分析器调用关系图中,所进行的调试代码插入需要用到它。

注意: 英特尔 Parallel Inspector与下列库的动态版本协同工作效果更佳:

•·         OpenMP* 运行时库(libiomp5.dll 或 libguide.dll)

•·         C 运行时库(msvcr90.dll、msvcr80.dll、msvcr90d.dll 或 msvcr80d.dll)

如果与以下库连接,英特尔 Parallel Inspector 将会报告错误信息:

•·         OpenMP* 运行时库 (libiomp5mt.lib、libguide.lib、vcomp.lib/vcomp.dll)

•·         C 运行时库 (libcmt.lib)

更多信息:

本文介绍了开发人员最关心的常见编译选项。他们大部分都可用于英特尔 Parallel Inspector,但并未对所有选项组合进行测试。如果您有关于其他选项的信息,或对某个特定选项有疑问,请登录 Intel® Parallel Studio 论坛提交您的信息或问题。

版本:
英特尔® Parallel Inspector
英特尔® Parallel Composer
英特尔® C++ 编译器11.0 Windows* 版
英特尔® C++ 编译器 10.1 Windows* 版
Microsoft* Visual Studio 2005
Microsoft* Visual Studio 2008

分享到:
评论

相关推荐

    有利于英特尔® Parallel Inspector线程错误分析的编译器设置

    【英特尔® Parallel Inspector 线程错误分析的编译器设置】 ...通过遵循上述建议设置编译选项,可以提高英特尔® Parallel Inspector在检测和解决线程错误方面的效能,从而确保多线程代码的稳定性和可靠性。

    和英特尔® Parallel Amplifier有关的编译器设置

    - **目的**:此设置在生成的代码中加入适当的调试代码,以确保英特尔 Parallel Amplifier 能够正确识别英特尔线程构建模块 (Intel TBB) 的使用情况。 #### 不推荐使用的编译设置 - `/Qtcheck` 和 `/Qtprofile`:这...

    揭秘英特尔® Parallel Amplifier

    英特尔® Parallel Amplifier通过这种方式帮助开发者认识到性能不足的根本原因,并指导他们如何改进线程调度策略,以实现更好的并行执行效率。 最后,锁定与等待分析专注于多线程编程中的同步问题。在多线程环境中...

    在英特尔® Parallel Amplifier 中使用求差功能查找性能下降

    通过引入英特尔® Parallel Amplifier 的求差功能,开发者可以在编译和运行不同版本的代码后,对比分析性能指标,以确保优化过程不会导致性能降低。 **使用求差功能的工作流程** 1. 首先,从版本控制系统签出源...

    英特尔® Parallel Composer 入门详解

    4. **英特尔® 并行调试器扩展 (Parallel Debugger Extension)**:这个扩展为Microsoft Visual Studio* IDE添加了专门的并行调试工具,帮助开发者查找和修复多线程程序中的问题,如死锁、竞争条件等。 **使用流程**...

    Intel+Parallel+Studio优化程序性能实例分析

    它通过整合一系列组件,如Intel® Parallel Composer、Intel® Parallel Debugger Extension、Intel® Parallel Inspector和Intel® Parallel Amplifier,为开发者提供了从编译、调试、性能分析到多线程错误检测的全...

    Intel_parallel_studio_xe_2013_sp1_update3_for_windows

    英特尔® Parallel Studio XE 为 C/C++ 和 Fortran 开发人员提供了具有一流性能的编译器和库、正确的并行编程模型以及补充和兼容的分析工具。它可以无缝地插入到 Visual Studio* 和 GNU 工具链中,从而在保持工作...

    英特尔®处理器和协处理器应用优化

    英特尔提供了一系列工具,如Intel Debugger for C++ 和 Intel Parallel Inspector,来帮助开发者定位和修复程序中的错误。这些工具支持多线程和分布式内存环境下的调试,可以有效地发现死锁、数据竞争等问题。 ####...

    释放多核潜能.英特尔Parallel.Studio并行开发指南

    2. Inspector:这是一个线程调试器,用于发现并行程序中的线程错误,如死锁、竞争条件等。它能帮助开发者调试那些在串行程序调试器中难以发现的问题。 3. C++ Compiler:英特尔Parallel Studio还提供了C++编译器,...

    Parallel.ForEach的卡死现象(线程操作问题C#源码实例)

    `PerformanceCounter`类则可以帮助监控系统的CPU、内存等资源使用情况,以分析性能瓶颈。 总结来说,解决`Parallel.ForEach`卡死问题的关键在于理解和掌握正确的线程同步、资源管理以及异常处理策略。通过合理地...

    英特尔Parallel Studio并行编程

    因此,并行程序需要经过严格的错误检查,以确保程序正确运行。 7. 调优并行应用:对并行程序进行性能调优是提高效率的关键,包括线程数的选择、负载平衡、缓存优化等方面。 8. 设计驱动的并行顾问:英特尔Parallel...

    2009 英特尔® 线程挑战赛 第一题 基数排序 源码

    **2009英特尔®线程挑战赛**是由英特尔公司举办的一场竞赛,旨在鼓励开发者利用多线程技术提高程序性能。该赛事提供了各种编程问题,参与者需要设计和实现高效的多线程解决方案。 **TBB(Threading Building Blocks...

    Intel® Parallel Studio XE Cluster Edition for Windows or linux* 2018最新版许可key破解文件

    Intel® Parallel Studio XE Cluster Edition for Windows or linux* 2018最新版许可key破解文件

    c语言-编译预处理指令#pragma omp-支持多线程

    在C语言中,`#pragma omp` 是一种编译预处理指令,用于开启OpenMP(Open Multi-Processing)功能,从而让程序支持多线程执行。OpenMP 是一个跨平台的共享内存并行编程模型,它允许程序员通过添加简单的API...

    .NET Parallel 并行计算 多线程,高并发

    .NET Framework 4 引入了一组强大的并行计算工具,称为`.NET Parallel`,它使得开发者可以轻松地利用多核处理器的优势,实现高效的多线程和高并发编程。这一技术的引入大大提升了应用程序的性能,特别是在处理大数据...

    Intel Parallel Studio XE 2018 license

    2. **Intel Parallel Inspector**:这是一款静态代码分析工具,它可以检测代码中的并发错误,如数据竞争、死锁等问题,确保并行程序的正确性和可靠性。 3. **Intel Parallel Studio XE 2018 License**:许可证是...

    INTEL Parallel Studio XE 2016 With Updates License

    - Intel Inspector:内存和线程错误检测工具,用于查找并预防内存泄漏、数据竞争和其他并发错误。 4. **调试工具**: - Intel Debugger:提供对C、C++和Fortran程序的调试功能,支持多线程和并行应用的调试,帮助...

Global site tag (gtag.js) - Google Analytics