Quantcast
Channel: 中级
Viewing all articles
Browse latest Browse all 669

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

$
0
0

在新发布的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

integer :: i

real :: a(n)

do i = 1,n

a(i) = i

end do

  …

end block

当代码执行到block结构之外后,变量“i”和“a”将恢复它们在block结构之外的含义。

 

Block结构中可定义局部数据的特性使得它特别适合于和DO CONCURRENT以及自动并行化一起使用,因为使用局部数据可以保证循环结构的不同迭代之间没有数据依赖关系。考虑下面的例子:

 

DO CONCURRENT(I = 1:N)
  BLOCK
    REAL T
    T = A(I) + B(I)
    C(I) = T + SQRT(T)
  END BLOCK
END DO

 

这里通过使用Block结构和局部数据”T”可以保证循环结构的不同迭代之间使用的临时变量”T”不会有任何冲突,这时如果在编译的时候加上“-parallel”选项打开自动并行优化,编译器就会自动为上面的循环生成并行代码。

 

更多关于如何通过英特尔编译器使用Block结构的信息请参见英特尔编译器用户参考手册的相关内容。

 

  • Intel Parallel Composer XE
  • 开发人员
  • 学生
  • Linux*
  • Microsoft Windows* (XP, Vista, 7)
  • Fortran
  • 入门级
  • 中级
  • Intel® Fortran Compiler
  • 英特尔® Fortran Composer XE
  • 英特尔® Visual Fortran Composer XE
  • 开发工具
  • 服务器
  • URL
  • 编译器主题
  • 主题专区: 

    IDZone

    Viewing all articles
    Browse latest Browse all 669

    Trending Articles



    <script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>