***************************************************************************************************************************************************************状态部分***************************************************************************************************************************************************************此文件上次修改日期为2001年5月3日。BLACS的1.1版于1997年1月5日发布。此版本的测试仪位于gzipped目标文件中blacstester.tgz(blacstester测试程序.tgz)此版本的BLACS有4个版本:mpiblas.tgz:使用MPI的BLACSmplblacs.tgz:BLACS使用IBM SP的MPL库nxblacs.tgz:使用英特尔NX库的BLACSpvmblacs.tgz:BLACS使用PVMCMMDBLACS似乎已过时。如果你需要这个BLACS版本,发送邮件至blacs@cs.utk.edu。发现BLACS错误:MPI BLACS:错误#8和#9、#13、#16发现BLACS测试仪错误:无。此版本有3个修补程序。补丁是累积的,所以你只需获取最新的mpiblas-patch03.tgz。所有g77用户都应该检查MPI ERROR#14,以获取有关生成测试仪使用g77正确编译。LAM-MPI用户应检查MPI错误#12。该文件的其余部分分为4个部分,每种BLACS类型一个。***************************************************************************************************************************************************************MPIBLACS部分***************************************************************************************************************************************************************请注意可疑MPICH错误中的MPICH版本号。这些可能已被后续版本修复。确保您已经应用了上述mpi修补程序文件!=======================================WHERE:MPICH1.0.13,带有补丁WHAT:可能的MPICH错误状态:由MPICH1.1修复如果将大补丁应用于MPICH1.0.13,并运行BLACS测试仪,它将标准输入文件的双精度BS/BR测试失败。它是在双精度BS/BR测试中没有实际错误:相同的失败例如,如果您运行3次整数测试,就会发生这种情况。这似乎是是与相关联的某种资源耗尽或内存覆盖补丁。问题可能出现在BLACS中,但它们使用的是未修补的MPICH1.0.13、所有以前的MPICH版本以及IBM的MPI。目前最好的解决方案可能是不应用MPICH修补程序。对于LINUX用户,您可能需要使用MPICH1.0.12(MPICH1.01.3无法在上编译LINUX(不带补丁)。此错误导致的错误消息是:>2-MPI_p2_11509:p4_错误::3>rm_l_2_11511:p4_错误:中断信号:2>TYPE_COMMIT:数据类型参数无效>[2] 正在中止程序!>[2] 正在中止程序!=======================================其中:所有MPICH内容:MPICH错误状态:未修复在MPICH1.0.13和MPICH1.1中,MPICH的MPI_Abort中似乎存在错误。它根本不会杀死任何其他进程,但似乎表现得很好比如调用本地exit()。这将导致BLACS测试仪挂在辅助测试中的BLACS_ABORT测试。这是一个直接的MPI代码演示错误:#包括#包括“mpi.h”main(int narg,char**args){整数i,Iam,Np;MPI_Init(&narg,&args);MPI_Comm_size(MPI_Comm_WORLD,&Np);MPI_Comm_rank(MPI_Comm_WORLD,&Iam);如果(Iam==Np-1)MPI_Abort(MPI_COMM_WORLD,-2);while(1);MPI_Finalize();}=======================================其中:SGI的MPI v2.0内容:SGI MPI错误状态:已修复v3.0SGI的MPI v2.0无法处理重复使用和释放数据类型。此错误已在SGI MPI v3.0中修复。下面包括一个小演示错误的直接MPI程序。此程序失败在第984次k循环迭代中,使用来自MPI的以下消息(您将得到如果同时运行BLACS测试仪,则显示此消息):>断言失败:i<1024,文件类型_util.c,第69行,pid 4965>环路983>断言失败:i<1024,文件类型_util.c,第69行,pid 4966我们已在此平台上成功使用了SGI MPI v3.0和MPICH。#包括#包括“mpi.h”main(int narg,char**args){int i,Iam,Np,k,j;MPI_Datatype Dtype;MPI_Status统计;MPI_Init(&narg,&args);MPI_Comm_size(MPI_Comm_WORLD,&Np);MPI_Comm_rank(MPI_Comm_WORLD,&Iam);fprintf(stdout,“%d:开始测试\n”,Iam);对于(k=0;k!=10000;k++){i=j=1;MPI_Type_vector(1、1、1,MPI_INT和Dtype);MPI_Type_commit(&D类型);如果(Iam==0){MPI_Send(&I am,1,D类型,1,0,MPI_COMM_WORLD);}其他的{MPI_Recv(&i,1,数据类型,0,0,MPI_COMM_WORLD,&stat);}MPI_Type_free(&D类型);fprintf(stdout,“循环%d\n”,k);}fprintf(stdout,“MPI健全性测试通过”);MPI_Finalize();}=======================================其中:RS6000什么:编译器问题必须使用gcc而不是xlc在rs6000上编译MPICH1.0.10。要配置MPICH,需要在配置行中添加-cc=gcc(因此我的配置行是:“configure-device=ch_p4-arch=rs6000-cc=gcc”)。=======================================位置:SUN4内容:编译器不匹配状态:由编译器标记修复我们使用gcc在SUN4上编译BLACS,这似乎需要所有双精度数据都在8字节边界上对齐。SUN的f77默认值将本地双精度标量与4字节边界对齐,可能导致总线错误。使用f77标志-f编译所有fortran强制8字节对齐的代码。因此,在中的NOPT宏中添加-fSLmake.inc和Bmake.inc中的F77NO_OPTFLAGS。=======================================其中:T3E内容:MPI错误状态:在1.2.0.0.6beta中修复CRAY MPI(MPT 1.1.0.2)在处理0字节数据类型时出错。这是T3E上出现故障的一些合法MPI代码:#包括#包括main(int nargs,char**args){MPI_数据类型Dt;国际汇率;MPI_Init(&nargs,&args);printf(“如果这个例程没有完成,您应该设置SYSERRORS=-DZeroByteTypeBug.“);ierr=MPI_Type_vector(0、1、1、MPI_INT和Dt);if(ierr!=MPI_SUCCESS)printf(“MPI_Type_vector返回%d,set SYSERRORS=-DZeroByteTypeBug\n”,ierr);其他MPI_Type_commit(&Dt);if(ierr==MPI_SUCCESS)printf(“将此系统的SYSERRORS保留为空。\n”);MPI_Finalize();}=======================================其中:T3E内容:MPI错误状态:已在1.2.0.0.6测试版中修复CRAY MPI(MPT 1.1.0.2)有一个奇怪的错误,无法正确处理如果用于通信的通信器不是MPI_COMM_WORLD公司。下面是一个显示错误的小例程:#包括#包括main(int nargs,char**args){MPI_数据类型Dt;MPI_Comm CMPI_Comm_WORLD;int Iam,Np,i,k,ierr;int-ibuff[4];MPI_Init(&nargs,&args);MPI_Comm_rank(MPI_Comm_WORLD,&Iam);MPI_Comm_size(MPI_Comm_WORLD,&Np);MPI_Comm_dup(MPI_Comm_WORLD和CMPI_Comm_FORLD);如果(Iam)对于(i=0;i!=4;i++)ibuff[i]=-9999;对于(i=0;i!=4;i++)ibuff[i]=i+1;ierr=MPI_Type_vector(2、1、2、MPI_INT和Dt);if(ierr!=MPI_SUCCESS)printf(“MPI_Type_vector返回%d\n”,ierr);其他MPI_Type_commit(&Dt);MPI_Cast(ibuff,1,Dt,0,CMPI_COMM_WORLD);MPI_类型自由(&Dt);对于(k=0;k!=Np;k++){如果(Iam==k){fprintf(标准输出,“%d:ibuff=”,Iam);对于(i=0;i!=4;i++)fprintf(标准输出,“%d”,ibuff[i]);fprintf(标准输出,“\n”);}MPI_载波(CMPI_COMM_WORLD);}MPI_Finalize();}如果CMPI_COMM_WORLD设置为MPI_COMM_FORLD,此例程将生成正确答案:>0:ibuff=1 2 3 4>1:ibuff=1-9999 3-9999否则,您将得到:>_T3EMPI_coll_send要求处理未知数据类型。>0:ibuff=1 2 3 4>1:ibuff=0-9999 0-9999=======================================其中:SGI Origin 2000内容:MPIBLACS错误状态:已通过修补程序修复BLACS未释放通过调用MPI_COMM_GROUP创建的组,导致一些系统将耗尽组。=======================================WHERE:T3E内容:MPI BLACS错误状态:通过补丁修复BLACS在处理CRAY的非标准时出现了几个问题F77数据类型。此外,您不能在此平台上从C调用F77的mpi_init。这些问题已通过修补程序修复。======================================WHERE:T3E内容:MPI错误状态:修补程序01、02中的解决方法mpt.2.0.0.6beta无法处理与MPI_Type_indexed一起使用的0长度段。要解决此问题,请应用修补程序并将T3ETrError标志放入您的Bmake.inc(如补丁提供的示例Bmake.T3E所示)。=====================================MPI错误#11=================================WHERE:T3E内容:MPI错误状态:修补程序01、02中的解决方法mpt.2.0.0.6beta无法处理混合类型的某些缩减MPI数据类型。要解决此问题,请应用补丁并抛出Bmake.inc中的T3EReductErr标志(如示例Bmake.T3E所示随补丁提供)。======================================WHERE:所有平台WHATE:新功能状态:补丁01、02中MPI-2提供了在C和之间转换通信器的标准方法Fortran77.如果MPI实现了这些例程,请将TRANSCOMM设置为-DUseMpi2。我们有报告称,新版本的LAM-MPI使用此设置。======================================WHERE:所有平台WHAT:BLACS ERROR STATUS:补丁02中即使在第一个补丁之后,在释放组时仍然存在错误。在BLACS/SRC/MPI/INTERNAL/BI_TransUserComm.c中,未释放组ugrp。在BLACS/SRC/MPI/INTERNAL/BI_MPI_F77_to_c_trans_comm.c中,有个组被释放作为沟通者,而不是群体。======================================WHERE:LINUX/g77内容:编译器更改状态:由标志修复BLACS测试仪使用一个大数组来模拟动态存储器。将此数组传递给接受它作为不同数据数组的例程类型。77国集团已将其从警告升级为错误。整齐要告诉g77允许此行为,请从以下位置更改BLACS/TESTING/Makefile第39行:$(F77)$(F77NO_OPTFLAGS)-c$*.f收件人:$(F77)$(F77NO_OPTFLAGS)-fno-globals-fno-f90-fugly-complex-w-c$*.f======================================地点:????内容:编译器错误/宏问题状态:未修复有一个未诊断的问题导致一些用户执行dwalltime00例程返回错误值。似乎存在问题宏名称溢出,但cpp或代码中的错误尚未排除。如果从dwalltime00得到错误的返回值,请覆盖BLACS/SRC/MPI/dwalltime00_.c带有:#包括“Bdef.h”#if(接口==C_CALL)双Cdwalltime00(无效)#其他F_DOUBLE_FUNC dwalltime00_(无效)#结尾{return(MPI_Wtime());}======================================WHERE:mpich1.2.*内容:BLACS错误状态:由补丁03修复如果使用BLACS C init时缺少f77 argc和argv符号例程s,您将看到此错误。***************************************************************************************************************************************************************MPLBLACS部分***************************************************************************************************************************************************************=======================================其中:SP2内容:MPL状态错误:未修复MP_BRECV似乎要求按照消息的接收顺序接收消息已发送,即使所有消息都已成功发送。IBM已报告这不是一个错误,而是文档中的疏忽。MPL不支持接收任何顺序的消息已发送。下面是一个显示问题的小例程:程序tst整数k,iam,Np,ictxt,i,j调用mpc_environ(Np,Iam);k=上午+100打印*,“开始”如果(iam.eq.1),则调用mp_send(Iam,4,0,2,i)调用mp_send(k,4,0,3,j)打印*,mp_status(i)打印*,mp_status(j)否则,如果(iam.eq.0),则调用mp_brecv(k,4,1,3,j)调用mp_brecv(k,4,1,2,j)结束条件为print*,'done'停止结束运行此命令时,输出为:xtst2-进程2开始开始44完成因此,两个发送都完成了,但接收仍然挂起。***************************************************************************************************************************************************************NXBLACS部分***************************************************************************************************************************************************************=======================================其中:某些NX机器内容:NXBLACS状态错误:未修复NXBLACS使用复制优化,根据严格的IEEE算术规则,非法。更准确地说,双精度有时用于复制浮点或整数。在实施时,作者测试了所有可用的NX平台,未发现错误,因此将优化均匀认为这是非法的。不幸的是,在较新的平台上(即ASCI红色和最新MPI)这会导致问题。所以,如果你得到测试仪中的神秘错误,这可能是正在发生的事情。为了防止BLACS如果不应用此非法优化,请删除中的以下行BLACS/SRC/NX/内部/mvcopy4.c:长iaddr;iaddr=(长)A;/**如果地址在8字节的边界上并且lda和m可被2整除,*可以使用两倍大小的指针进行快速打包*/if(!(iaddr%8)&&!(lda%2)&&!(m%2))mvcopy8(m/2,n,(双*)A,lda/2,(双*)buff);/**否则,必须使用4字节打包*/其他的您还需要从中删除基本相同的行BLACS/SRC/NX/内部/vmcopy4.c:长iaddr;iaddr=(长)A;/**如果地址位于8字节边界上,并且lda和m可以被2整除,*可以使用两倍大小的指针进行快速打包*/if(!(iaddr%8)&&!(lda%2)&&!(m%2))vmcopy8(m/2,n,(double*)A,lda/2,(douple*)buff);/**否则,必须使用4字节打包*/其他的***************************************************************************************************************************************************************PVMBLACS截面***************************************************************************************************************************************************************====~=======>===:====2====1 PVM错误==================================其中:SUNMP PVM内容:PVM3.3.11错误状态:未修复SUNMP PVM损坏。最好的办法是装配PVM_ARCH,使其能够思考它是SUN4SOL2,并使用该版本的PVM。====~=======>===:====2 PVM错误#2==================================其中:SGI5/new gcc内容:编译器错误状态:未修复这似乎是编译器在将文件包含在例程的括号。在启动的作用域之前必须包含系统文件例行程序。因此,在BLACS/SRC/PVM/BLACS_setup_.c中,移动行:#包括到文件的第二行(在#include“Bdef.h”之后)。====~=======>===:===+====3 PVM错误#3==================================其中:SGI5内容:编译器错误状态:未修复如果启用了优化,编译器将不接受-o(重命名选项)打开。这会中断C接口的编译。B品牌。PVM-SGI5默认值使用gcc。如果你不能使用gcc,你可以做一个变通方法,比如BLACS/SRC/PVM/Makefile中的以下内容:原始Makefile的第166行:.后缀:.o。C类抄送:$(CC)-c$(CCFLAGS)-o c$*.o$(BLACSDEFS)-DCallFromC$<mv C$*.o$*。C类SGI错误解决方法:.后缀:.o。C类.c.c:ln-s$*.c c$*.c$(CC)-c$(CCFLAGS)$(BLACSDEFS)-DCallFromC c$*.cmv C$*.o$*。C类rm-f加元*.C--------------4570007A3B68A7D31D3D4B86--