Intel FORTRAN 编译器 入门系列之四: OpenMP 支持
Intel FORTRAN 编译器 入门系列之四: OpenMP 支持
随着多核编程时代的到来, 采用在程序代码中加入适量 OpenMP 引导符(Directives)实现并行化的方式, 得到越来越多开发者的重视.
Intel C++/ Fortran 编译器是业界最早支持 OpenMP 规范的, 目前所有的 Liunx, Windows, MacOS 版本都完全支持 OpenMP 标准 2.5. 具体的信息可以参考: http://support.intel.com/support/performancetools/c/linux/sb/CS-007720.htm
相应地, Intel C++/ Fortran 编译器提供了选项 /Qopenmp (Windows) 或者 -openmp (Linux, MacOS), 编译时也会给出对应的提示信息. 如果不使用这些选项, 原先代码中的 OpenMP 引导符不会被编译器进行处理.
想要了解更详细的处理过程, 还可以通过 /Qopenmp-report 或者 -openmp-report 选项来获得相关的 OpenMP 编译报告
需要说明的是, 由于 OpenMP 规范没有定义具体实现之间的互操作性, 所以可能会出现不同编译器之间 OpenMP 实现的兼容性问题, 特别是当 gcc 4.0 和 Visual C++ 2005 开始加入对 OpenMP 的支持后. 为了避免连接和运行错误, 请注意以下几点:
-- 避免混合使用不同编译器, 或者不同版本中提供的多种 OpenMP 运行库
-- 坚持使用同一个编译器版本, 编译所有包含 OpenMP 的 源代码
如果应用程序中的某些 OpenMP 模块, 已经使用 gcc 或者 Visual C++ 进行编译, 那么在最新的 Intel 编译器 10.1 版本中可以通过选项 '-openmp-lib compat' 或者 '/Qopenmp-lib:compat' 提供支持. Intel 编译器缺省的选项会使用 Intel 编译器自己提供的 OpenMP 运行库.
参考链接:
OpenMP 规范(正式版本 2.5): http://www.openmp.org/blog/specifications/
Intel 编译器 OpenMP 支持 : http://support.intel.com/support/performancetools/c/linux/sb/CS-007720.htm
Intel Windows FORTRAN 编译器 发行说明: http://www.intel.com/software/products/compilers/docs/fwin/release_notes.htm
Intel Linux FORTRAN 编译器 发行说明: http://www.intel.com/software/products/compilers/docs/flin/release_notes.htm