Intel Parallel Composer XE

Intel Fortran Composer XE 2015新特性 – Block结构(Block Construct)

在新发布的Intel Fortran Composer XE 2015中英特尔编译器加入了对Fortran 2008标准中引入的Block结构(Block Construct)的支持。Block结构的使用类似于C/C++语言中的复合语句,它使程序员可以更加灵活的创建仅具有局部作用域的数据结构和相关代码。Block结构的语法表示为:

[可选名称:] BLOCK

         [可选的数据声明]

         block 代码

END BLOCK [名称]

其中的数据声明可以是除了COMMON,EQUIVALENCE,NAMELIST,IMPLICIT等属性之外的数据结构。这些数据可以具有SAVE属性,但该属性仅在所属的Block结构中有效,外部定义的SAVE属性不影响Block内部定义的数据。

 

考虑下面的例子:

block

  • Developers
  • Students
  • Linux*
  • Microsoft Windows* (XP, Vista, 7)
  • Fortran
  • Beginner
  • Intermediate
  • Intel® Fortran Compiler
  • Intel® Fortran Composer XE
  • Intel® Visual Fortran Composer XE
  • Intel® Parallel Studio XE Composer Edition
  • Intel Parallel Composer XE
  • Development Tools
  • Intel Fortran Composer XE 2015新特性 – 参数化派生类型(Parameterized Derived Types)

    在新发布的Intel Fortran Composer XE 2015中英特尔编译器加入了对Fortran 2003标准中引入的参数化派生类型(Parameterized Derived Types)的支持。所谓参数化派生类型就是允许程序员创建一个派生类型的模板,该模板可以拥有延迟定义的KIND和length参数。在使用参数化派生类型是,KIND参数必须是编译时常量,而length参数可以在运行时确定。

     

    考虑下面的例子:

    TYPE humongous_matrix(k, d)
      INTEGER, KIND :: k = kind(0.0)
      INTEGER(selected_int_kind(12)), LEN :: d
      REAL(k) :: element(d,d))
    END TYPE

    TYPE(humongous_matrix(8,10000000)) :: giant

  • Developers
  • Students
  • Linux*
  • Microsoft Windows* (XP, Vista, 7)
  • Microsoft Windows* 8.x
  • Fortran
  • Beginner
  • Intermediate
  • Intel® Fortran Compiler
  • Intel® Fortran Composer XE
  • Intel® Visual Fortran Composer XE
  • Intel® Parallel Studio XE Composer Edition
  • Intel Parallel Composer XE
  • 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 Studio XE Composer Edition
  • 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 Studio XE Composer Edition
  • Intel Parallel Composer XE
  • Development Tools
  • 如何在offload代码输入输出变量的内存分配中使用2M大页面

    英特尔编译器为至强融核™ 协处理器提供的offload编译模式使程序员可以在一段主机代码中加入编译指示或者某些新的关键字使指定的代码段运行在协处理器上。在显式拷贝模式下,程序员在使用offload pragma/directive将指定代码段offload到协处理器上执行的同时,还须指定在主机和扩展卡间进行拷贝的指针或数组类型变量。英特尔编译器在编译过程中会通过加入代码来自动完成主机和协处理器之间的传输数据。

     

    在默认情况下offload模式的运行时系统为offload代码输入/输出变量在协处理器内存空间分配内存时会使用4K字节大小的页面。这样当offload代码需要很大的输入输出内存空间时,内存分配过程中就可能会产生很多的页面缺失异常,用户将观察到过长的内存分配延迟。针对这样的问题,英特尔编译器提供了一个环境变量“MIC_USE_2MB_BUFFERS”,使用户可以让运行时系统为offload代码输入/输出变量分配内存时在某些情况下改用2M字节大小的页面。下面是该环境变量的说明:

     

    MIC_USE_2MB_BUFFERS

     

  • Developers
  • Students
  • Linux*
  • Server
  • C/C++
  • Fortran
  • Intermediate
  • Intel® Composer XE
  • Intel® Parallel Studio XE Composer Edition
  • Intel Parallel Composer XE
  • Development Tools
  • 在offload代码中调用native代码

    英特尔编译器为至强融核™ 协处理器提供的offload编译模式使得已有传统程序向该架构的移植工作变得十分灵活方便。程序员可以通过在一个可运行的主机代码中加入编译指示或者某些新的关键字使指定代码段运行在协处理器上。该模式下生成的程序既可以运行在配备

    了协处理器的系统上充分利用该处理器的强大计算能力,也可以在没有协处理器的传统系统上正确地运行。

    默认情况下,对于源程序中的offload代码段编译器会同时为两种目标架构生成代码。此时在offload代码段中如果调用了外部函数,那么这些外部函数也必须具有offload的属性,只有这样才能保证生成的程序可以在协处理器上调用这些函数。但是在某些特定的应用场景

    下,用户可能无法保证所调用的外部函数代码也具有offload属性,比如这些函数代码只有主机CPU和协处理器的native版本,或者同一函数在主机CPU和协处理器上具有不同的源代码实现。针对这种情况,英特尔编译器支持在生成offload程序时通过特定选项为主机代码

    和协处理器代码链接不同的native函数库。这样得到的程序在运行时可以根据运行环境自动调用相应的native函数库。

    考虑下面的例子:

  • Developers
  • Students
  • Linux*
  • C/C++
  • Intermediate
  • Intel® Composer XE
  • Intel® Parallel Studio XE Composer Edition
  • Intel Parallel Composer XE
  • Development Tools
  • Subscribe to Intel Parallel Composer XE