Thursday, May 14, 2009

intel Fortran 编译器 10.1 Linux*版入门 4

英特尔 ® Fortran 编译器 10.1 Linux* 版入门指南、安装指南和发行说明[4]
原始文档下载地址
http://www.intel.com/cd/software/products/apac/zho/358463.htm

系统要求
处理器术语
英特尔® 编译器支持三种平台:处理器与操作系统类型的常规组合。这部分介绍英特尔在其文档、安装过程以及技术支持网站中用于描述平台的术语。

IA-32
IA-32 体系结构指基于以下处理器且运行 32 位操作系统 ("Linux x86") 的系统:通常与英特尔奔腾® II 处理器兼容的 32 位处理器(例如,英特尔® 奔腾® 4 处理器或英特尔® 至强® 处理器),或是其它厂商生产的支持相同指令集的处理器。

Intel® 64
Intel® 64 体系结构指基于带 64 位体系结构扩展的 IA-32 体系结构处理器(例如,英特尔® 酷睿™2 处理器系列)且运行 64 位操作系统 ("Linux x86_64") 的系统。如果系统运行 32 位版的 Linux 操作系统,则适用 IA-32 体系结构。针对 Intel® 64 体系结构应用程序的英特尔编译器还支持以下系统:基于 AMD* Athlon64* 与 Opteron* 处理器,并且运行 64 位操作系统的系统。
IA-64
指基于英特尔® 安腾® 2 处理器且运行 64 位操作系统的系统。

本机与跨平台开发
术语“本机”是指构建一个应用程序,它将在构建时使用的相同平台上运行;例如,在 IA-32 体系结构上构建要在 IA-32 体系结构上运行的应用程序。术语“跨平台”或“交叉编译”是指构建一个应用程序,它运行时使用的平台与构建时使用的平台属于不同的类型;例如,在 IA-32 体系结构上构建要在 IA-64 体系结构上运行的应用程序。并非所有的跨平台开发组合都受支持,有些组合可能需要安装可选的工具与函数库。
下表介绍支持的编译主机(构建应用程序的系统)与应用程序目标(运行应用程序的系统)组合。
IA-32 体系结构主机
支持的目标:IA-32
Intel® 64 体系结构主机
支持的目标:IA-32 与 Intel® 64
IA-64 体系结构主机
支持的目标:IA-64
备注:开发与主机不同的目标时,可能需要从 Linux 发行包中安装可选的函数库组件。
备注:“英特尔® 集群 OpenMP*”是单独授予许可证的功能,与编译器的系统要求也不相同。如需有关详细信息,请参阅“英特尔集群 OpenMP”文档。

开发 IA-32 体系结构应用程序的要求
  • 基于 IA-32 体系结构处理器(最低 450 MHz 主频的英特尔奔腾® II 处理器,或更高级的处理器 - 建议配备英特尔® 酷睿™2 处理器系列或英特尔® 奔腾® 4 处理器)、Intel® 64 体系结构处理器的系统,或是基于 AMD* Athlon* 或 AMD Opteron* 处理器的系统
  • 512 MB 内存(建议配备 1GB)。
  • 100 MB 的磁盘空间,另外还需要 200 MB 空间,用于存放安装过程中下载的文件与临时文件。
  • 以下 Linux 版本(这是经英特尔测试过的操作系统版本的列表;其它版本可能会,也可能不会正常工作,因此不建议使用 - 如有任何疑问,请与“英特尔® 首要支持”联系)之一:
    Asianux* 3.0
    Debian* 4.0
    Fedora* 7
    Red Hat Enterprise Linux* 3, 4, 5
    SUSE LINUX Enterprise Server* 9, 10
    TurboLinux* 11
    Ubuntu* 7.04
  • 安装了“Linux 开发工具”组件,包括 gcc 3.2.3、3.3、3.4、4.1、4.11、g++ 以及相关工具
  • 提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++


