在万全R630上用ifort或pgf90-libgoto-mpich2编译并行版vasp纪要

合集下载

debian linux +mpich2+ifort+mkl 并行编译vasp4.6

debian linux +mpich2+ifort+mkl 并行编译vasp4.6

花了一天时间搞定debian并行编译vasp4.6,记下心得,供盟友指正也留以后备用。

单机4核,系统:debian linux 6.0 内核 2.6.32-5-686;编译器:l_cprof_p_11.1.073;数学库:intel mkl;并行软件:mpich2-1.4.1p1;傅里叶变换:libfftw3-dev libfftw3-doc;1. Install the ' build-essential' 'gfortran' software packageautoinstall the build--essental, which have the # apt-install build-essential !autoinstall the buildcommand 'make,make clean, gfortran, f95' and so on.2. Install the intell Compiler (ifort)down load the correspnding pakage 'l_cprof_p_11.1.073.tgz'# tar xzvf l_cprof_p_11.1.073.tgz5.0 own so the installation but because the debian the gbilc library 'slibstdc++6'will display 'libstdc++.so.5: didn't find ' and break down,so# apt-get install libstdc++53. seting the envionment variables# vi ~/.bashrc and input the contents:GDK_NATIVE_WINDOWS=1source /opt/intel/Compiler/11.1/073/bin/ia32/ifortvars_ia32. shget out and save it;# vi /etc/profile and add:source /opt/intel/Compiler/11.1/073/bin/ifortvars.sh ia32get out and save it.! this source can run vasp in every usr.4. Install the MPI parallel environmentDownload the mpich2 source package from :/research/projects/mpich2/downloads/index.php?s=downloads obtain the package 'mpich2-1.4.1p1.tar.gz'# tar xzvf mpich2-1.4.1p1.tar.gz# cd mpi*# env CC="gcc" C++="g++" F90="ifort" FC="ifort"# ./configure --prefix=/usr/local/mpich2-1.4.1p1/# make# make install# vi ~/.bashrc and add:PATH=/usr/local/mpich2-1.4.1p1./bin:$PATHexport PATHsave .bashrc and#source ~/.bashrcand check the mpi:# which mpif90# which mpirun# which mpiexec5. Install the fftw library# aptitude install libfftw3-dev libfftw3-doc! this can obtain a file 'libfftw3.a' in /usr/lib6. install vaspprepeare the vasp.4.6.tar.gz and vasp.4.lib.tar.gz and decompress it with tar xzvf # tar xzvf vasp.4.6.tar.gz# tar xzvf vasp.4.lib.tar.gz6.1 Go intothe vasp.4.lib/ and choose the makefile.linux_ifc_P4# cp makefile.linux_ifc_P4 makefile# vi makefile and moifiy the line:line 19: change the 'FC=ifc' to 'FC=ifort'get out and save.# makethis will obtain a file 'libdmy.a'# cd ..6.2 Go into the vasp.4.6# cp makefile.linux_ifc_P4 makefilevi makefile and changelist of change:line 50, 52 :add # before $FC and FCLline 80-82: add # before frontline 88: change "FFLAGS = -FR -lowercase -assume byterecl' to "FFLAGS = -FR -lowercase -assume byterecl -I/opt/mpich2-1.4.1p1/include"line 102: change "OFLAG=-O3 -xW -tpp7" to "OFLAG=-O1"line 133: add BLAS=-L/opt/intel/Compiler/11.1/073/mkl/lib/32 -lmkl_intel-lmkl_intel_thread -lmkl_core -lguide -lpthreadline 136: add # before 'BLAS'line 139: add # before "LAPACK''line 140: add LAPACK=-L/opt/intel/Compiler/11.1/073/mkl/lib/32 -lmkl_lapack line 201 : old #FC=mpif77new FC=mpif90line 202 : old #FCL=$(FC)new FCL=$(FC)line 211-214: remove the # before the CPPline 241: remove the # before FFT3D and chane the last words old '/opt/libs/fftw-3.0.1/lib/libfftw3.a'new ' /usr/lib/libfftw3.aline 343 : remove the option '-e95' ;get out and save it# makewill generate commond 'vasp'# cp vasp /usr/bin# source /etc/profilecan use vasp in every user.congratulation!。

ARM汇编手册

ARM汇编手册
北京顶嵌开源科技有限公司
ARM 汇编手册
版权声明
本手册为北京顶嵌开源科技有限公司内部培训资料,仅 供本公司内部学习使用,在未经本公司授权的情况下,请勿 用作任何商业用途。

400-661-5264
专注嵌入式 Linux 技术
北京顶嵌开源科技有限公司
目录
寄存器装载和存储.............................................................................................................................5 传送单一数据.............................................................................................................................5 传送多个数据.............................................................................................................................7 SWP : 单一数据交换................................................................................................................ 9
乘法指令........................................................................................................................................... 19 MLA : 带累加的乘法..............................................................................................................19 MUL : 乘法..............................................................................................................................19

openfoam mpi编译

openfoam mpi编译

OpenFOAM是一个由英国OpenCFD公司开发的开源计算流体力学软件。

它采用C++编程语言,可以在Linux操作系统上运行。

OpenFOAM具有模块化的结构,使得用户可以方便地定制和扩展其功能。

为了加快计算速度,OpenFOAM还支持MPI并行计算。

MPI(Message Passing Interface)是一种用于编写并行程序的标准。

使用MPI,用户可以在多个处理器上同时执行程序,从而加快计算速度。

在OpenFOAM中,MPI被用于加速求解大规模计算流体力学问题的速度。

在本文中,我们将介绍如何在OpenFOAM中使用MPI进行编译。

一、安装MPI库我们需要安装MPI库。

在Linux系统中,MPI一般通过包管理器进行安装。

以Ubuntu系统为例,可以使用以下命令安装MPI库:sudo apt-get install mpich二、配置MPI环境安装完MPI库后,需要配置MPI环境。

在OpenFOAM中,MPI的配置是通过修改OpenFOAM的环境变量来实现的。

我们需要找到OpenFOAM的安装路径,然后在用户目录下找到.bashrc文件,在其中添加如下行:export WM_MPLIB=SYSTEMOPENMPIexport WM_COMPILE_OPTION=mpi其中,WM_MPLIB指定了使用的MPI库,这里我们使用了OpenMPI;WM_COMPILE_OPTION指定了编译选项为MPI。

三、进行编译配置完成后,就可以进行编译了。

需要清理之前的编译结果,可以使用以下命令进行清理:wclean all进行新的编译:wmake这样就可以在OpenFOAM中使用MPI进行编译了。

四、检查编译结果需要检查编译结果是否正确。

可以通过运行一个包含MPI并行计算的例子来验证编译是否成功。

如果例子能够正确运行并且加速效果明显,说明MPI编译成功。

总结通过本文介绍,我们了解了如何在OpenFOAM中使用MPI进行编译。

MPICH2配置和使用

MPICH2配置和使用

MPICH2配置和使用MPICH2是一个开源的高性能并行计算库,用于构建和管理分布式内存系统。

它是Message Passing Interface(MPI)的一个实现,MPI是一种用于在并行计算环境中进行通信和同步的标准。

MPICH2允许开发者在多个计算机之间发送消息和执行并行任务,以实现高效的并行计算。

本文将介绍如何配置和使用MPICH2来构建一个简单的并行计算应用程序。

一、环境准备2.配置计算机网络在使用MPICH2之前,需要配置计算机网络以便计算机之间进行通信。

可以使用本地网络(例如以太网)或者虚拟网络(例如VMware或VirtualBox)来模拟分布式计算环境。

3.配置环境变量将MPICH2的安装目录添加到系统的PATH环境变量中,以便在命令行中直接调用MPI的相关命令。

二、配置主节点1.选择一个计算机作为主节点,并在该计算机上打开命令行窗口。

2.启动MPD守护进程在命令行窗口中输入以下命令来启动MPD守护进程:```mpd &```3.配置主节点在命令行窗口中输入以下命令来配置主节点:```mpiexec -n 1 mpdtrace -l > mpd.hosts```以上命令将创建一个名为mpd.hosts的配置文件,其中包含了主节点的名称。

三、配置从节点1.选择其他计算机作为从节点,并对每个从节点重复以下步骤。

