摘要: programmainparameter(Iout=12)real*8Tim0,CPUTimopen(Iout,file='file.out')Tim0=CPUTim(0)!ini.CPUtimeCpartforcalc.CPUtimeherecallPrtTim(Iout,Tim0)endSubroutinePrtTim(IOut,RefTim)ImplicitReal*8(A-H,O-Z)CCPrintouttotalTimeusedbythejob.C1000Format('Jobcputime:',I3,'days',I2,'ho 阅读全文
posted @ 2011-05-04 15:57 super119 阅读(549) 评论(0) 推荐(0)
摘要: HPL Tuning After having built the executable hpl/bin/<arch>/xhpl, one may want to modify the input data file HPL.dat. This file should reside in the same directory as the executable hpl/bin/<arch>/xhpl. An example HPL.dat file is provided by default. This file contains information about 阅读全文
posted @ 2011-05-04 15:55 super119 阅读(629) 评论(0) 推荐(0)
摘要: HPL Frequently Asked Questions What problem size N should I run ? What block size NB should I use ? What process grid ratio P x Q should I use ? What about the one processor case ? Why so many options in HPL.dat ? Can HPL be outperformed ? ------------------------------------------------------------ 阅读全文
posted @ 2011-05-04 15:54 super119 阅读(552) 评论(0) 推荐(0)
摘要: 1、if语句后面的条件表达式一定要用()括 起来,如 if ( salary < 1000 ) then if ( (salary >= 1000) .AND. ( salary <= 5000) ) then 没有括号的话编译会产生错误 2、if-else if从句不用end if语句。也就是说,虽然if-else if 这个从句中含有两个if判断,但在最后条件判断结束后,只需要写 一个end if就OK了,不用写多个,如: if ( salary < 1000 ) then ! do something else if ( salary > 5000) the 阅读全文
posted @ 2011-05-04 15:52 super119 阅读(1073) 评论(0) 推荐(0)
摘要: MPI_Bcast - Broadcast a message from the process with rank "root" to all other processes of the group int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm) 整个函数的收发过程是这样,如果要发送一个广播信息,那么将root这个参数填成该进程的id号即可完成发送,在其他进程如果要接收的话,也是用这个函数,此时进程会检查root参数和自身的进程ID号,如果发现自 阅读全文
posted @ 2011-05-04 15:52 super119 阅读(1633) 评论(0) 推荐(1)
摘要: Fortran程序在gdb下的调试,默认情况下是不可以的,这里面有一些技巧 如果是Fortran77的程序,使用g77编译,g77 -g -o hello hello.f,然后使用gdb hello,开启gdb调试界面,此时输入l是无法列出代码的,因为在调试fortran的时候,要手动指定function或subroutine或program的名字,所以这里要输入 l MAIN__ (MAIN必须大写,后面跟两个下划线),此时就可以列出program main下的代码了,使用break,run,continue这些命令就可以了!如果要调试一个subroutine或function,同理按照这样 阅读全文
posted @ 2011-05-04 15:51 super119 阅读(1263) 评论(0) 推荐(0)
摘要: ./MPI程序名-p4pg 文件名[MPI程序参数] 这种方式可以精确控制在每台结点机上启动的MPI 进程数与进程序号,并且允许在不同结点机 上启动不同的可执行文件(适用于Master/Slave 模式的并行程序)。文件文件名中按下列格式列 出各结点机上启动的程序名: 结点机名1 0 可执行文件名1 结点机名2 1 可执行文件名2 结点机名3 1 可执行文件名3 ... ... 结点机名n 1 可执行文件名n 其中结点机名1 必须是运行该命令时所在的结点机, 可执行文件名1 必须与命令行上的MPI程序名 为同一文件。所有可执行文件名必须使用绝对路径(如/home/zlb/test/cpi)。通 阅读全文
posted @ 2011-05-04 14:01 super119 阅读(1069) 评论(0) 推荐(0)
摘要: 评估和测试PC的性能有BenchMark,而对高性能计算系统而言,其评估和测试的 BenchMark是什么呢? 计算机的性能评估与测试就是我们通常所说的BenchMark,普通的计算机用户对于 BenchMark并不陌生。相比较而言,HPC的性能评估与测试要复杂得多,需要加上专 家的知识才能真正地对一个系统进行客观、公正的综合评价。 随着HPC系统的逐渐普及、体系结构的统一和并行程序设计环境的标准化,已经有 几个经过多年开发和改进的Benchmark软件包逐渐获得厂商、用户和研究者的认可, 这些软件包或测试程序是Linpack测试、NAS Parallel Benchmark、SPEC HPC 阅读全文
posted @ 2011-05-04 14:00 super119 阅读(1077) 评论(0) 推荐(0)
摘要: 比如C的代码(文件名:test.c)如下(注意C源代码里不能有main函数,编译时也一定要加-c开关):#include<stdio.h>#definesub1sub1_voidsub1(int*num){printf("%d\n",*num);}Fortran的代码(文件名:testf.f)如下(Fortran调用C的sub1函数):programmainimplicitnoneintegeraa=10callsub1(a)end这样就OK了!编译的时候,这样操作:g77-ctestf.f-otestf.ogcc-ctest.c-otest.og77test. 阅读全文
posted @ 2011-05-04 13:52 super119 阅读(743) 评论(0) 推荐(0)
摘要: 这两个指标出现在top500的机器评测参数表中,具体含义如下: Nmax:Linpack测试求解最大问题规模,取值有个经验公式:所有内容总量(换算到Byte)/8再开根号 NHalf:这个指标很有意思。这个指标指的是:当Linpack求解的问题规模为NHalf时,出来的测试结果正好是集群理论峰值(Rpeak)的一半。为什么要设这个指标呢?因为这个指标可以反映整个系统的bandwidth和interconnect的性能指标。一般来说,这个NHalf的值越小越好,一般在Nmax的十分之一以下为好。可以这样理解:问题规模NHalf越小,机器还能跑出Rpeak一般的Flops来,就说明这个机器的带宽很 阅读全文
posted @ 2011-05-04 13:47 super119 阅读(650) 评论(0) 推荐(0)
摘要: 前面讲过,对于不同数据类型的数据和非连续的数据来说,我们可以用新建一个数据类型的方式来将这些数据做整体发送。另一种解决方案就是,将这些数据打包发送,然后在接收端再解包。这种方式就是标题的这两个函数的作用,他们就简单的很多,因为逻辑非常单纯。这里有示例代码: 有人要问,既然这个能解决问题又简单,为什么MPI还要定义新数据类型这个难懂又麻烦的东东呢?我的理解是这样的:MPI给我们一个机会,让我们可以定义新的数据类型,这样第一,能让我们的代码逻辑性更好,可读性更强;第二,对于MPI2所定义的并行文件操作来说,有了自定义数据类型的支持,无疑能给文件的读写带来极大的便利(我们可以将一堆无关的数据重新定义 阅读全文
posted @ 2011-05-04 13:44 super119 阅读(678) 评论(0) 推荐(0)
摘要: 我们都只到,MPI_SEND会为我们作发送数据缓冲区申请和管理的工作,但是,如果这个工作失败了,那么,MPI_SEND就会永久阻塞。当然,这种情况只限于MPICH,LAM和这个不太一样,下面将提到。 这种情况一般都会发生在机器内存告急的时候,此时,我们调用MPI_SEND,他会先为我们申请一块buffer,然后发送,如果这个buffer申请失败,那么,在MPICH中,MPI_SEND就会block。特别是在这种情况下就更容易发生:我们在一个进程中,用for循环做很多次MPI_SEND,然后,在另外一个进程中,做很多次对应的MPI_RECV,这种操作,是一种危险的操作,因为如果此时for循环中有 阅读全文
posted @ 2011-05-04 13:39 super119 阅读(1144) 评论(0) 推荐(0)
摘要: 在应用程序运行中,我们可以通过以下方法查看HCA网卡的端口流量信息,步骤如下,供参考: 1)清除正在使用端口的状态,假定使用端口为port1 #cd /proc/iba/mt23108/1/port1/ #echo > stats 2)运行应用程序 3)察看port1的状态,使用命令: #cat /proc/iba/mt23108/1/port1/stats 或直接使用命令"p1stats" 另外,我们可以保存IB端口的接收发送数据流量信息,并且通过分析这些数据实现对应用程序调优。 阅读全文
posted @ 2011-05-04 13:38 super119 阅读(442) 评论(0) 推荐(0)
摘要: rsh可以用来执行一个command,如rsh localhost hostname 如果最后的command这个参数为空,那么rsh就会去调用rlogin,结果是-直接得到一个shell 默认情况下,这两个东西执行的时候都是需要密码的,但可以通过配置“信任主机”的方式,来使得这两者运行时不需要密码 具体配置如下: 1、编辑 /etc/xinetd.d/rsh 和 /etc/xinetd.d/rlogin 这两个文件,将其中的 disable=yes 都改成 disable=no 2、/etc/init.d/xinetd restart 3、编辑信任主机。这里有两个途径:(1)编辑 /etc/ 阅读全文
posted @ 2011-05-04 13:38 super119 阅读(655) 评论(0) 推荐(0)
摘要: 1、VASP4.6 是量子化学计算的一个商业软件,这里是源码包。来自奥地利。这个软件也可用在物理系,做分子动力学等分析。 2、首先声明一点:VASP4.6无法在Intel Fortran Compiler 8系列上编译通过。会报一个fortcom的内部错误,这是编译器的bug。 3、VASP建议在Intel Fortran Compiler V7上编译,由于手上没有这个版本,所以,只好拿了一个最新的Intel Fortran Compiler 9.0来测试(装完编译器后记得source ifortvars.sh和写一个简单的f90程序来测试一下)。 4、首先tar开两个包,自然先装vasp.4 阅读全文
posted @ 2011-05-04 13:37 super119 阅读(1030) 评论(0) 推荐(0)
摘要: SilverStorm的Infiniband的设备支持两种通讯协议:一种是IB Native,在MPICH编译的时候,体现在configure的时候,指定device=vapi;一种是IP over IB的方式,这种在MPICH编译的时候,device就是以太网了,因为上面跑的就是IP和TCP这些东西。 所以,很显然的是,使用IB Native方式的通讯方式,Infiniband的性能才能得到发挥,否则无法发挥出来。也就是说,所有的并行应用,如果用IP over IB方式的MPICH,那么肯定都是可以跑的(不用MPICH的应用不谈,要具体问题具体分析),但性能肯定要打折扣;用IB native 阅读全文
posted @ 2011-05-04 13:36 super119 阅读(1756) 评论(0) 推荐(0)
摘要: 首先是编译器,这个不多说了,谁都知道。 更重要的是Intel的数学库,称为Math Kernel Library-MKL 还有,Intel有一套Cluster Tools,里面包含了Cluster MKL、ITC、ITA、Intel MPI等。 我们都知道,高性能计算大多用于工程计算,目前的工程计算主要需要这样几个东西:FFT(快速傅立叶变换)、LAPACK(线性代数Package)、BLAS(基础线性代数函数库)、SCAPACK(高扩展的LAPACK,主要用于分布式内存体系结构,也就是Cluster结构的并行化的LAPACK)。这些东西都有免费的开源实现,如FFTW(MIT做的FFT)、LA 阅读全文
posted @ 2011-05-04 13:35 super119 阅读(2566) 评论(0) 推荐(0)
摘要: 机器只有一台,有两个CPU,各为Dual Core的2.8G的Nocona 测试操作系统为RedHat Enterprise Linux AS3 Update 3,一定要用这个版本,试了其他版本,都有问题!x86_64的版本普遍有一个编译gromacs时链接libX11.so(-lX11)不兼容的问题,目前还不知道如何解决! 编译器就用了一个Intel Fortran Compiler 9 Build 021版本,因为只有Intel 9系列的编译器才能发挥dual core的威力。没用Intel的C Compiler,不知道用了之后会不会更好。 FFT还是用的FFTW2.1.3,因为不知道如何 阅读全文
posted @ 2011-05-04 13:33 super119 阅读(280) 评论(0) 推荐(0)