针对 Intel® 64 体系结构系统或针对 AMD* Opteron* 处理器开发应用程序时的要求

  • 基于 IA-32 或 Intel® 64 体系结构处理器(建议配备英特尔® 酷睿™2 处理器系列或英特尔® 至强® 处理器),或是基于 AMD Opteron 处理器的系统
  • 512 MB 内存(建议配备 1GB)
  • 300 MB 的空闲硬盘空间,另外还需要 300 MB 空间,用于存放安装过程中下载的文件与临时文件。
  • 100 MB 硬盘空间,用于虚拟内存页面文件。确保使用的虚拟内存量至少达到针对安装的 Linux 操作系统版本所建议的最小值
  • 以下 Linux 版本(这是经英特尔测试过的操作系统版本的列表;其它版本可能会,也可能不会正常工作,因此不建议使用 - 如有任何疑问,请与“英特尔® 首要支持”联系)之一:
    Asianux* 3.0
    Debian* 4.0
    Fedora* 7
    Red Hat Enterprise Linux* 3, 4, 5
    SGI ProPack* 5
    SUSE LINUX Enterprise Server* 9, 10
    TurboLinux* 11
    Ubuntu* 7.04
  • 安装了“Linux 开发工具”组件,包括 gcc 3.2.3、3.3、3.4、4.1、4.11、g++ 以及相关工具
  • 提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++


开发 IA-64 体系结构应用程序的要求

  • 基于英特尔® 安腾® 2 处理器的系统。
  • 512 MB 内存(建议配备 1 GB)。
  • 150 MB 的磁盘空间,另外还需要 200 MB 空间,用于存放安装过程中下载的文件与临时文件。
  • 以下 Linux 版本(这是经英特尔测试过的操作系统版本的列表;其它版本可能会,也可能不会正常工作,因此不建议使用 - 如有任何疑问,请与“英特尔® 首要支持”联系)之一:
    Asianux* 3.0
    Debian* 4.0
    Red Hat Enterprise Linux* 3, 4, 5
    SUSE LINUX Enterprise Server* 9, 10
    TurboLinux* 11
  • 安装了“Linux 开发工具”组件,包括 gcc 3.2.3、3.3、3.4、4.1、4.11、g++ 以及相关工具
  • 提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++


关于 gcc 版本的说明
英特尔编译器使用许多不同的 Linux 操作系统版本(具有不同版本的 gcc)进行过测试。某些 Linux 版本可能包含与已经测试过的版本不同的头文件,这可能会导致问题。您使用的 glibc 版本必须同使用的 gcc 的版本保持一致。
备注:

  • 使用 -O3、-ipo 及 -openmp 等高级优化选项编译非常庞大的源文件(几千行)时,所需的内存量可能会明显大很多。
  • 上面的处理器型号名称列表并非毫无遗漏 - 与上面列出的那些处理器支持相同指令集的其它处理器型号应该也可以正常使用。如果有关于特定处理器型号的问题,请与“英特尔® 首要支持”联系。
  • 有些优化选项在运行应用程序的处理器类型方面存在限制。如需有关详细信息,请参阅这些选项的文档。


安装
如需有关安装编译器与设置编译器环境的详细信息,请参阅单独的安装指南。在本文的其它部分,使用 表示的默认安装目录是:
/opt/intel/fc/10.1.xxx(针对 IA-32 与 IA-64)
/opt/intel/fce/10.1.xxx(针对 Intel® 64)
/opt/intel/idb/10.1.xxx(针对 IA-32 与 IA-64)
/opt/intel/idbe/10.1.xxx(针对 Intel® 64)


已知问题
OpenMP 应用程序的二进制文件不兼容
在安装“英特尔编译器 10.1 版”之后,使用“英特尔编译器 9.0 版”并指定 -openmp 开关编译的程序可能无法运行。对于这类程序,加载器可能会在运行时退出,并出现以字符串 _intel 开头的有关未定义符号的错误消息(例如,_intel_fast_memset)。如果发生这种情况,请使用“英特尔编译器 10.1 版”重新编译可执行文件,之后加载器错误消息应该会消失。