2.在从节点上打开命令行窗口,并输入以下命令来启动MPD守护进程:```mpd &```3.将从节点加入主节点的计算机网络中在主节点的命令行窗口中,输入以下命令来将从节点添加到主节点的计算机网络中:```mpiexec -n 1 -f mpd.hosts hostname```其中,mpd.hosts是主节点上创建的配置文件。

四、编写并行应用程序1.使用MPI的编程接口使用C、C++、Fortran等编程语言,使用MPI的编程接口来编写并行应用程序。

例如,以下是一个使用C语言和MPI编写的简单并行计算应用程序的示例代码:```c#include <stdio.h>#include <mpi.h>int main(int argc, char* argv[])int rank, size;MPI_Init(&argc, &argv);printf("Hello from node %d of %d\n", rank, size);MPI_Finalize(;return 0;```2.编译并行应用程序在主节点的命令行窗口中,使用适当的编译器来编译并行应用程序。

MPICH2配置和使用

MPICH2配置和使用

MPICH2配置和使用2.配置MPICH2环境变量在安装完成后,需要配置MPICH2的环境变量,以便系统能够找到MPICH2的安装路径。

在Windows系统中,可以在系统属性的高级选项中设置环境变量;在Linux和Mac OS系统中,可以在.bashrc或.profile文件中添加相应的环境变量。

3.编写并行程序使用MPICH2进行并行计算需要编写并行程序。

MPICH2支持多种编程语言,包括C、C++和Fortran。

根据自己的编程语言选择合适的编程接口,例如MPI(消息传递接口)或OpenMP(多线程编程接口)。

根据并行算法和计算模型,设计并实现相应的并行算法。

4.编译并行程序在编写完并行程序后,需要使用编译器将程序源代码编译成可执行文件。

对于C和C++程序,可以使用gcc或g++编译器;对于Fortran程序,可以使用gfortran编译器。

编译时需要链接MPICH2的库文件,以确保程序能够调用MPICH2提供的并行计算功能。

5.运行并行程序在编译完成后,可以使用命令行或脚本来运行并行程序。

运行时需要指定并行程序的执行方式、计算节点的数量和计算节点的地址。

MPICH2提供了一系列命令和选项,用于控制并行程序的执行和调试。

可以通过命令行参数或配置文件来指定这些选项。

6.监测和调试并行程序在并行程序运行过程中,可以使用MPICH2提供的工具来监测和调试程序的运行状态。

MPICH2提供了一系列命令行工具和图形界面工具,用于查看程序的运行日志、性能指标和调试信息。

可以根据需要选择合适的工具,以便及时发现和解决程序中的问题。

MPICH2

MPICH2

MPICH2用户指南(MPICH2 User’s Guide)版本(Version )1.0.8数学与计算机科学部(Mathematics and Computer Science Division)阿贡国家实验室(Argonne National Laboratory)William GroppEwing LuskDavid AshtonPavan BalajiDarius BuntinasRalph ButlerAnthony ChanDavid GoodellJayesh KrishnaGuillaume MercierRob RossRajeev ThakurBrian Toonen2008年10月24日这项工作得到美国能源部科学局高级科学计算研究局Sci-DAC合约编号DE-AC02-06CH11357的规划,数据、信息与计算机科学部的分规划的支持。

1 引言(INTRODUCTION)1.引言MPICH2.本手册假定MPICH2已经安装了。

关于如何安装MPICH2,参见MPICH2安装指南,或者MPICH2顶层目录的README。

本手册解释如何编译、链接及运行MPI应用程序,使用于MPICH2一起的某些工具。

这是个初步的版本,某些节还没完成。

但是,这些应该足以帮你MPICH2 起步的了。

2 从MPICH1升级到MPICH2(Migrating to MPICH2 from MPICH1)如果你一直在使用MPICH 1.2.x (1.2.7p1是最新版本),那么你会发现一些有关MPICH2不同的东西(希望能更好)。

当然了,虽然你的MPI程序不用改变,但是有些关于你运行它们的方式则不同。

MPICH2是MPI标准的一个全新实现,其设计实现了加到MPI-2附件的全部(动态进程管理,片面操作,并行I/O及其他扩充),应用从MPICH1 实现所获得的教训,使得MPICH2更加健壮、有效及便于使用。

WRFChem安装

WRFChem安装

1. 安装PGI10.6mkdir /tmp/pgimv pgilinux-106.tar.gz /tmp/pgi/cd /tmp/pgi/tar xpfz pgilinux-106.tar.gz./installa. Do you accept these terms? [accept,decline]acceptb. 1. Single system install 2. Network install1Install the ACML? (y/n)nc. Installation directory? [/opt/pgi]/usr/local/pgid. Do you wish to install MPICH1?[y/n] ne. Do you want the files in the install directory to be read-only?[y/n]nlicense:tar zxvf crack.tar.gzcd Crack/tar xjvf pgi_10.6.0_linux64_patch.tar.bz2cp pgi_10.6.0_linux64_patch /usr/local/pgi/cp license.dat /usr/local/pgi/cd /usr/local/pgi./pgi_10.6.0_linux64_patch配置.bashrc里的环境变量气象,gedit ~/.bashrcexport PGI=/usr/local/pgi/linux86-64/10.6export MANPATH=$MANPATH:$PGI/manexport LM_LICENSE_FILE=/usr/local/pgi/license.datexport PATH=$PATH:$PGI/binsource ~/.bashrc输入pgf90:pgf90-Warning-No files to process #如果有如下提示信息,说明已安装成功气象,数2. 安装mpich2-1.2.1MPICH2是MPI(Message-Passing Interface)的一个应用实现,支持最新的MPI-2接口标准,是用于并行运算的工具,在程序设计语言上支持C/C++和Fortran。

mpi基本用法 -回复

mpi基本用法 -回复

mpi基本用法-回复MPI基本用法MPI(Message Passing Interface)是一种常用的并行计算编程模型,它允许在分布式内存系统中进行进程间通信。

MPI被广泛应用于科学计算、高性能计算以及大规模数据处理等领域。

本文将介绍MPI的基本用法,为大家一步一步解释如何使用MPI进行并行计算。

第一步:MPI的安装和设置1.1 安装MPI库首先,要在计算机上安装MPI库。

常用的MPI库包括Open MPI、MPICH 和Intel MPI等。

根据操作系统的不同,可以选择合适的MPI库进行安装。

1.2 环境变量设置安装完成后,需要设置相应的环境变量。

将MPI的安装目录添加到系统路径(PATH)中,以便系统可以找到MPI的执行程序。

同时,还需要设置LD_LIBRARY_PATH环境变量,以指定MPI库的位置。

第二步:MPI的编程模型MPI的编程模型基于进程间的消息传递。

每个进程都有自己的地址空间,并且可以通过MPI的函数进行相互通信。

MPI定义了一系列的函数和数据类型,用于实现进程间的消息传递和同步操作。

2.1 初始化MPI环境在开始使用MPI之前,需要调用MPI的初始化函数来建立MPI的运行环境。

可以通过以下代码来完成初始化操作:c#include <mpi.h>int main(int argc, char argv) {MPI_Init(&argc, &argv);TODO: MPI代码MPI_Finalize();return 0;}在这段代码中,`MPI_Init()`函数用于初始化MPI环境,`MPI_Finalize()`函数用于关闭MPI环境。

`argc`和`argv`是命令行参数,通过它们可以传递程序运行所需的参数。

2.2 进程间通信MPI提供了一系列的通信函数,用于实现进程间的消息传递。

常用的通信函数包括`MPI_Send()`、`MPI_Recv()`、`MPI_Bcast()`和`MPI_Reduce()`等。

MPICH的安装使用和MPI原理分析

MPICH的安装使用和MPI原理分析

MPICH的安装使用和MPI原理分析MPICH是一种开源的、可移植的并行计算库,它实现了MPI(Message Passing Interface)标准。

MPI是一种用于并行计算的通信协议,可以在分布式计算环境中实现不同计算节点之间的数据交换和通信。

MPICH提供了一套API,使得开发者可以方便地利用MPI进行并行计算。

下面将介绍MPICH的安装使用和MPI原理分析,以帮助读者更好地理解和使用MPICH。

一、MPICH的安装使用1. 安装准备:在安装MPICH之前,需要确保系统中已经安装了必要的编译器和依赖库。

通常情况下,需要安装C/C++编译器、Fortran编译器和相关的开发库。

4.配置编译选项:进入解压后的MPICH目录,执行以下命令配置编译选项:./configure --prefix=<install_path>其中,<install_path>是指定MPICH安装的路径。

