|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
现在64位的计算机已经越来越普遍了,Intel公司的CORE处理器也从酷睿双核升级为i3、i5直到现在的主流i7,微软的Windows 7系列的64位系统用起来感觉也挺不错的。但正是这64位,最近给我但来了些许的纠结。本文结合今天自己学习Intel Visual Fortran(以下简称IVF)的内容,分析了IVF的优势、相关软件的安装要求、从Compaq Visual Fortran(以下简称CVF)向IVF的转换以及IVF下简单Fortran计算程序的编译执行的操作过程,以期能对碰到类似情况者提供点思路。$ n! h. ~" k5 g% `4 x# R! H! G
IVF较之CVF优势:
: P" w$ B( Z: G/ |3 o3 J 我的戴尔Inspiron系列机子是64位,Windows 7系统也是64位的。在我的硕士研究生阶段学习中需要用到Fortran程序设计语言,以前我习惯使用CVF来编写、调试和运行Fortran程序,但现在看来不行了。CVF不支持64位,因为2005年以前Fortran 90/95 的Win32 开发环境多采用Compaq Visual Fortran 6.x,但在2005年CVF 开发团队加盟到Intel 公司,HP 宣布其CVF6.6 截至2005年12月31日,IVF9.0 将作为其新一代后继编译器。
/ s8 i! a7 k% f* p IVF是在CVF的基础上开发的Fortran编译器,它将CVF 前端与英特尔处理器后端相结合,拥有CVF 丰富的语言功能和英特尔处理器的代码生成及优化功能,使运行在英特尔平台上的程序能得到大幅度提高。而且随着计算规模的增大,对计算内存的要求必须采用64位的程序才能够满足我们的要求,但CVF没有提供64位系统的编译平台。另外程序并行功能的实现可以用Intel的MKL所提供的函数库,这些函数库采用了共享内存并行计算的OpenMP,但以前的CVF没有提供对OpenMP的支持,所以无法调用MKL的并行函数库。所以,从CVF6.x转移到IVF9.0已是势在必行,选用IVF来Fortran编译程序也是很有必要的。
; N$ ]' s+ |! z9 k5 O IVF相关软件的安装说明:5 w, A0 E& S% f1 ?
在使用CVF6.5/6.6编写运行Fortran程序时,只需要安装Compaq Visual Fortran6.5/6.6即可。这是因为在这个安装源程序中,Visual Fortran已经被组合(集成)在Microsoft Visual Studio(以下简称VS)的图形接口开发环境中了,所以可以直接安装使用。这与VC/VC++类似,故用户看到的CVF程序编写界面与VC/VC++的基本是一致的。 Q, o: b, C& [+ m; J9 H+ T0 Q! d
而采用IVF来编写运行Fortran程序则稍微麻烦些。网上下载到的Intel Visual Fortran Compiler10/11版本都只是编译器,它需要放到集成开发环境(Integrated Development Environment,以下简称IDE)中去才能使用。故而IVF Complier还需要VS6.6以上版本的IDE的支持,所以必须事先安装好VS后,才能安装编译器。我就是在安装VS2005后再安装IVF10的。具体安装方法参见本文后的链接部分说明。; C8 m/ T9 |6 x! e! f0 w' M
IVF与CVF的兼容性:0 J6 ]3 d3 Z3 X' F- ?
IVF 编译器支持所有的CVF 语法,包括Digital Equipment Corporation(DEC) Fortran和Microsoft Fortran PowerStation 4.0 的语言扩展;支持所有的CVF库例程,包括可移植库,QuickWin以及所有的系统接口模块。
6 l/ B8 W3 h7 A. X6 C9 T0 [9 V- \ IVF 不支持的CVF特征有:' x3 s+ w3 F2 W- F- z" {& Q
(1)Compaq Extended Math Library(CXML)。可以使用Intel Math Kernel Library 或IMSL、NAG 等第三方数学库来替换。. d* i7 c x; K% w2 g( M! |# p
(2)跨引用的源代码浏览器。
) @* h! _8 |4 |2 o (3)COM服务器向导。假如要转换由CVF的COM服务器向导创建的组件工程,需要在IV下重新构建;假如要调整组件接口,比如增加新的接口,则需要在CVF下进行。 J, |' |' T. r$ X: B* x% o5 |4 j. Q
从CVF向IVF的转换:
4 O/ C, \5 R! ^: {0 v 由CVF 转换到IVF,所有的Fortran源文件都需要在IVF下重新编译。IVF编译器不能直接使用CVF编译的对象、模块和静态链接库;但只要不在两个环境下共享输入/输出单元,IVF编译的应用程序可以使用CVF 建造的动态链接库。6 ]6 v& c: y6 g
大多数情况下无须改变Fortran源文件,只在IVF下重新建造现存的CVF工程即可;但有些工程需要改变小量源代码,有些则需要对建造方法做出适当调整。9 m7 J2 b1 i/ c1 F3 r: O8 L
IVF编译器提供有工程转换向导,以方便CVF向IVF的转换。转换可以分两步进行:; G0 C; d* w7 v& n
(1)打开CVF项目空间。可以直接双击CVF项目空间(*.dsw)打开之(如图1所示文件)。/ i7 ^7 |0 I) ^3 D; f9 s
* f9 R% ] ?9 T9 f* Q: f( ?( N
/ h5 F; Z% H# F8 G
A0 c2 T+ f. Y; c! i2 N) t' f ]
图1 在随后出现消息框,如图2,点击“全是”按钮,将CVF 项目空间下的每一项工程转换为IVF 解决方案下对应的Visual C++.NET 工程。
N+ X' L! I* ^" x$ j8 w/ E ( m9 y% d7 V }, W! V' y7 A
0 I4 o1 i% K9 v: r0 Z+ n
7 Z: ~ x# w& N! q O! @
a9 `6 A/ Z8 s
图2
(2)提取Fortran 工程项目。在上一步执行完毕,会展示Microsoft Visual Studio.NET开发环境,待转换的CVF 工程作为Microsoft Visual C++ 工程出现在解决方案资源管理器中,如图3所示。在每一个工程名上点击右键,从弹出的上下文菜单中选择执行“ExtractCompaq Visual Fortran Project Items”,至此工程才算转换完毕。
' @, j& P# I [- C# q. b
2 A0 P6 W* m. \+ V" J; `( a
1 L- P/ Z4 K: ~' f2 l. H9 `
0 }/ d0 [! }% ] I+ T% q% D" C* t6 h$ U8 \! }5 o+ Z$ n x
图3 ( K- n1 w) Q$ L* [3 l% M
由于Microsoft Visual Studio.NET的一个工程只能使用一种语言,所以,若CVF工程中包含Fortran和C/C++两种源文件,必须将CVF混合语言工程转换成两个单一语言工程:一个为Visual C++工程;另一个为Intel Fortran工程。而且,IVF向导将其中的一个工程改造成主工程。具体由哪一种语言建造主工程,由开发人员来决定,如图4 所示。- Q @6 t0 ?0 c1 b* }& d
. ~* P( q& m, {6 S! I' w2 Q
8 w' | K& M6 j# {) v
) k, E0 i$ B* f( _9 ~
' _/ n. H( x- l- A# u图4
在IVF下新建Fortran工程:$ I+ N# I# ^) F3 P
9 F1 T. Z J( ^; ]1 n首先新建一个Fortran工程项目,在VS2005下执行菜单命令“文件—新建—项目”
1 g1 _1 W7 O2 {, `3 x/ V6 Q0 v(如图5)即可。
7 Y8 Q4 t' @: O! I \
1 ], I" G, D! [% B- O/ q& W
. y0 s1 I7 r, W8 U7 D. F- L
6 P, b% p8 g1 Q2 i. e
5 z1 S4 n u8 L5 N* h; A6 G) ^ E图5
在弹出的对话框中选择“Intel(R)Fortran—Console Application—Empty Project”(如图6),点击确定即可创建一个新的Fortran工程项目。7 @; d' P; a# A, F. g
6 O& [. [5 Q! s& j3 \' R* }: h, w
d; ^& s) n# N$ T8 g1 y/ q
8 p, K5 ?3 _8 c! y5 V" w. r
" D. l5 _; }# Z) e8 j$ }( {图6 向导生成的在解决方案中的工程项目,可以从IDE“项目”菜单或在解决方案资源管理器窗口点击鼠标右键弹出的上下文菜单中,选择“添加新项”对话框,选择“Source”,从而创建要插入工程的文件。于是一个扩展名为.f90为文件被创建,详见图7~图9。$ A' z. B# |( y# F8 Y6 e$ o, \
7 E: T9 `8 G" ]3 z6 x
3 O+ @5 Q$ Z5 n6 j
; C" c2 b1 K, f- p% l: |
/ P) h/ m% V; _, `) b7 I6 \图7
. y# x* Y: h- m' K. p# F# q
% J- v3 H9 r4 Z
9 _6 K; r; ^; ?1 P) [& Y+ B" P7 b5 D" q2 K3 g
图8
6 l* [# w! X2 Q. F
3 u" n" G, q4 q2 |. O% G( f: t6 ~
) }# G3 c2 c) c; B/ V' h4 |, {1 x
图9 在IVF下运行Fortran程序:, b4 @2 M2 ^9 _3 ^4 p. |
3 }7 g) Z: y4 z. @* r
在IVF下链接、编译、调试和运行Fortran程序都与CVF下有所不同。首先需要生成exe文件,点击菜单中的“生成—生成***”,见图10,编译器即开始链接编译Fortran程序。8 A6 U) z) }1 Y6 `! U. h L
- A! n& @/ _3 `
1 Y. ^) n7 ?$ e; D& l
3 p! q* K. L; Z4 N+ a) U4 w
1 P5 w9 ^# X: H- z& l9 Z+ W$ a5 ^, W图10 若链接编译没有错误,及表示exe文件已经生成,如图11。
7 l x3 c7 z9 a
1 O5 C% k( E6 Z& E B
V1 j5 w' ^4 ^. I2 E, n
( O/ K" n5 q% ~* e) D6 R
4 F* B( _% q( J% |& B8 M6 d1 J6 w0 @图11 此时,查看运行结果或者输入相关信息,点击菜单下“调试—开始执行(不调试)”见图12,于是即可见到如同CVF运行时的界面,如图13。
6 f! M8 [, h$ G0 q4 ?; k + T' o8 M9 h% g, G( I4 ~# a/ q" ?4 N
$ t) ]$ q1 u7 u w' O
' @ t9 t9 x5 U% W+ }0 \
+ s a5 ?2 _; V1 ^
图12
8 I" w) A1 T% C, M
5 T$ D+ \) Z1 |5 p7 k( O
1 N, C# e5 ?/ v9 K j5 Z% X
% ~# X m0 u4 h, e U图13
相关链接:7 Z B+ L5 s( z% g: |3 g" d; j
1、关于Microsoft Visual Studio 2005、Intel Visual Fortran和MKL(Math Kernel Library,是Intel为科学和工程计算设计的数学库)的详细安装步骤,请参见河海大学牛志伟老师QQ空间《VS2005+IVF+MKL安装及编译环境配置方法》,地址如下:http://user.qzone.qq.com/793915?ptlang=2052 2、集成开发环境(Integrated Development Environment简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。就是集成了代码编写功能、分析功能、编译功能、debug功能等一体化的开发软件套。所有具备这一特性的软件或者软件套(组)都可以叫做IDE。如微软的VisualStudio系列,Borland的C++Builder,Delphi系列等。该程序可以独立运行,也可以和其它程序并用。例如,BASIC语言在微软办公软件中可以使用,可以在微软Word文档中编写WordBasic程序。IDE为用户使用VisualBasic、Java和PowerBuilder等现代编程语言提供了方便。不同的技术体系有不同的IDE。比如可以称为C++、VB、C#等语言的集成开发环境,所以可以叫做IDE。同样,Borland的JBuilder也是一个IDE,它是Java的IDE。zendstudio、editplus、ultraedit这些,每一个都具备基本的编码、调试功能,所以每一个都可以称作IDE。1 B6 r1 p- I+ x- d- y7 b: L
|