声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 8093|回复: 12

[Fortran] Visual Fortran如何才能充分利用双核cpu

[复制链接]
发表于 2007-5-29 09:43 | 显示全部楼层 |阅读模式
30体能
Visual Fortran如何才能充分利用双核cpu

回复
分享到:

使用道具 举报

发表于 2007-5-29 13:34 | 显示全部楼层

回复 #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/ ... 71-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

评分

1

查看全部评分

回复

使用道具 举报

发表于 2007-5-31 15:11 | 显示全部楼层
VF 好像不支持openmp和多线程,所以VF对双核的CPU支持不是太好,建议如果你要充分利用你的多cpu系统的能力的话,换到linux或者是opensolaris平台下,使用Sun 的sunstudio的fortran编译器或者是intel fortran最新的编译器,采用openmp编程,那样的话可以充分利用你的系统的多cpu的能力。

评分

1

查看全部评分

回复

使用道具 举报

发表于 2007-5-31 15:12 | 显示全部楼层
具体的资料可以参考这个地方:http://www.unix-center.net/?cat=5
回复

使用道具 举报

发表于 2007-6-8 21:58 | 显示全部楼层
前提是你所使用的算法是可以支持并行的,不然白扯
回复

使用道具 举报

 楼主| 发表于 2007-6-10 19:45 | 显示全部楼层
回复

使用道具 举报

发表于 2007-6-25 21:12 | 显示全部楼层
好像比较成熟的还是在linux下的pgfortran
回复

使用道具 举报

 楼主| 发表于 2007-6-26 10:06 | 显示全部楼层
原帖由 射天狼 于 2007-6-25 21:12 发表
好像比较成熟的还是在linux下的pgfortran


你用过?能够谈谈体会?
回复

使用道具 举报

发表于 2007-7-3 16:44 | 显示全部楼层
有个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.

供参考。

评分

1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2007-7-4 08:33 | 显示全部楼层
原帖由 linqus 于 2007-7-3 16:44 发表
有个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&#8482; 宣布  Visual Fortran&#8482; (PVF&#8482;)全面上市销售。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&#8482;的功能是业内独一无二的。PGI Unified Binary&#8482;是一个能够在两个处理器平台上运行的可执行文件,内含针对AMD64和EM64T处理器优化的代码序列。PGI Unified Binary使独立软件开发商(ISV)和自定义应用程序开发人员认识到一个64位平台的优点,同时还能充分利用英特尔和AMD公司开带来的最新创新技术。  

      价格与供货

  PGI Visual Fortran套件有两个版本。PVF工作站完整版提供了立即开始Fortran应用程序开发所需的全部工具,包括捆绑的Microsoft Visual Studio 2005 IDE、现有的MSDN文档库、汇编程序被优化的BLAS/LAPACK/FFT数学库例程、 PGI的PGPROF&#174;并行性能评估工具,以及一整套盒装媒体工具(内含光盘和印刷材料)。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.
回复

使用道具 举报

发表于 2007-8-15 15:19 | 显示全部楼层
Visual Fortran是支持多线程编程的,也支持各种同步机制。可以实现比OPENMP更高的效率,且更利于调试。
回复

使用道具 举报

 楼主| 发表于 2007-9-3 10:04 | 显示全部楼层
原帖由 closest 于 2007-8-15 15:19 发表
Visual Fortran是支持多线程编程的,也支持各种同步机制。可以实现比OPENMP更高的效率,且更利于调试。


这里再讨论如何实现的问题
回复

使用道具 举报

发表于 2012-3-10 15:38 | 显示全部楼层
学习一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 11:03 , Processed in 0.075360 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表