RPM 4.0.2 与 RPM 4.1 的安装警告
RPM 4.0.2 无法安装到非默认目录。这个问题在 RPM 4.0.3 中已经解决。RPM 4.1 无法安装到非默认目录。这个问题在 RPM 4.11 到 4.2 中已经解决。


静态链接 libpthreads 时的段冲突
在某些版本的 Linux 上,对于使用静态链接的 libpthreads.a 构建的应用程序(使用 -static 时,默认使用 libpthreads.a), 在使用大于 2GB 的堆栈空间时,可能会因为段冲突而失败。这是 Linuxthreads 的一个已知问题。如果遇到此问题,请动态链接 libpthreads。作为变通方法,在 Red Hat Linux 9 与 Red Hat Enterprise Linux 3.0 上,您可以安装 nptl-devel 软件包,并在 ifort 命令行上传递 "-I/usr/include/nptl -L/usr/lib/nptl"。这将创建一个静态链接的二进制文件,它将仅在 nptl 下运行,但没有堆栈大小的限制。


OpenMP 限制

  • 在某些版本的 Linux POSIX 线程库中,堆栈大小限制以硬编码方式写在程序中,因此在某些版本的 Linux 上,需要很大堆栈空间的 POSIX* 多线程程序可能无法正确运行。英特尔编译器使用 POSIX 线程库来实现基于 OpenMP 的自动生成的并行化,因此这些限制也适用于 OpenMP 程序 (-openmp) 以及使用英特尔编译器自动生成的并行程序 (-parallel)。超出堆栈空间限制的多线程程序通常会遇到段冲突或寻址错误。
    要避免这些限制,请使用在构建时定义了 FLOATING_STACKS 参数的 glibc 版本。对于某些发行版,这意味着使用共享的 pthread 库而不是静态版的 pthread 库。然后,使用 ulimit -s 或 limit stacksize 命令将最大 shell 堆栈大小设置为明显非常大的值(以 KB 为单位,但不是 unlimited),并将 KMP_STACKSIZE 环境变量设置为所需的线程堆栈大小(以字节为单位)。请注意,在 bash shell 中,只能使用一次 ulimit -s 来设置很大的最大堆栈大小。在 C shell (csh) 中,可以使用 limit stacksize(参数之前没有短划线)重复设置最大堆栈大小。
  • 请注意,在特定版本的 Linux(Red Hat Enterprise Linux 4 及更早的版本是已知的示例)上,默认安装的 /usr/lib/libpthread.a 与 /usr/lib/libc.a 不完全支持 Linux 线程本地存储器(Thread Local Storage,简称 TLS)。使用 Linux TLS 机制并使用 -static 进行链接时,如果尝试访问线程本地存储器,则包含 -openmp 或调用 libpthread 便可能触发运行时故障。为纠正此问题,请安装 nptl-devel.rpm 软件包(包含在 Linux 安装光盘上)并使用 -L/usr/lib/nptl 进行编译。
  • 如果公用块声明为带 OpenMP 指示的 THREADPRIVATE,则公用块在声明它的所有源文件中都必须有相同的长度。


IA-64 Linux 系统上的 gprel relocation(gprel 重新定位)错误消息
在运行 Linux 的 IA-64 系统上,使用 -shared 开关创建“动态共享目标”(.so) 时,在 ld 阶段可能会生成一些 "relocation against dynamic symbol"(动态符号重新定位)消息,类似于:
/usr/bin/ld: for_init.o: @gprel relocation against dynamic symbol for__segv_default_msg/usr/bin/ld: for_init.o: @gprel relocation against dynamic symbol for__l_fpe_mask/usr/bin/ld: for_init.o: @gprel relocation against dynamic symbol for__l_undcnt