5.编译安装:执行以下命令进行编译和安装:makemake install6. 配置环境变量:将MPICH的安装路径添加到系统的环境变量中,以便系统可以找到MPICH的可执行文件。

可以在.bashrc或者.bash_profile文件中添加以下内容:export PATH=<install_path>/bin:$PATHexport LD_LIBRARY_PATH=<install_path>/lib:$LD_LIBRARY_PATH其中,<install_path>是MPICH的安装路径。

7.测试安装:执行以下命令测试MPICH是否安装成功:mpiexec -n <num_processes> <executable>其中,<num_processes>是指定并行计算的进程数,<executable>是指定要运行的可执行文件。

MPICHPBS使用指南使用指南使用说明mp使用指南使用说明mp

MPICHPBS使用指南使用指南使用说明mp使用指南使用说明mp

MPICH&PBS使用指南一、MPI编程 (1)二、MPICH下编译和运行 (3)三、PBS环境下运行 (4)一、MPI编程1、MPI编程函数介绍MPI实际上是一个提供并行程序消息传递机制的函数库,有40多个函数,常用的有6个基本函数。

下面以C语言为例简单介绍这些函数。

(1)MPI_Init函数定义:int MPI_Init(int *argc, char ***argv)功能:用命令行参数初始化MPI环境输入:argc、argv—表示命令行参数,同C语言的main()函数参数格式,argv中包含欲并行运行的进程数输出:返回值—非零/零表示初始化是否成功说明:该函数必须为程序中第一个调用的MPI函数示例:MPI_Init(&argc, &argv); // argc、argv引用的是mian()函数的参数(2)MPI_Finalize函数定义:int MPI_Finalize (void)功能:结束MPI程序的运行,指结束MPI环境的使用输入:无输出:返回值—非零/零表示结束MPI环境是否成功说明:该函数必须为程序中最后一个调用的MPI函数示例:MPI_ Finalize ();(3)MPI_Comm_size函数定义:int MPI_Comm_size(MPI_Comm comm, int *size)功能:得到总进程数输入:comm 通信域句柄(系统默认的为MPI_COMM_WORLD,也可自己定义)输出:size,即通信域comm内包括的进程数整数(4)MPI_Comm_rank函数定义:int MPI_Comm_rank(MPI_Comm comm, int *rank)功能:得到本进程的进程号输入:comm,该进程所在的通信域句柄输出:rank,调用进程在comm中的标识号(5)MPI_Send函数定义:int MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) 功能:发送消息给特定的进程输入:buf 发送缓冲区的起始地址(可选类型)count 将发送的数据的个数(非负整数)datatype 发送数据的数据类型(句柄)dest 目的进程标识号(整型)tag 消息标志(整型)comm 通信域(句柄)输出:无(6)MPI_Recv函数定义:int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag,MPI_Comm comm,MPI_Status *status)功能:接受别的进程发过来的消息输入:count 最多可接收的数据的个数(整型)datatype 接收数据的数据类型(句柄)source 接收数据的来源即发送数据的进程的进程标识号(整型)tag 消息标识与相应的发送操作的表示相匹配相同(整型)comm 本进程和发送进程所在的通信域(句柄)输出:buf 接收缓冲区的起始地址(可选数据类型)status 返回状态(状态类型MPI_Status)2、MPI程序示例MPI程序中必须包含MPI库的头文件,C语言头文件名为mpi.h,FORTRAN语言头文件名为mpif.h。

安装和设置mpi并行环境

安装和设置mpi并行环境

安装和设置mpi并行环境3月31日,系统(主节点)因为安装mpich崩溃,开始重新安装系统和部署globus,此次安装决定先安装mpich,成功之后再按照globus。

经过反复试验,(花了不少心思去找版本问题,其实理论上mpich不应该有这么多版本问题的,猜想也有可能是之前与globus冲突所以系统崩溃了),觉得以下的版本是比较适合的,并且已经安装成功。

所以赶紧把这部分内容写下来备份,免得下次到处找。

安装之前请确认以下几件事:linux版本:redhat9.0,内核信息与之前相同所用mpich版本:mpich2-1.0.8安装之前,设置hostname和ip地址,与之前一样系统已经安装了gcc安装过程中使用root用户安装mpich步骤:1,创建SSH信任连接(在root目录下)(1)更改hosts文件,加入需要进行计算的机器#vi/etc/hosts打开hosts文件,更改如下:127.0.0.1 localhost.localdomain localhost 192.168.1.100 192.168.1.101 .(2)在生成SSH秘钥对//一路回车即可产生.ssh文件[root@chunli root]#ssh-keygen-t rsa Generating public/private rsa key pair.Enter file in which to save the key(/root/.ssh/id_rsa):Enter passphrase(empty for no passphrase):Enter same passphrase again:Your identification has been saved in/root/.ssh/id_rsa.Your public key has been saved in/root/.ssh/id_rsa.pub.The key fingerprint is:6c:61:a8:3f:a2:e0:9c:e7:8a:1b:49:76:a1:ce:e0:e9***************//查看是否有.ssh文件夹[root@chunli root]#ls-a..fonts.cache-1.gtkrc.recently-used..gconf.gtkrc-1.2-gnome2.rhn-applet.conf anaconda-ks.cfg.gconfd.ICEauthority.ssh.bash_history.gnomeinstall.log.tcshrc.bash_logout.gnome2install.log.syslog.viminfo.bash_profile.gnome2_private.metacity.Xauth ority.bashrc.gnome-desktop.nautilus.Xresources.cshrc.gstreamer.pyinput.xsession-errors(3)进入.ssh目录[root@chunli root]#cd.ssh(4)生成authorized_keys文件[***************]#cpid_rsa.pubauthorized_keys(6)建立本身的信任连接//按提示输入yes(三个字母要打全)[***************]#cd.[root@chunliroot]#The authenticity of host'(127.0.0.1)'can't be established.RSA key fingerprint is ec:c9:1c:5a:d6:98:5d:48:fd:7b:58:b3:b3:05:05:78.Are you sure you want to continue connecting(yes/no)?yes Warning:Permanently added''(RSA)to the list of known st login:Wed Mar 31 18:55:59 2010(7)设置第二个节点(grid1的root目录下)#ssh-keygen-t rsa生成.ssh文件夹//注意不要多键入空格从拷贝。

linux下安装intel编译器及mpich2的总结

linux下安装intel编译器及mpich2的总结

linux下安装intel编译器及mpich2的总结linux下安装intel编译器及mpich2的总结 2008年1.fortran编译器从intel网站可以下载免费的fortran,c++等编译器,注意是非商业免费版;AccountID=&ProgramID=&RequestDt=&rm=NCOM&lang= 用可用的邮箱注册,会分配一个序列号,保存此序列号,安装产品时将需要使用它: 我的序列号: NF83-7G8J9JLM联网状态下只需输入序列号就可安装,否则需要使用发送到注册邮箱附件的.lic文件选择要下载的文件我下载了C++和fortran的编译器l_cc_p_10.1.018.tar.gzl_fc_p_10.1.018.tar.gz存放在/usr/src目录下打开终端,进入当前文件夹[root@localhost ~]# cd /usr/src解压[root@localhost src]# tar zxvf l_cc_p_10.1.018.tar.gz[root@localhost src]# tar zxvf l_fc_p_10.1.018.tar.gzIntel 10.x 编译器为了保证和基于 GCC 3.2 的系统兼容, 需要使用标准 C++ 库 /usr/lib/libstdc++.so.5, 但是很多比较新的 Linux 发行版本中开始使用GCC 3.4, 并且提供了全新的标准 C++ 库 /usr/lib/libstdc++.so.6. 所以安装前需先装 compat-libstdc++ rpm包,它包含了 /usr/lib/libstdc++.so.5 库. 否则会提示缺少libstdc++.so.5最简单的方法[root@localhost src]# yum install libstdc++.so.5 按照提示安装即可,也可以自己在网上下载。

mpirun例子 -回复

mpirun例子 -回复

mpirun例子-回复MPICH和Open MPI是两个常用的可移植消息传递接口(MPI)库。

在大规模并行计算中,MPI是一种关键的编程模型,它允许多个进程在不同计算节点上通过消息传递进行通信和协调。

MPI的实现库可以通过不同的方式来管理线程和进程之间的通信,其中mpirun是一种用于启动MPI 应用程序的工具。

在本文中,将详细讨论mpirun的功能和用法,以及如何使用mpirun来执行并行计算任务。

