Compiler Topics

Pointer Checker in ICC: requires dynamic linking of runtime libraries

The -check-pointers switch, which enables the Pointer Checker feature, cannot be used with the -static flag on Linux* (/MT on Windows*) which forces all Intel libraries to be linked statically. The reason is that, by design, the Pointer Checker library “libchkp.so” must be shared by all executables and libraries in a process without duplication. While it is certainly possible to ensure, manually, that only a single library copy is linked, we found in testing that it was quite easy for users to accidentally include multiple copies of the library, causing unpredictable runtime errors.

  • Developers
  • Partners
  • Professors
  • Students
  • Linux*
  • Microsoft Windows* (XP, Vista, 7)
  • Microsoft Windows* 8.x
  • Unix*
  • C/C++
  • Beginner
  • Intermediate
  • Intel® C++ Compiler
  • Intel® Memory Protection Extensions
  • pointer checker
  • Development Tools
  • 如何在offload程序中控制协处理器的执行环境

    offload编译模式下Intel编译器的offload运行时系统提供了两种机制让主机CPU程序对协处理器上的执行环境进行控制:

    1. 在主机系统上设置环境变量,然后将这些环境变量传递到协处理器上
    2. 在主机程序中调用相应的运行环境控制函数

     

    环境变量:

    缺省情况下,当offload发生时运行时系统会把主机程序执行环境中的所有环境变量全部复制到协处理器的执行环境中。用户可以通过定义环境变量“MIC_ENV_PREFIX”的值来改变这一默认行为。当该环境变量被赋予某个特定值之后,offload运行时系统将不再复制全部主机环境变量,而改为只复制那些以“MIC_ENV_PREFIX”的值加上下划线为前缀的那些环境变量;而且,在协处理器执行环境中对应的环境变量将不会保留这些前缀。通过这种方式,用户就可以在主机系统和协处理器上对同一名字的环境变量使用不同的值。例如在主机系统中已如下方式设置环境变量:

     

    MIC_ENV_PREFIX=ABC

    OMP_NUM_THREADS=8

  • Developers
  • Students
  • Linux*
  • C/C++
  • Fortran
  • Intermediate
  • Intel® Composer XE
  • Intel Parallel Composer XE
  • Development Tools
  • Parallel Computing
  • 解读Intel编译器的offload报告

    英特尔编译器在对代码进行编译优化的过程中用户可以通过使用”-opt-report-phase=phase”选项让编译器输出某些特定优化阶段的相关信息。针对至强融核™ 协处理器提供的offload编译模式英特尔编译器提供了”offload”关键字。它可以让编译器提供主机和目标协处理器之间的数据传输信息。

     

    加上编译选项”-offload-report-phase offload”后编译器会对原代码中的每一个offload区域生成两段报告:第一段以Offload to target MIC开头的报告来自于主机代码编译过程;第二段以Outlined offload region开头的报告则来自于目标协处理器编译过程。

     

    例如对于下面的代码 “reduction.c”:

     

      1 float reduction(float *data, int numberOf)

      2 {

      3   float ret = 0.f;

      4   int i;

  • Developers
  • Students
  • Linux*
  • C/C++
  • Fortran
  • Intermediate
  • Intel® Composer XE
  • Intel Parallel Composer XE
  • Development Tools
  • Subscribe to Compiler Topics