...
要纠正此问题,请将 -i_dynamic 与 -nofor_main 开关添加到命令行。对于 9.0 版,指定 -shared 时,将自动设置 -i_dynamic 与 -nofor_main。


不再支持 -ipo_obj 选项。
强制生成直接目标代码的 -ipo_obj 选项不再受支持。如果指定该选项,则会发出一个警告,并且其效果与指定 -ip 时的一样。
在 IA-64 体系结构系统上,-relax 不再传递给链接器
对于 9.0 版,编译器驱动程序不再将 -relax 开关传递给 IA-64 体系结构系统上的链接器,原因在于这与 -r 选项冲突。使用 binutils 2.11.90.0.27 或更高版本(建议使用 2.14)时,由于 -relax 是默认选项,因此不需要指定它。如果必须使用较早版本的 binutils 并希望指定 -relax 选项,请在调用链接器的编译命令中使用 -Xlinker -relax。


SLES 10 上关于 libunwind.so.7 的 ld 警告
在 SUSE LINUX Enterprise Server 10 上使用英特尔编译器构建应用程序时,可能会看到类似以下的警告:
ld: warning: libunwind.so.7, needed by /usr/lib/gcc/ia64-suse-linux/4.1.0/../../..//libgcc_s.so, may conflict with libunwind.so.6
变通办法是将以下命令行添加到 ifort.cfg:
-L /usr/lib
此问题会在将来发行的英特尔编译器中得到解决。


使用 CPU 自动调度 (-ax*) 时的调试信息有限
使用 -ax{WNBP} 进行编译时,会为每个函数生成两份代码。一份是针对通用代码,另一份是特定于 CPU 的代码。每个函数的符号随后引用“CPU 自动调度”例程,在运行时确定要执行生成的哪一个代码部分。使用名称在这些函数上设置的调试器断点会导致应用程序在调度例程中停止。这可能会导致在调试时出现意外的行为。此问题可能会在将来版本的“英特尔调试器”与“英特尔编译器”中得到解决。


对于构建时未使用 -fp 的 IA-32 体系结构的程序,无法进行调试或无法查看其跟踪信息
使用 -fp 编译时,指定将 IA-32 体系结构 EBP 寄存器用作帧指针,而不是用作通用寄存器。调试器与跟踪处理器可能无法正确展开特定的堆栈(包含对编译时未使用 -fp 的函数的调用)。如果使用 -g 或 -O0 进行编译,-fp 是隐含启用的;但明确指定更高的优化级别(如 -O2)时,则不会启用它。如果希望在应用程序上使用调试器或跟踪器,并且要使用的优化级别高于 -O0,则还应该指定 -fp,以确保调试器与跟踪处理器可以使用帧指针。

汇编器可能无法识别生成的代码
旧版 GNU 汇编器可能无法处理编译时使用了 -[a]xP、T 或 S 选项而生成的汇编代码。如果对于您而言这是个问题,请使用 binutils 2.17.50.0.15 或更高版本。

用带扩展调试信息的 idb
如果使用 inline_debug_info、semantic_stepping、variable_locations 或 extended 等 -debug 关键字,则应该使用“英特尔调试器”(idb);原因在于其它调试器可能不理解这些扩展信息,并因此出现无法预测的行为。我们正在与其它调试器的开发人员合作,以期获得他们对扩展调试信息的支持。


不支持 -auto_ilp32 选项
-auto_ilp32 选项不受支持,该选项指定应用程序不得超出 32 位地址空间(这在文档中有提及)。


启用运行时检查时,可能也会启用编译时检查
在某些情况中,使用 -check 或 -C 选项启用运行时检查时,如果当时可以诊断所请求的条件,则可能会导致编译器在编译时发出针对该条件的诊断信息。例如,如果指定 -check bounds 或 -CB,则常数下标的数组越界可能会导致编译时错误。