首先,我们需要了解一下MPI的基本概念。

MPI是一种消息传递编程模型,它允许不同进程之间通过发送和接收消息来进行通信。

在MPI程序中,通常会有一个主进程(通常称为“根进程”或“主节点”)和多个工作进程(通常称为“工作节点”)。

现在,让我们来了解一下mpirun工具的用途和功能。

mpirun是MPI中用于启动并行程序的命令,它负责在不同计算节点上启动MPI进程。

mpirun可以根据需要启动任意数量的进程,并使它们能够相互通信。

mpirun通常会自动在网络中各个计算节点上启动MPI进程,并确保进程之间可以相互通信。

mpirun的用法非常简单。

一般来说,可以通过在终端中使用“mpirun -n <num_processes> <program>”的命令来启动MPI应用程序。

其中,-n选项指定要启动的进程数量,<num_processes>参数是一个整数,代表要启动的进程数量。

而<program>参数则是指定要运行的MPI程序的可执行文件。

在命令行中使用mpirun启动MPI应用程序的一个典型例子是:“mpirun -n 4 ./my_application”。

这个例子中,我们假设要启动一个由4个进程组成的MPI应用程序,而这个应用程序的可执行文件是“my_application”。

执行这个命令后,mpirun会自动在4个计算节点上启动MPI进程,并确保它们之间可以相互通信。

Compaq Visual Fortran 6.6 并行编程环境的配置

Compaq Visual Fortran 6.6 并行编程环境的配置

Compaq Visual Fortran 6.6 并行编程环境的配置Windows平台并行编程环境的配置所用的软件:mpich2-1.0.5-win32-ia32.msiCompaq Visual Fortran 6.61、如果本机上没有安装过Microsoft .NET .Framework,安装1.0.5这个版本的mpich2时,那么会提示你安装,我装的是2.0版本dotnetfx.exe,2.0版本以上的都行,然后把mpich2-1.0.5装上。

2、mpich2安装成功后,为了使用命令行方式执行程序的方便,将mpi路径C:\ProgramFiles\MPICH2\bin添加到环境变量path中,这样就可以在任何地方使用mpiexec了。

3、CVF安装没什么,就是序列号老记不住,再写一遍,33206-050-0010743-00007。

然后将mpich2的include和lib路径添加到CVF的搜索路径,在Tools=>Options=>Directories的Include files和Library files中。

4、解决头文件问题。

在fortran77的固定格式程序中,要加入一行include 'mpif.h',头文件mpif.h中定义了MPI的一些常量。

90程序就有点麻烦了,因为在fortran90程序中,习惯使用module,书上也说在90程序中要用use mpi来替代include'mpif.h',可是mpich2-1.0.5中的lib和include文件夹里都没有那个mpi.mod,其他的mpich版本好像也没有,至少mpich.nt.1.2.5.exe没有。

解决办法:1)、在90程序中也使用include 'mpif.h',而且要把mpif.h中以C 开头的注释前加上!,还有三行以CDEC$开头,也要用!来注释,不然出错。

FORTRAN环境下MPI的安装与运行

FORTRAN环境下MPI的安装与运行

注:因为我给的压缩包约400kb,不能作为附件上传,所以在请总版主将其放到此贴中或合适的地方。

请大家等待附件上传到这。

谢谢!或从以下地址下载:ftp://202.115.134.210//incoming/majiaWindows环境下简便的配置MPICH2并行环境很多Windows用户在应用并行环境时,发现对工程的设置非常麻烦,其实这一问题可以容易的解决。

本文将就Compaq Visual Fortran 6.5环境中如何实现MPICH2并行计算做一简单的介绍。

首先,介绍一下MPICH2的安装,MPICH2可以在以下网站免费下载/mpi/mpich2/,我下载的是Win32 IA32平台的安装程序/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之间的环境设置,此程序必需放在正确的地方。

最后,介绍如何运行并行程序。

ifort -o解释

ifort -o解释

ifort -o解释ifort -o是Intel Fortran编译器的命令行选项,用于指定编译器生成的可执行文件的名称。

下面我会从多个角度来解释这个命令:1. ifort,ifort是Intel Fortran编译器的命令。

Fortran是一种高级编程语言,特别适用于科学计算和数值分析。

Intel Fortran编译器是Intel公司开发的一款优秀的Fortran编译器,它能够将Fortran源代码转换为可执行文件。

2. -o,-o是ifort命令的选项之一,用于指定编译器生成的可执行文件的名称。

在命令行中使用-o选项后面紧跟着要生成的可执行文件的名称。

例如,如果你想将编译后的可执行文件命名为"myprogram",你可以使用命令"ifort -o myprogram"。

3. 解释,通过使用ifort -o命令,你可以告诉Intel Fortran编译器生成一个具有指定名称的可执行文件。

这个可执行文件是经过编译的Fortran源代码的结果,可以在相应的操作系统上运行。

通过指定一个有意义的名称,你可以更方便地识别和使用生成的可执行文件。

4. 命令行选项的作用,命令行选项是在命令行中使用的特定标记,用于指定编译器或程序的行为。

在ifort命令中,-o选项用于指定生成的可执行文件的名称,其他选项则可以用于控制编译器的优化级别、调试信息等。

总结起来,ifort -o命令是Intel Fortran编译器的一个选项,用于指定生成的可执行文件的名称。

通过使用这个命令,你可以将Fortran源代码编译为可执行文件,并为它指定一个有意义的名称,以便更方便地使用和识别。

mpif90编译参数

mpif90编译参数

mpif90编译参数mpif90编译参数是用于编译Fortran程序的一组指令和选项。

在本文中,我们将探讨一些常用的mpif90编译参数,以及它们的作用和用法。

一、-o 参数-o 参数用于指定生成的可执行文件的名称。

例如,使用以下命令编译Fortran程序:mpif90 -o myprogram.exe myprogram.f90这将生成一个名为myprogram.exe的可执行文件。

二、-c 参数-c 参数用于将源代码文件编译为目标文件,而不进行链接操作。

例如,使用以下命令编译Fortran程序:mpif90 -c myprogram.f90这将生成一个名为myprogram.o的目标文件。

三、-I 参数-I 参数用于指定编译器在搜索头文件时要查找的目录。

例如,使用以下命令编译Fortran程序:mpif90 -I /path/to/include myprogram.f90这将告诉编译器在路径/path/to/include中搜索头文件。

四、-L 参数和-l 参数-L 参数用于指定链接器在搜索库文件时要查找的目录,而-l 参数用于指定要链接的库文件。

例如,使用以下命令编译Fortran程序:mpif90 -L /path/to/lib -l mylib myprogram.f90这将告诉链接器在路径/path/to/lib中搜索名为libmylib.so的库文件,并将其链接到可执行文件中。

五、-f 参数-f 参数用于指定编译器的优化级别和特定的编译选项。

例如,使用以下命令编译Fortran程序:mpif90 -fopenmp -O3 myprogram.f90这将启用OpenMP多线程支持,并使用最高级别的优化。

六、-D 参数-D 参数用于定义预处理器宏。

例如,使用以下命令编译Fortran程序:mpif90 -DDEBUG myprogram.f90这将在编译时定义一个名为DEBUG 的宏,可以在程序中使用条件编译。

mpich2-1.4-用户指南aozhen版

mpich2-1.4-用户指南aozhen版

MPICH2用户指南V1.4数学与计算科学系阿贡国家实验室此处略去牛人无数2011年6月16日翻译日期:2011/8/23Aozhen目录1介绍 (1)2 MPICH2入门 (1)2.1 默认运行环境 (1)2.2开始并行作业 (1)2.3 Fortran中的命令行 (2)3 快速开始 (2)4 编译和链接 (3)4.1 对C++来说的特殊问题 (3)4.2 对Fortran来说的特殊问题 (3)5 用mpiexec运行程序 (4)5.1 标准mpiexec (4)5.2 所有进程管理环境扩展 (5)5.3 Hydra进程管理器的mpiexec扩展 (5)5.4 SMPD进程管理器环境扩展 (5)5.4.1 关于SMPD的mpiexec参数 (5)5.5 gforker进程管理器环境扩展 (8)5.5.1 gforker的mpiexec参数 (8)5.6 remshell进程管理器环境的限制 (10)5.7 使用SLURM和PBS的MPICH2 (11)5.7.1 OSC mpiexec (11)6 调试 (11)6.1 TotalView (12)7 检查点 (12)8 MPE (13)8.1 MPI日志(MPI Logging) (13)8.2 用户定义日志 (13)8.3 MPI检查 (15)8.4 MPE选项 (15)9 MPICH2的其他工具 (16)10 Windows下的MPICH2 (16)10.1目录 (16)10.2 编译 (17)10.3运行 (17)1介绍本手册假定MPICH2已经安装了。

