Visual Fortran如何才能充分利用双核cpu
Visual Fortran如何才能充分利用双核cpu回复 #1 风花雪月 的帖子
问题不错,我只知道利用并行,但具体操作不清楚。这里也搜索到了一个相关讨论。来源: http://www.simwe.com/forum/archiver/tid-779941.html
2007-5-22 22:03 ilxy
运行fortran程序时cpu的利用率
我的电脑是双核的,带有两个cpu。当执行fortran程序时,cpu的利用率只有50%,只有一个cpu被利用。谁知道怎么设置可以使cpu的使用率达到100%。
2007-5-23 10:29 ilxy
Windows环境下简便的配置MPICH2并行环境
Windows环境下简便的配置MPICH2并行环境作者:Dr. Yan Haoming日期:Oct. 19,2004-10-20e-mail: yhmwhigg@yahoo.com.cn 很多Windows用户在应用并行环境时,发现对工程的设置非常麻烦,其实这一问题可以容易的解决。本文将就Compaq Visual Fortran 6.5环境中如何实现MPICH2并行计算做一简单的介绍。 首先,介绍一下MPICH2的安装,MPICH2可以在以下网站免费下载http://www-unix.mcs.anl.gov/mpi/mpich2/,我下载的是Win32 IA32平台的安装程序http://www-unix.mcs.anl.gov/mpi/mpich2/downloads/mpich2-0.971-2-win32-ia32.msi 。在Windows下安装此程序即可,其默认安装目录为c:\program files\mpich2。在此目录下有四个子目录,分别为bin,example,include和lib。其中bin目录下有两个执行文件,smpd.exe和mpiexec.exe。在后面将介绍其应用。在“我的电脑”环境变量设置中将bin目录写入路径path变量,这样就可以在任何地方执行此目录下的文件了(或者,你可以将其copy到工作目录,如果你不闲烦的话 )。 其次,设置CVF6.5环境,这一步需要将MPICH2的include和lib目录写进CVF6.5的搜索目录。其做法请参考设置过程图解 cvfdemo.html ,其中需要注意的是将图解中的对应目录换成MPICH2目录下的include和lib。设置完成后,将本压缩包中mpich2.mod文件拷贝到MPICH2目录下的include子目录下。Mpich2.mod是我自己编写的一个接口程序,用于简化CVF6.5与MPICH2之间的环境设置,此程序必需放在正确的地方。 最后,介绍如何运行并行程序。在本压缩包中有一个FORTRAN编码的例子hello.f90,此程序可以在CVF6.5环境下直接进行编译。注意,以后所有的并行程序的最前面必需加上“use mpich2”这一行。这样才能正确编译并行程序。编译好后,会在当前工作目录的子目录debug下找到可执行文件hello.exe。在DOS命令行模式下,进入debug目录,首先键入“smpd”回车,这样开始调用并行运行服务,再执行“mpiexec –n 5 hello”,就可以看到hello.exe程序的运行结果。当然,这里的“5”是节点的个数,你可以更改此值,自己进行尝试。Ok,恭喜你,现在你已经可以运行一个完整的并行程序了。要想成为高手,还要不断努力。Good luck
2007-5-23 10:57 ilxy
BBS 水木清华站∶精华区
发信人: Gooogle (【光明使者】Nature Boy), 信区: NumComp
标题: Re: MPICH问题求助 MPI -np n MPIProgram.exe (转载)
发信站: BBS 水木清华站 (Thu Jul 18 22:45:51 2002)
MPICH安装
这里仅针对使用Digital Visual Fortran 6.x编译器的情况对MPICH安装程序所附
的说明文档作补充说明。对于Visual C++ 6.0编译器的情况仅提供参考。
1. 安装
运行Setup.exe安装时,建议完全安装。Setup.exe运行完毕后,进行下面操作
:
(1) 将{MPICH_root}\Sdk\Include和{MPICH_root}\Sdk\Lib目录下的所有文件
分别拷贝到{Microsoft Visual Studio}\Df98\Include和{Microsoft Visual
Studio}\Df98\Lib目录下;
* (2) 将{MPICH_root}\RemoteShell\Bin加入到系统的PATH环境变量中。
2. 编译、链接MPI应用程序
为了方便使用Visual Fortran 6.x编译器进行并行程序编译链接,在第一次使
用其编译程序前,可以增加一个Fortran项目环境:
(1) 点击菜单File->New...;
(2) 在Projects标签中选择Fortran Console Application,然后再右侧输入
框中填入新项目的名称,点击OK;
(3) 在接下来的对话框中选择An empty project,点击Finish;
(4) 在接下来的对话框中直接点击OK;
(5) 点击菜单Project->Settings...,进行下面操作:
I) 在setting for中,选择Win32 debug;
II)选择Fortran标签,进行下面操作:
i) 在Category一栏中选择“External Procedures”;
ii)在“Argument Passing”一栏中选择“C, By Reference”;
iii) 在“String Length Argument”一栏中选择“After All
Args”;
III) 选择Link标签,进行下面操作:
i)在Category一栏中选择“General”;
ii) 在Object/library modules中,添加ws2_32.lib、mpichd.lib
、pmpichd.lib、romiod.lib,各库文件间用空格分开;
IV)在setting for中,选择Win32 release;
V) 重复II)、III)的操作,只是库文件变为:ws2_32.lib、mpich.lib
、pmpich.lib、romio.lib;
VI)点击OK。
(6) 点击菜单File->Save Fortran Environment;
(7) 点击Save Environment按钮,即保存一个新的环境(可以给一个名称);
(8) 关闭这个项目文件,并删除这个项目文件。
这样就可以在进行并行程序设计的时候,较为方便地使用这一编译环境,举例
如下:
(1) 点击菜单File->New...;
(2) 在Projects标签中选择Fortran Console Application,然后再右侧输入
框中给出项目的名称,点击OK;
(3) 在接下来的对话框中选择An empty project,并选中复选框“There
are saved Fortran Console environments. Would you like to consider applying
options from one of them?”,点击Finish;
(4) 在对话框中List of Console Environment中,选择前面准备好的环境名
称,点击Apply按钮,并确认;
(5) 在接下来的对话框中直接点击OK;
在这个项目中就可以进行并行程序的开发。特别指出的是,在源程序中必须添
加语句“include 'mpif.h'”。
3. 运行MPI应用程序
对于已经编译好的MPI程序,若只启动一个进程,则可以直接键入程序名,回
车,即可运行。若启动多个进程则需要执行mpirun。具体用法可由命令提示符下直接执行
该命令获得。
对于只准备在单机上,进行调试的用户,相对容易。只需要键入mpirun -np
#numproc <程序名>,或者键入mpirun -localonly #numproc <程序名>,即可。(
#numproc指的是准备启动的进程数)
对于在多台机器上进行计算,需要进行下面的操作来建立环境:(这里假设用
户没有安装NFS)
(1) 确认在每台机器上都安装了这个程序包,最少是安装了远程调用的程序和
必须得动态库。
(2) 确认在每台机器上都启动了RemoteShellServer。可以通过控制面板->服
务,来检查,推荐将这个服务设为自动,可以减少以后的维护。
(3) 运行程序。这里分几种情况逐一说明。
I)用mpirun -np #numproc <程序名> 的形式在多台机器上启动,方法
如下:
(这一方法只适合启动SPMD程序,并且可执行程序应在各台机器上放置在相同的目
录结构中)
i)启动mpiconfig,选择准备运行的机器,并点击setup,再点击
OK按钮,结束配置。(注:选中机器后,必须按setup,才可以完成配置,否则在
后面的运行中会出现奇怪的错误)
ii) 键入mpirun -np #numproc <程序名> 即可启动程序,当
#numproc大于配置的机器数时,系统可以自动在机器列表中循环利用。
II) 用配置文件的方式在多台机器上启动,方法如下:
i)编写纯文本的配置文件,格式如下:
exe <可执行文件的全路径及名称>
[可选参数]
hosts
<主机名1> #n1 [可执行文件的全路径及名称]
<主机名2> #n2 [可执行文件的全路径及名称]
<主机名3> #n3 [可执行文件的全路径及名称]
...
其中#n1,n2,n3...表示在对应机器上启动的进程数,每台主机上的进程数可以不同
;
若主机后的[可执行文件的全路径及名称]不填,则默认使用exe那一行所指定
的文件;
若每台主机都独立的列出[可执行文件的全路径及名称],则exe那一行的内容
也可空白;
若启动的是SPMD程序,每个主机所指向的必须是同一文件,或其复制文件;
若启动的是MPMD程序,给不同的机器上指定其上需要运行的程序;
同一台主机可以占用多行,每行给定不同或相同的启动进程数和[可执行文件
的全路径及名称];
全路径名包括两种,一种是以驱动器符号开始的,如:d:\temp\mpiprogram.
exe,另一种是以机器名为起始的,如:\\host1\share\temp\mpiprogram.exe;
每个[可执行文件的全路径及名称]都是以相应的主机为标准。
ii) 启动程序,这里仍然有两种情况:
a)如果每台机器运行所需要的可执行文件都在其本地,则可以
简单
的使用 mpirun <配置文件> 的形式启动;
b)如果在配置文件中包含的主机中,存在一台主机的所需的可
执行文件在其远程,则需要使用 mpirun <配置文件> -logon 来启动,这时会要求
输入一个帐号和密码,请输入一个已经存在的域用户名和其对应的密码即可。
(与每台机器登陆的帐号无关,不要使用administrator帐号)
特别需要指出下面几点:
(1) 推荐用mpirun -localonly #numproc <程序名> 的方式在单机上启动多个
进程,这样可以比较少的更改mpiconfig。
(2) 推荐用配置文件的形式在多台机器上运行,这样也可以比较少的更改
mpiconfig;
(3) 也可以使用配置文件的形式在单台机器上运行程序;
(4) 无论启动几个进程,在本地只有一个窗口,而远程主机上没有任何窗口启
动,若启动任务管理器,可以看到启动的程序在运行,并且优先级为低。
2007-5-26 10:57 lfzhu
多线程并行,开两个以上线程就行了
推荐openmp VF 好像不支持openmp和多线程,所以VF对双核的CPU支持不是太好,建议如果你要充分利用你的多cpu系统的能力的话,换到linux或者是opensolaris平台下,使用Sun 的sunstudio的fortran编译器或者是intel fortran最新的编译器,采用openmp编程,那样的话可以充分利用你的系统的多cpu的能力。 具体的资料可以参考这个地方:http://www.unix-center.net/?cat=5 前提是你所使用的算法是可以支持并行的,不然白扯 原帖由 appleseed05 于 2007-6-8 21:58 发表 http://www.chinavib.com/forum/images/common/back.gif
前提是你所使用的算法是可以支持并行的,不然白扯
这个是显然的前提条件 好像比较成熟的还是在linux下的pgfortran 原帖由 射天狼 于 2007-6-25 21:12 发表 http://www.chinavib.com/forum/images/common/back.gif
好像比较成熟的还是在linux下的pgfortran
你用过?能够谈谈体会? 有个PGI.Visual.Fortran好像可以在win下运行:
PGI Visual Fortran?(PVF? fully integrates the PGI
suite of high-performance 64-bit and 32-bit parallel
Fortran compilers and tools from The Portland Group into
Microsoft* Visual Studio* 2005.
供参考。 原帖由 linqus 于 2007-7-3 16:44 发表 http://www.chinavib.com/forum/images/common/back.gif
有个PGI.Visual.Fortran好像可以在win下运行:
PGI Visual Fortran?(PVF? fully integrates the PGI
suite of high-performance 64-bit and 32-bit parallel
Fortran com ...
谢谢你提供的信息,有时间试一下
Portland Group™ 宣布Visual Fortran™ (PVF™)全面上市销售。PVF将PGI的高性能64位及32位Fortran并行编译器及开发工具套件与 Microsoft Visual Studio 2005整合在一起,为科学工作者和工程师从32位升级到64位Microsoft Windows平台提供一套高效的系统开发解决方案。
科研工作者将PGI编译器及开发工具广泛用于内置英特尔和AMD高性能微处理器的64位和32位Linux工作站、服务器和集群器上。该版软件使Portland Group对运行在Windows平台上的64位和32位Fortran应用程序的开发支持扩展到英特尔和AMD的64位和32位微处理器,新软件运行在深受市场欢迎的Microsoft Visual Studio 2005集成开发环境(IDE)。PGI Visual Fortran套件整合了多种兼容性能,使从现有的支持Windows的32位Fortran升级到64位平台变得十分简单, 具体兼容功能包括支持Windows 32位应用编程接口 (API)、调用规则、汇编命令以及公认的标准实用工具库。
Microsoft Visual Studio是世界上应用最广泛的集成开发环境。Visual Studio 2005 工具及技术(包括一个并行调试器)使开发人员可以利用他们现有的Windows开发技能及经验开发在 Windows Compute Cluster Server 2003 平台上运行的HPC(高性能计算)应用程序。
PGI Visual Fortran包括最新版的PGI本机OpenMP,以及支持FORTRAN 77和Fortran 95编程语言的自动并行化编译器,主要特性包括一整套: 由面向Fortran的文本编辑器、Fortran本征函数提示和选择关键字组成的Visual Studio Fortran项目系统, Fortran应用程序自定义创建引擎;自定义调试引擎,提供Fortran所需的语言专用调试功能;支持单线程、多线程及OpenMP并行应用程序调试; 兼容Microsoft Visual C++ 2005;支持调试PGI Fortran和Visual C++ 2005的混合应用程序
PGI的编译器及开发工具都具有如下特性:完全本机支持OpenMP并行编程扩展、在多核心处理器上的自动并行化、完全支持64位寻址、 本机集成标量和矢量SSE/SSE2/SSE3代码生成,以及PGI世界领先的优化基础设施。
PGI Visual Fortran 是为64位的AMD64和英特尔的EM64T及32位的x86处理器高度优化的,其创建PGI Unified Binary™的功能是业内独一无二的。PGI Unified Binary™是一个能够在两个处理器平台上运行的可执行文件,内含针对AMD64和EM64T处理器优化的代码序列。PGI Unified Binary使独立软件开发商(ISV)和自定义应用程序开发人员认识到一个64位平台的优点,同时还能充分利用英特尔和AMD公司开带来的最新创新技术。
价格与供货
PGI Visual Fortran套件有两个版本。PVF工作站完整版提供了立即开始Fortran应用程序开发所需的全部工具,包括捆绑的Microsoft Visual Studio 2005 IDE、现有的MSDN文档库、汇编程序被优化的BLAS/LAPACK/FFT数学库例程、 PGI的PGPROF®并行性能评估工具,以及一整套盒装媒体工具(内含光盘和印刷材料)。PVF工作站完整版的建议价格为689美元。
PGI Visual Fortran标准版是一个完整的生产-质量并行Fortran 95项目系统模块,已经使用Visual Studio 2005的开发人员可以轻松地将该模块插入到现有的IDE开发环境中。PGI Visual Fortran 标准版建议价格399美元。
PGI所有产品都提供一个30天的退款质保。PGI Visual Fortran产品及价格详情,登录Portland Group网站 www.pgroup.com. Visual Fortran是支持多线程编程的,也支持各种同步机制。可以实现比OPENMP更高的效率,且更利于调试。 原帖由 closest 于 2007-8-15 15:19 发表 http://www.chinavib.com/forum/images/common/back.gif
Visual Fortran是支持多线程编程的,也支持各种同步机制。可以实现比OPENMP更高的效率,且更利于调试。
这里再讨论如何实现的问题 学习一下!
页:
[1]