技术支持
如果未在安装过程中注册编译器,请访问英特尔® 软件开发产品注册中心进行注册。注册之后,在技术支持服务期间,您可以获取免费技术支持、产品更新以及升级。
如需有关如何找到“技术支持”、“产品更新”、“用户论坛”、常见问题、提示与技巧的信息,以及其它技术支持信息,请访问:http://www.intel.com/software/products/support/flin
备注:如果分销商提供本产品的技术支持,请与他们而不是英特尔联系技术支持事宜。


提交问题
提交问题的步骤:

  • 转到 http://www.intel.com/software/products/support,然后单击“英特尔® 首要支持”的链接。
  • 登录该网站。请注意,用户名与密码区分大小写。
  • 单击“产品”下拉列表旁边的“执行”按钮。
  • 单击左侧导航栏中的“提交问题”链接。
  • 从“产品类型”下拉列表中,选择“开发环境(工具、SDV、EAP)”。
  • 如果是与软件或许可证相关的问题,请从“产品名称”下拉列表中选择“英特尔(R) Fortran 编译器 Linux* 版”。
  • 输入问题,填写随后出现的各个窗口中的所有字段,以便成功提交问题。
    备注:在提交源代码(对源代码的访问需要限制为特定的国家或地区)之前,请通知技术支持代表,以确定是否允许受理这项请求。


问题报告或产品建议的指导原则:

  • 描述困难或建议。对于问题报告,请尽可能具体一些,以便我们能够重现问题。对于编译器问题报告,如果可能,请包含编译器选项与较小的测试用例。
  • 描述系统配置信息。使用以下命令获取 glibc 与内核的版本:

> uname -a

> rpm -qa grep glibc

如果未安装 rpm,请使用以下命令:

> ls /lib/libc*

并将信息复制到相应的“英特尔® 首要支持”字段。
使用以下命令获取“英特尔 Fortran 编译器”的“软件包标识”:

ifort -V

然后从输出内容中,将“软件包标识”(如 l_fc_x_10.1.xxx)复制到相应的“英特尔® 首要支持”字段中。请包含可能有助于我们重现并解决您的问题的任何其它特定信息。

  • 如果无法安装编译器或获取“软件包标识”,请输入所下载的文件名作为软件包标识。


已解决的问题
如需了解最新版的编译器中已经解决的问题,请查阅 <软件包标识>_README(例如 l_fc_x_10.1.xxx_README),它可以从英特尔® 软件开发产品注册中心的“产品下载”部分下载。
编译器源代码减错器 (CESR)
“ 编译器源代码减错器”(CESR) 包含一套非常有用的实用程序,它们可以单独使用,也可以组合在一起使用,能够对由 C/C++ 或 Fortran 源代码组成的测试用例进行多种处理,包括收集、缩减、精确定位、保护、文档编制及打包等。如果希望从庞大的应用程序中提取较小的测试用例提交给“英特尔® 首要支持”,它会很有帮助作用。CESR 可以从英特尔® 软件开发产品注册中心的“产品下载”部分进行下载。选择您的产品,然后在“版本”下拉列表中选择 CESR。CESR 是实验性产品,我们不为它提供技术支持,但仍然非常欢迎您通过“英特尔® 首要支持”向我们提供有关该产品的反馈。CESR 要求先安装 Python* 2.2 或更新版本。


文档
您可以使用 Web 浏览器来查看英特尔编译器以及相关的基于 HTML 的文档。您应该使用支持 JavaScript 的 Web 浏览器(如 Firefox*),这样它便可以为联机帮助文件提供全面的浏览、搜索、索引查询,以及超链接功能。
文档安装在 /doc 目录中。HTML 索引文档可以在 /doc/Doc_Index.htm 中找到。英特尔® 调试器手册 在“英特尔® 调试器”的 doc 目录中以 HTML 的形式提供。
查看手册页
ifort(1) 手册页提供 ifort 编译器命令的命令行选项列表及相关信息。要显示 ifort(1) 手册页,在使用 source 命令执行 < 文件以设置环境之后,输入以下命令:
$ man ifort
man 命令提供一些单键或组合键,让您滚动查看显示的内容、搜索字符串、跳转到某个位置,以及执行其它功能。例如,输入 z 查看下一个屏幕;或输入 w 查看上一个屏幕。要获得有关 man 命令的帮助,请输入 h 键;查看完帮助时,输入 q 键以返回到所显示的手册页中。要进行搜索,请输入 / 字符,后接搜索字符串 (/string),然后按 Enter 键。查看 man 命令文本之后,输入 q 以返回到 shell 命令提示符中。