想知道怎么安装请参见MPICH2 Installer's Guide《MPICH2安装指南》,或MPICH2顶级目录下的README。

本手册介绍如何编译,链接和运行MPI应用程序,并使用MPICH2自带的一些工具。

这是初步版,有些部分还没完成。

但,这已经足够让你步入MPICH2的大门了。

ifort安装

ifort安装

ifort 安装(2011-03-10 19:07:34)转载▼结合这两个安装说明装了intel visual fortran 不容易啊ifort 安装:以安装ifort (l_cprof_p_11.1.072_intel64.tgz)为例1. 将 l_cprof_p_11.1.072_intel64.tgz 和*.lic 文件拷贝到一个临时的目录里面(如 tem)2. 解压文件:$tar-zxvf l_cprof_p_11.1.072_intel64.tgz3. 进入解压后的目录:$cd l_cprof_p_11.1.0724. 启动安装:$./install.sh(这个过程中若是提示Your system is protected with Security-enhanced Linux (SELinux),只需进入/etc/sysconfig/selinux 让SELINUX=enforcing变为SELINUX=permissive)5.其他,看提示即可,注意第四步Step no: 4 of 7 | Installation configuration - Missing Critical Pre-requisite --------------------------------------------------------------------------------There is one or more critical unresolved issue which prevents installation to continue. You can fix it without exiting from the installation and re-check. Or you can quit from the installation, fix it and run the installation again.--------------------------------------------------------------------------------Missing critical pre-requisite-- missing system commands--------------------------------------------------------------------------------1. Show the detailed info about issue(s) [default]2. Re-check the pre-requisitesh. Helpb. Back to the previous menuq. Quit--------------------------------------------------------------------------------Please type a selection or press "Enter" to accept default choice [1]: 1Step no: 4 of 7 | Installation configuration - Missing Critical Pre-requisite --------------------------------------------------------------------------------The following required for installation commands are missing:libstdc++.so.5 (library)--------------------------------------------------------------------------------1. Finish with prerequisites and back to Critical Pre-requisites dialog [default]2. Back to Pre-requisite summary dialogh. Helpb. Back to the previous menuq. Quit--------------------------------------------------------------------------------Please type a selection or press "Enter" to accept default choice [1]:Sample Text解决办法是:我的系统是fedora13,下载compat-libstdc++-33-3.2.3-68.i686.rpm大家根据自己的系统下载对应的程序包!下载地址:/linux/rpm2html/search.php?query=libstdc+ +.so.5安装ifort完成,但在环境设置后又出现问题:找不到ifort命令[xxxx@xxx]$vi .bashrc//添加source /opt/intel/Compiler/11.1/072/bin/ifortvars.sh有的说在上面后加ia32也不行[xxxx@xxx]$ ifort命令没有找到有尝试网上的其他方法,没改动vi .bashrc,改动了vi /home/bjwang/bash_profile,发现是个新文件,就直接改了保存: ./opt/intel/Compiler/11.1/072/bin/ifortvars.sh intel64$ ifortifort: command line error: no files specified; for help type "ifort -help"是不是说明成功了呢?还可怎么验证呢?执行命令$ifort-v[xxxx@xxx]$ ifort -vVersion 11.1####################################################在suse LED 11下编译,1.若出现The following required for installation commands are missing:libstdc++.so.5 (library)安装suse自带libstdc++33即可,方法:计算机》》》“安装软件”》》搜索libstdc,找到安装之;2.若出现Missing optional pre-requisiteNo compatible Java* Runtime Environment (JRE) found-- operating system type is not supported.-- system glibc or kernel version not supported or not detectable-- binutils version not supported or not detectable///////////////////////////////////////////////////////////////////// /////////////////////////////////////缺少可选的先决条件*不兼容的Java运行时环境(JRE)的发现- 操作系统类型不支持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在万全R630上用ifort9.1/pgf90-libgoto-mpich2编译并行版vasp纪要一、准备文件1、PGI-6.0(有正版lisence的)/ 非商业版的intel fortran 9.1.0432、GotoBLAS-1.26.tar.gz3、mpich2-1.0.8.tar.gz4、vasp代码:vasp.4.6.tar.gz和vasp.4.lib.tar.gz二、安装PGI/intel fortran安装完注意在用户目录下.bashrc中设置环境变量(类似以下内容)#pgi fortran compiler#export PGI=/usr/pgi/#export PATH=$PGI/linux86-64/6.0/bin:$PATH#export MANPATH=$MANPATH:$PGI/linux86-64/6.0/man/man1#export LM_LICENSE_FILE=$PGI/license.dat#mpich2-ifortexport PA TH=/usr/local/mpich2-ifort/bin:$PATH#mpich2#export PATH=/usr/local/mpich2/bin:$PA TH#mpich#export PATH=/usr/local/mpich/bin:$PATH#rshrsh=/usr/bin/rsh#intel fortran compilerexport PA TH=/opt/intel/fce/9.1.043/bin:$PATHLD_LIBRARY_PA TH="/opt/intel/fce/9.1.043/lib:$LD_LIBRARY_PA TH"export LD_LIBRARY_PA THexport FC=ifort三、安装GotoBLAS修改Makefile.rule、和detect./quickinstall.64bit四、安装mpich2export FC=pgf90./configure –prefix=/usr/local/mpich2make && make install五、编译vasp1、编译库$cd vasp4.lib$cp makefile.linux_pg makefile$make2、生成vasp$cd vasp.4.6$cp makefile.linux_pg makefile 修改makefile(见附件)FC=BLAS=LAPACK=等。

六、测试cd bench(测试目录)mpiexec –n 8 vasp附件1:Makefile-PGI.SUFFIXES: .inc .f .f90 .F#-----------------------------------------------------------------------# Makefile for Portland Group F90/HPF compiler release 3.0-1, 3.1# and release 1.7# (/ & ftp:///x86/, you need# to order the HPF/F90 suite)# we have found no noticable performance differences between# any of the releases, even Athlon or PIII optimisation does# not seem to improve performance## The makefile was tested only under Linux on Intel platforms# (Suse X,X)## it might be required to change some of library pathes, since# LINUX installation vary a lot# Hence check ***ALL**** options in this makefile very carefully#-----------------------------------------------------------------------## Mind that some Linux distributions (Suse 6.1) have a bug in# libm causing small errors in the error-function (total energy# is therefore wrong by about 1meV/atom). The recommended# solution is to update libc.## Mind that some Linux distributions (Suse 6.1) have a bug in# libm causing small errors in the error-function (total energy# is therefore wrong by about 1meV/atom). The recommended# solution is to update libc.## BLAS must be installed on the machine# there are several options:# 1) very slow but works:# retrieve the lapackage from # and compile the blas routines (BLAS/SRC directory)# please use g77 or f77 for the compilation. When I tried to# use pgf77 or pgf90 for BLAS, V ASP hang up when calling# ZHEEV (however this was with lapack 1.1 now I use lapack 2.0) # 2) most desirable: get an optimized BLAS# for a list of optimized BLAS try# /~hjjou/scilib/opt_blas.html## the two most reliable packages around are presently:# 3a) Intels own optimised BLAS (PIII, P4, Itanium)# /software/products/mkl/# this is really excellent when you use Intel CPU's## 3b) or obtain the atlas based BLAS routines# /# you certainly need atlas on the Athlon, since the mkl# routines are not optimal on the Athlon.##-----------------------------------------------------------------------# all CPP processed fortran files have the extension .fSUFFIX=.f#-----------------------------------------------------------------------# fortran compiler and linker#-----------------------------------------------------------------------FC=mpif90# fortran linkerFCL=$(FC)#-----------------------------------------------------------------------# whereis CPP ?? (I need CPP, can't use gcc with proper options)# that's the location of gcc for SUSE 5.3## CPP_ = /usr/lib/gcc-lib/i486-linux/2.7.2/cpp -P -C## that's probably the right line for some Red Hat distribution:## CPP_ = /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/cpp -P -C## SUSE 6.X, maybe some Red Hat distributions:CPP_ = ./preprocess <$*.F | /usr/bin/cpp -P -C -traditional >$*$(SUFFIX)#-----------------------------------------------------------------------# possible options for CPP:# possible options for CPP:# NGXhalf charge density reduced in X direction# wNGXhalf gamma point only reduced in X direction# avoidalloc avoid ALLOCA TE if possible# IFC work around some IFC bugs# CACHE_SIZE 1000 for PII,PIII, 5000 for Athlon, 8000 P4# RPROMU_DGEMV use DGEMV instead of DGEMM in RPRO (usually faster)# RACCMU_DGEMV use DGEMV instead of DGEMM in RACC (faster on P4) # **** definitely use -DRACCMU_DGEMV if you use the mkl library#-----------------------------------------------------------------------#CPP = $(CPP_) -DHOST=\"LinuxPgi\" \# -Dkind8 -DNGXhalf -DCACHE_SIZE=2000 -DPGF90 -Davoidalloc \# -DRPROMU_DGEMV#-----------------------------------------------------------------------# general fortran flags (there must a trailing blank on this line)# the -Mx,119,0x200000 is required if you use older pgf90 versions# on a more recent LINUX installation# the option will not do any harm on other 3.X pgf90 distributions#-----------------------------------------------------------------------FFLAGS = -Mfree -Mx,119,0x200000#-----------------------------------------------------------------------# optimization,# we have tested whether higher optimisation improves# the performance, and found no improvements with -O3-5 or -fast# (even on Athlon system, Athlon specific optimistation worsens performance)#-----------------------------------------------------------------------OFLAG = -O2OFLAG_HIGH = $(OFLAG)OBJ_HIGH =OBJ_NOOPT =DEBUG = -g -O0INLINE = $(OFLAG)#-----------------------------------------------------------------------# the following lines specify the position of BLAS and LAPACK# what you chose is very system dependent# P4: V ASP works fastest with Intels mkl performance library# Athlon: Atlas based BLAS are presently the fastest# P3: no clue#-----------------------------------------------------------------------# Atlas based libraries#ATLASHOME= $(HOME)/archives/BLAS_OPT/ATLAS/lib/Linux_ATHLONXP_SSE1/ BLAS= /usr/local/lib/libgoto/libgoto.a# use specific libraries (default library path points to other libraries)#BLAS= $(ATLASHOME)/libf77blas.a $(A TLASHOME)/libatlas.a# use the mkl Intel libraries for p4 ()#BLAS=-L/opt/intel/mkl/lib/32 -lmkl_p4 -lpthread# LAPACK, simplest use vasp.4.lib/lapack_doubleLAPACK= ../vasp.4.lib/lapack_double.o# use atlas optimized part of lapack#LAPACK= ../vasp.4.lib/lapack_atlas.o -llapack -lcblas# use the mkl Intel lapack#LAPACK= -lmkl_lapack#-----------------------------------------------------------------------LIB = -L../vasp.4.lib -ldmy \../vasp.4.lib/linpack_double.o $(LAPACK) \$(BLAS)# options for linking (none required)LINK =#-----------------------------------------------------------------------# fft libraries:# V ASP.4.5 can use FFTW ()# since the FFTW is very slow for radices 2^n the fft3dlib is used# in these cases# if you use fftw3d you need to insert -lfftw in the LIB line as well# please do not send us any querries reltated to FFTW (no support)# if it fails, use fft3dlib#-----------------------------------------------------------------------#FFT3D = fft3dfurth.o fft3dlib.o#FFT3D = fftw3d+furth.o fft3dlib.o#===================================================================== ==# MPI section, uncomment the following lines## one comment for users of mpich or lam:# You must *not* compile mpi with g77/f77, because f77/g77# appends *two* underscores to symbols that contain already an# underscore (i.e. MPI_SEND becomes mpi_send__). The pgf90# compiler however appends only one underscore.# Precompiled mpi version will also not work !!!## We found that mpich.1.2.1 and lam-6.5.X are stable# mpich.1.2.1 was configured with# ./configure -prefix=/usr/local/mpich_nodvdbg -fc="pgf77 -Mx,119,0x200000" \# -f90="pgf90 -Mx,119,0x200000" \# --without-romio --without-mpe -opt=-O \## lam was configured with the line# ./configure -prefix /usr/local/lam-6.5.X --with-cflags=-O -with-fc=pgf90 \# --with-f77flags=-O --without-romio## lam was generally faster and we found an average communication# band with of roughly 160 MBit/s (full duplex)## please note that you might be able to use a lam or mpich version# compiled with f77/g77, but then you need to add the following# options: -Msecond_underscore (compilation) and -g77libs (linking)## !!! Please do not send me any queries on how to install MPI, I will# certainly not answer them !!!!#===================================================================== ==#-----------------------------------------------------------------------# fortran linker for mpi: if you use LAM and compiled it with the options# suggested above, you can use the following lines#-----------------------------------------------------------------------#FC=mpif77#FCL=$(FC)#-----------------------------------------------------------------------# additional options for CPP in parallel version (see also above):# NGZhalf charge density reduced in Z direction# wNGZhalf gamma point only reduced in Z direction# scaLAPACK use scaLAPACK (usually slower on 100 Mbit Net)#-----------------------------------------------------------------------CPP = $(CPP_) -DMPI -DHOST=\"LinuxPgi\" \-Dkind8 -DNGZhalf -DCACHE_SIZE=2000 -DPGF90 -Davoidalloc -DRPROMU_DGEMV#-----------------------------------------------------------------------# location of SCALAPACK# if you do not use SCALAPACK simply uncomment the line SCA#-----------------------------------------------------------------------BLACS=/usr/local/BLACS_lamSCA_= /usr/local/SCALAPACK_lam#SCA= $(SCA_)/scalapack_LINUX.a $(SCA_)/pblas_LINUX.a $(SCA_)/tools_LINUX.a \# $(BLACS)/LIB/blacsF77init_MPI-LINUX-0.a $(BLACS)/LIB/blacs_MPI-LINUX-0.a $(BLACS)/LIB/blacsF77init_MPI-LINUX-0.aSCA=#-----------------------------------------------------------------------# libraries for mpi#-----------------------------------------------------------------------LIB = -L../vasp.4.lib -ldmy \../vasp.4.lib/linpack_double.o $(LAPACK) \$(SCA) $(BLAS)# FFT: only option fftmpi.o with fft3dlib of Juergen FurthmuellerFFT3D = fftmpi.o fftmpi_map.o fft3dlib.o#-----------------------------------------------------------------------# general rules and compile lines#-----------------------------------------------------------------------BASIC= symmetry.o symlib.o lattlib.o random.oSOURCE= base.o mpi.o smart_allocate.o xml.o \constant.o jacobi.o main_mpi.o scala.o \asa.o lattice.o poscar.o ini.o setex.o radial.o \pseudo.o mgrid.o mkpoints.o wave.o wave_mpi.o $(BASIC) \nonl.o nonlr.o dfast.o choleski2.o \mix.o charge.o xcgrad.o xcspin.o potex1.o potex2.o \metagga.o constrmag.o pot.o cl_shift.o force.o dos.o elf.o \tet.o hamil.o steep.o \chain.o dyna.o relativistic.o LDApU.o sphpro.o paw.o us.o \ebs.o wavpre.o wavpre_noio.o broyden.o \dynbr.o rmm-diis.o reader.o writer.o tutor.o xml_writer.o \brent.o stufak.o fileio.o opergrid.o stepver.o \dipol.o xclib.o chgloc.o subrot.o optreal.o davidson.o \edtest.o electron.o shm.o pardens.o paircorrection.o \optics.o constr_cell_relax.o stm.o finite_diff.o \elpol.o setlocalpp.oINC=vasp: $(SOURCE) $(FFT3D) $(INC) main.orm -f vasp$(FCL) -o vasp $(LINK) main.o $(SOURCE) $(FFT3D) $(LIB)makeparam: $(SOURCE) $(FFT3D) makeparam.o main.F $(INC)$(FCL) -o makeparam $(LINK) makeparam.o $(SOURCE) $(FFT3D) $(LIB) zgemmtest: zgemmtest.o base.o random.o $(INC)$(FCL) -o zgemmtest $(LINK) zgemmtest.o random.o base.o $(LIB)dgemmtest: dgemmtest.o base.o random.o $(INC)$(FCL) -o dgemmtest $(LINK) dgemmtest.o random.o base.o $(LIB)ffttest: base.o smart_allocate.o mpi.o mgrid.o random.o ffttest.o $(FFT3D) $(INC) $(FCL) -o ffttest $(LINK) ffttest.o mpi.o mgrid.o random.o smart_allocate.o base.o $(FFT3D) $(LIB)kpoints: $(SOURCE) $(FFT3D) makekpoints.o main.F $(INC)$(FCL) -o kpoints $(LINK) makekpoints.o $(SOURCE) $(FFT3D) $(LIB)clean:-rm -f *.g *.f *.o *.L *.mod ; touch *.Fmain.o: main$(SUFFIX)$(FC) $(FFLAGS)$(DEBUG) $(INCS) -c main$(SUFFIX)xcgrad.o: xcgrad$(SUFFIX)$(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcgrad$(SUFFIX)xcspin.o: xcspin$(SUFFIX)$(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcspin$(SUFFIX)makeparam.o: makeparam$(SUFFIX)$(FC) $(FFLAGS)$(DEBUG) $(INCS) -c makeparam$(SUFFIX)makeparam$(SUFFIX): makeparam.F main.F## MIND: I do not have a full dependency list for the include# and MODULES: here are only the minimal basic dependencies# if one strucuture is changed then touch_dep must be called# with the corresponding name of the structure#base.o: base.inc base.Fmgrid.o: mgrid.inc mgrid.Fconstant.o: constant.inc constant.Flattice.o: lattice.inc lattice.Fsetex.o: setexm.inc setex.Fpseudo.o: pseudo.inc pseudo.Fposcar.o: poscar.inc poscar.Fmkpoints.o: mkpoints.inc mkpoints.Fwave.o: wave.inc wave.Fnonl.o: nonl.inc nonl.Fnonlr.o: nonlr.inc nonlr.F$(OBJ_HIGH):$(CPP)$(FC) $(FFLAGS) $(OFLAG_HIGH) $(INCS) -c $*$(SUFFIX) $(OBJ_NOOPT):$(CPP)$(FC) $(FFLAGS) $(INCS) -c $*$(SUFFIX)fft3dlib_f77.o: fft3dlib_f77.F$(CPP)$(F77) $(FFLAGS_F77) -c $*$(SUFFIX).F.o:$(CPP)$(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX).F$(SUFFIX):$(CPP)$(SUFFIX).o:$(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX)附件2:Makefile-IFC.SUFFIXES: .inc .f .f90 .F#-----------------------------------------------------------------------# Makefile for Intel Fortran compiler for P4 systems## The makefile was tested only under Linux on Intel platforms# (Suse 5.3- Suse 9.0)# the followin compiler versions have been tested# 5.0, 6.0, 7.0 and 7.1 (some 8.0 versions seem to fail compiling the code) # presently we recommend version 7.1 or 7.0, since these# releases have been used to compile the present code versions## it might be required to change some of library pathes, since# LINUX installation vary a lot# Hence check ***ALL**** options in this makefile very carefully#-----------------------------------------------------------------------## BLAS must be installed on the machine# there are several options:# 1) very slow but works:# retrieve the lapackage from # and compile the blas routines (BLAS/SRC directory)# please use g77 or f77 for the compilation. When I tried to# use pgf77 or pgf90 for BLAS, V ASP hang up when calling# ZHEEV (however this was with lapack 1.1 now I use lapack 2.0) # 2) most desirable: get an optimized BLAS## the two most reliable packages around are presently:# 3a) Intels own optimised BLAS (PIII, P4, Itanium)# /software/products/mkl/# this is really excellent when you use Intel CPU's## 3b) or obtain the atlas based BLAS routines# /# you certainly need atlas on the Athlon, since the mkl# routines are not optimal on the Athlon.# If you want to use atlas based BLAS, check the lines around LIB= ## 3c) mindblowing fast SSE2 (4 GFlops on P4, 2.53 GHz)# Kazushige Goto's BLAS# /users/kgoto/signup_first.html##-----------------------------------------------------------------------# all CPP processed fortran files have the extension .f90SUFFIX=.f90#-----------------------------------------------------------------------# fortran compiler and linker#-----------------------------------------------------------------------FC=mpif90# fortran linkerFCL=$(FC)#-----------------------------------------------------------------------# whereis CPP ?? (I need CPP, can't use gcc with proper options)# that's the location of gcc for SUSE 5.3## CPP_ = /usr/lib/gcc-lib/i486-linux/2.7.2/cpp -P -C## that's probably the right line for some Red Hat distribution:## CPP_ = /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/cpp -P -C## SUSE X.X, maybe some Red Hat distributions:CPP_ = ./preprocess <$*.F | /usr/bin/cpp -P -C -traditional >$*$(SUFFIX)#-----------------------------------------------------------------------# possible options for CPP:# NGXhalf charge density reduced in X direction# wNGXhalf gamma point only reduced in X direction# avoidalloc avoid ALLOCA TE if possible# IFC work around some IFC bugs# CACHE_SIZE 1000 for PII,PIII, 5000 for Athlon, 8000-12000 P4# RPROMU_DGEMV use DGEMV instead of DGEMM in RPRO (depends on used BLAS)# RACCMU_DGEMV use DGEMV instead of DGEMM in RACC (depends on used BLAS)#-----------------------------------------------------------------------CPP = $(CPP_) -DHOST=\"LinuxIFC\" \-Dkind8 -DNGXhalf -DCACHE_SIZE=12000 -DPGF90 -Davoidalloc \# -DRPROMU_DGEMV -DRACCMU_DGEMV#-----------------------------------------------------------------------# general fortran flags (there must a trailing blank on this line)#-----------------------------------------------------------------------FFLAGS = -FR -lowercase -assume byterecl#-----------------------------------------------------------------------# optimization# we have tested whether higher optimisation improves performance# -axK SSE1 optimization, but also generate code executable on all mach.# xK improves performance somewhat on XP, and a is required in order# to run the code on older Athlons as well# -xW SSE2 optimization# -axW SSE2 optimization, but also generate code executable on all mach.# -tpp6 P3 optimization# -tpp7 P4 optimization#-----------------------------------------------------------------------OFLAG=-O3OFLAG_HIGH = $(OFLAG)OBJ_HIGH =OBJ_NOOPT =DEBUG = -FR -O0INLINE = $(OFLAG)#-----------------------------------------------------------------------# the following lines specify the position of BLAS and LAPACK# on P4, V ASP works fastest with the libgoto library# so that's what I recommend#-----------------------------------------------------------------------# Atlas based libraries#ATLASHOME= $(HOME)/archives/BLAS_OPT/ATLAS/lib/Linux_P4SSE2/ #BLAS= -L$(ATLASHOME) -lf77blas -latlas# use specific libraries (default library path might point to other libraries)#BLAS= $(ATLASHOME)/libf77blas.a $(A TLASHOME)/libatlas.a# use the mkl Intel libraries for p4 ()# mkl.5.1# set -DRPROMU_DGEMV -DRACCMU_DGEMV in the CPP lines#BLAS=-L/opt/intel/mkl/lib/32 -lmkl_p4 -lpthread# mkl.5.2 requires also to -lguide library# set -DRPROMU_DGEMV -DRACCMU_DGEMV in the CPP lines#BLAS=-L/opt/intel/mkl/lib/32 -lmkl_p4 -lguide -lpthread# even faster Kazushige Goto's BLAS# /users/kgoto/signup_first.htmlBLAS= /usr/local/lib/libgoto/libgoto2_intel-r1.13.a -lsvml# LAPACK, simplest use vasp.4.lib/lapack_doubleLAPACK= ../vasp.4.lib/lapack_double.o# use atlas optimized part of lapack#LAPACK= ../vasp.4.lib/lapack_atlas.o -llapack -lcblas# use the mkl Intel lapack#LAPACK= -lmkl_lapack#-----------------------------------------------------------------------LIB = -L../vasp.4.lib -ldmy \../vasp.4.lib/linpack_double.o $(LAPACK) \$(BLAS)# options for linking (for compiler version 6.X, 7.1) nothing is requiredLINK =# compiler version 7.0 generates some vector statments which are located# in the svml library, add the LIBPA TH and the library (just in case)#LINK = -L/opt/intel/compiler70/ia32/lib/ -lsvml#-----------------------------------------------------------------------# fft libraries:# V ASP.4.6 can use fftw.3.0.X ()# since this version is faster on P4 machines, we recommend to use it#-----------------------------------------------------------------------#FFT3D = fft3dfurth.o fft3dlib.oFFT3D = fftw3d.o fft3dlib.o /usr/local/lib/libfftw3.a#===================================================================== ==# MPI section, uncomment the following lines## one comment for users of mpich or lam:# You must *not* compile mpi with g77/f77, because f77/g77# appends *two* underscores to symbols that contain already an# underscore (i.e. MPI_SEND becomes mpi_send__). The pgf90/ifc# compilers however append only one underscore.# Precompiled mpi version will also not work !!!## We found that mpich.1.2.1 and lam-6.5.X to lam-7.0.4 are stable# mpich.1.2.1 was configured with# ./configure -prefix=/usr/local/mpich_nodvdbg -fc="pgf77 -Mx,119,0x200000" \# -f90="pgf90 " \# --without-romio --without-mpe -opt=-O \## lam was configured with the line# ./configure -prefix /opt/libs/lam-7.0.4 --with-cflags=-O -with-fc=ifc \# --with-f77flags=-O --without-romio## please note that you might be able to use a lam or mpich version# compiled with f77/g77, but then you need to add the following# options: -Msecond_underscore (compilation) and -g77libs (linking)## !!! Please do not send me any queries on how to install MPI, I will# certainly not answer them !!!!#===================================================================== ==#-----------------------------------------------------------------------# fortran linker for mpi: if you use LAM and compiled it with the options# suggested above, you can use the following line#-----------------------------------------------------------------------#FC=mpif77#FCL=$(FC)#-----------------------------------------------------------------------# additional options for CPP in parallel version (see also above):# NGZhalf charge density reduced in Z direction# wNGZhalf gamma point only reduced in Z direction# scaLAPACK use scaLAPACK (usually slower on 100 Mbit Net)#-----------------------------------------------------------------------CPP = $(CPP_) -DMPI -DHOST=\"LinuxIFC\" -DIFC \-Dkind8 -DNGZhalf -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc \-DMPI_BLOCK=500 \# -DRPROMU_DGEMV -DRACCMU_DGEMV#-----------------------------------------------------------------------# location of SCALAPACK# if you do not use SCALAPACK simply uncomment the line SCA#-----------------------------------------------------------------------BLACS=$(HOME)/archives/SCALAPACK/BLACS/SCA_=$(HOME)/archives/SCALAPACK/SCALAPACK#SCA= $(SCA_)/libscalapack.a \# $(BLACS)/LIB/blacsF77init_MPI-LINUX-0.a $(BLACS)/LIB/blacs_MPI-LINUX-0.a $(BLACS)/LIB/blacsF77init_MPI-LINUX-0.aSCA=#-----------------------------------------------------------------------# libraries for mpi#-----------------------------------------------------------------------LIB = -L../vasp.4.lib -ldmy \../vasp.4.lib/linpack_double.o $(LAPACK) \$(SCA) $(BLAS)# FFT: fftmpi.o with fft3dlib of Juergen Furthmueller#FFT3D = fftmpi.o fftmpi_map.o fft3dlib.o# fftw.3.0.1 is slighly faster and should be used if availableFFT3D = fftmpiw.o fftmpi_map.o fft3dlib.o /usr/local/lib/libfftw3.a#-----------------------------------------------------------------------# general rules and compile lines#-----------------------------------------------------------------------BASIC= symmetry.o symlib.o lattlib.o random.oSOURCE= base.o mpi.o smart_allocate.o xml.o \constant.o jacobi.o main_mpi.o scala.o \asa.o lattice.o poscar.o ini.o setex.o radial.o \pseudo.o mgrid.o mkpoints.o wave.o wave_mpi.o $(BASIC) \nonl.o nonlr.o dfast.o choleski2.o \mix.o charge.o xcgrad.o xcspin.o potex1.o potex2.o \metagga.o constrmag.o pot.o cl_shift.o force.o dos.o elf.o \tet.o hamil.o steep.o \chain.o dyna.o relativistic.o LDApU.o sphpro.o paw.o us.o \ebs.o wavpre.o wavpre_noio.o broyden.o \dynbr.o rmm-diis.o reader.o writer.o tutor.o xml_writer.o \brent.o stufak.o fileio.o opergrid.o stepver.o \dipol.o xclib.o chgloc.o subrot.o optreal.o davidson.o \edtest.o electron.o shm.o pardens.o paircorrection.o \optics.o constr_cell_relax.o stm.o finite_diff.o \elpol.o setlocalpp.o aedens.oINC=vasp: $(SOURCE) $(FFT3D) $(INC) main.orm -f vasp$(FCL) -o vasp $(LINK) main.o $(SOURCE) $(FFT3D) $(LIB)makeparam: $(SOURCE) $(FFT3D) makeparam.o main.F $(INC)$(FCL) -o makeparam $(LINK) makeparam.o $(SOURCE) $(FFT3D) $(LIB) zgemmtest: zgemmtest.o base.o random.o $(INC)$(FCL) -o zgemmtest $(LINK) zgemmtest.o random.o base.o $(LIB)dgemmtest: dgemmtest.o base.o random.o $(INC)$(FCL) -o dgemmtest $(LINK) dgemmtest.o random.o base.o $(LIB)ffttest: base.o smart_allocate.o mpi.o mgrid.o random.o ffttest.o $(FFT3D) $(INC) $(FCL) -o ffttest $(LINK) ffttest.o mpi.o mgrid.o random.o smart_allocate.o base.o $(FFT3D) $(LIB)kpoints: $(SOURCE) $(FFT3D) makekpoints.o main.F $(INC)$(FCL) -o kpoints $(LINK) makekpoints.o $(SOURCE) $(FFT3D) $(LIB)clean:-rm -f *.g *.f *.o *.L *.mod ; touch *.Fmain.o: main$(SUFFIX)$(FC) $(FFLAGS)$(DEBUG) $(INCS) -c main$(SUFFIX)xcgrad.o: xcgrad$(SUFFIX)$(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcgrad$(SUFFIX)xcspin.o: xcspin$(SUFFIX)$(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcspin$(SUFFIX)makeparam.o: makeparam$(SUFFIX)$(FC) $(FFLAGS)$(DEBUG) $(INCS) -c makeparam$(SUFFIX)makeparam$(SUFFIX): makeparam.F main.F## MIND: I do not have a full dependency list for the include# and MODULES: here are only the minimal basic dependencies# if one strucuture is changed then touch_dep must be called# with the corresponding name of the structure#base.o: base.inc base.Fmgrid.o: mgrid.inc mgrid.Fconstant.o: constant.inc constant.Flattice.o: lattice.inc lattice.Fsetex.o: setexm.inc setex.Fpseudo.o: pseudo.inc pseudo.Fposcar.o: poscar.inc poscar.Fmkpoints.o: mkpoints.inc mkpoints.Fwave.o: wave.inc wave.Fnonl.o: nonl.inc nonl.Fnonlr.o: nonlr.inc nonlr.F$(OBJ_HIGH):$(CPP)$(FC) $(FFLAGS) $(OFLAG_HIGH) $(INCS) -c $*$(SUFFIX)$(OBJ_NOOPT):$(CPP)$(FC) $(FFLAGS) $(INCS) -c $*$(SUFFIX)fft3dlib_f77.o: fft3dlib_f77.F$(CPP)$(F77) $(FFLAGS_F77) -c $*$(SUFFIX).F.o:$(CPP)$(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX).F$(SUFFIX):$(CPP)$(SUFFIX).o:$(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX)# special rules#-----------------------------------------------------------------------# these special rules are cummulative (that is once failed# in one compiler version, stays in the list forever)# -tpp5|6|7 P, PII-PIII, PIV# -xW use SIMD (does not pay of on PII, since fft3d uses double prec)# all other options do no affect the code performance since -O1 is used#-----------------------------------------------------------------------fft3dlib.o : fft3dlib.F$(CPP)$(FC) -FR -lowercase -O1 -tpp7 -xW -unroll0 -e95 -vec_report3 -c $*$(SUFFIX) fft3dfurth.o : fft3dfurth.F$(CPP)$(FC) -FR -lowercase -O1 -c $*$(SUFFIX)radial.o : radial.F$(CPP)$(FC) -FR -lowercase -O1 -c $*$(SUFFIX)symlib.o : symlib.F$(CPP)$(FC) -FR -lowercase -O1 -c $*$(SUFFIX)symmetry.o : symmetry.F$(CPP)。

相关文档
最新文档