查看文档
在受支持的 Linux* 发行版所附带的 Web 浏览器上,HTML 文档格式经测试可以正常工作。PDF 版的编译器文档可以在以下位置找到:http://developer.intel.com/software/products/compilers/flin/docs/manuals.htm


附加信息
相关产品与服务

有关英特尔软件开发产品的信息可以在 http://www.intel.com/software/products 上找到。
其中一些相关产品包括:
Intel® Software College 为开发人员提供一流的软件开发技术培训。培训包括在线课程与讲师指导的课程,内容涵盖所有的英特尔架构、平台、工具及技术。
英特尔® VTune™ 性能分析器可以评估应用程序的 CPU 使用情况,并帮助确定是否可以通过进行一些修改来改善应用程序的性能。
英特尔® C++ 与 Fortran 编译器是让软件运行如飞,并全面支持最新英特尔处理器的重要组成部分。
英特尔® 性能程序库提供一套针对各种英特尔处理器进行过优化的例程。英特尔® Math Kernel Library 为科学与工程软件的开发人员提供一整套线性代数、快速傅立叶变换以及矢量数学函数,它们均针对最新的英特尔处理器进行过优化。英特尔® 集成性能基元包含多个跨平台的工具,可针对多种英特尔架构与多个操作系统构建高性能的软件。


免责声明与法律信息
本文所含信息专门针对英特尔(R) 产品提供。本文并未授予任何知识产权的许可证,无论是明确、暗示、禁止翻供还是其它任何形式。除这些产品的“英特尔销售条款”之规定外,英特尔概不承担任何其它义务,对于英特尔产品的销售与/或使用(包括适合特定用途、适销性或不侵犯任何专利权、版权或其它知识产权),英特尔不作任何明确或暗示的担保,也不承担任何赔偿责任。未经英特尔公司书面同意,不应将英特尔产品用于任何在发生故障时可能会造成人身伤亡的用途,英特尔产品并未针对这些用途而设计,也不旨在用于这些用途。
英特尔随时可能更改技术规格与产品说明,如确有更改,恕不另行通知。标有“保留”或“未定义”字样的任何功能或指令,其存在性与特性均不确定,设计人员切勿对此有所依赖。英特尔保留这些供将来定义之用,对于因将来对它们的更改而导致的任何冲突或不兼容现象,英特尔概不承担任何责任。本文所含信息可随时更改而不另行通知。不应依赖这些信息进行最终设计决策。
本文所述产品可能包含一些设计缺陷或错误(统称错误),导致产品与发布的规格不符。目前已确定的错误可应客户要求提供。
在订购产品之前,请与当地的英特尔销售办事处或分销商联系,以获取最新规格。
对于本文中引用的并且包含订单号的文档,或是其它的英特尔文档,均可通过拨打 1-800-548-4725 或访问英特尔网站来获取。
赛扬、迅驰、英特尔、英特尔徽标、Intel386、Intel486、英特尔酷睿、安腾、MMX、奔腾、VTune 以及至强是英特尔公司在美国以及其它国家或地区的商标。
* 其它品名与品牌可能是属于其它公司的资产。
(C) 2007 英特尔公司版权所有。保留所有权利。

(http://blog.sina.com.cn/s/blog_51ffcfc301009utw.html~type=v5_one&label=rela_nextarticle)

No comments:

Post a Comment