Re: [Dpcl-user] POE 4.1 and DPCL 3.3.3
Brought to you by:
dpcl-admin,
dwootton
From: Dave W. <dwo...@us...> - 2005-03-15 21:33:11
|
Harald We are not aware of any issues with POE and DPCL at these levels, so need=20 more information. What levels of AIX bos (bos.mp or bos.up components) are you running? Does it make a difference if you run with the 32 bit kernel or 64 bit=20 kernel? Is the target application 32 bit or 64 bit? Can you try this with DPCL 3.3.4 on this system? If this doesn't resolve the problem, can you generate a DPCL log with all=20 tasks (poe home task and all application tasks) on the same node> You can=20 do this by inserting a call to Ais=5Fblog=5Fon("hostname", LGL=5Fdetail,=20 LGD=5Fdaemon, NULL, 0) just before the call to bcreate, replacing hostname = with the real hostname of the host where the daemon runs. The log file=20 will go to /tmp on the node where the DPCL daemon runs with the name=20 /tmp/dpclsd.pid where pid is the daemon process pid. Once you get that=20 log, you may want to take a look to see if you can spot the reason for the = failure. Otherwise, compress the logfile and send it to my email=20 (dwo...@us...) Dave Harald Servat Gelabert <ha...@ce...>=20 Sent by: dpc...@li... 03/15/2005 06:14 AM To dpc...@li... cc Subject [Dpcl-user] POE 4.1 and DPCL 3.3.3 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello, I'm experiencing problems with our DPCL tool when creating MPI applications (bcreate returns ASC=5Ffailure) on a Power4 system with AIX 5.2, POE 4.1.1.5, DPCL 3.3.3, XLC 6 and XLF 8.1. The same environment works fine using non MPI applications. I've managed to modify the sample 'listmod' so as to 'list' MPI applications, but it fails in the same manner (I attach it, but it has few modifications compared with the sequential listmod). Is there any incompatibility between POE 4.1 and DPCL 3.3.3? We have a machine with POE 3.2 and DPCL 3.3.3/3.3.4 and MPI applications work fine. Regards, - -- -=20 ------------------------------------------------------------------------- ~ Harald Servat Gelabert (harald at cepba dot upc dot edu) ~ o//o Centre Europeu de Paral.lelisme de Barcelona ( CEPBA ) ~ o//o Tel: +34-93-401 74 20 ~ o//o Fax: +34-93-401 25 77 ~ o//o c/Jordi Girona, 1-3, M=F2dul D6. E-08034 Barcelona, Catalunya -=20 ------------------------------------------------------------------------- The consciousness of AC encompassed all of what had once been a Universe and brooded over what was now Chaos. Step by step, it must be done. And AC said, "LET THERE BE LIGHT!" And there was light. - -=3D Isaac Asimov, The Last Question -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCNsN7RamHFo9MdBMRAk7qAJ4mKlGzmKO6n5DlmBx3UyOnItEItgCfbUB4 GUlNAXQzXQHYo49FNtjL3Sc=3D =3D6BSV -----END PGP SIGNATURE----- /**************************************************************************= ****/ /* */ /* This software is subject to the terms of the IBM Public License */ /* You must accept the terms of this license to use this software. */ /* */ /* Copyright (C) 2001, International Business Machines Corporation */ /* */ /* Further information about the IBM Public License Version 1.0 is=20 obtained */ /* from URL=20 http://oss.software.ibm.com/developer/opensource/license10.html */ /* */ /**************************************************************************= ****/ #pragma comment(copyright,"5765-543 (C) Copyright IBM Corp. 1998 $Source:=20 /usr/cvs/dpcl/dpcl/src/samples/listmod/listmod.C,v $ $Id: listmod.C,v 1.2=20 2002/06/13 19:22:34 jrobb Exp $ $Date: 2002/06/13 19:22:34 $ %Z% %I% %W%=20 %D% %T%") #include <stdio.h> #include <stdlib.h> #include <AisGlobal.h> #include <AisInit.h> #include <AisMainLoop.h> #include <Process.h> #include <InstPoint.h> #include <ProbeExp.h> #include <ProbeHandle.h> #include <InstPoint.h> #include <SourceObj.h> #include <AisStatus.h> #include <LogSystem.h> #include <FunctionList.h> #include <FunctionId.h> #include <PoeAppl.h> // #define LOG=5FON 1 // #define DEBUG=5FON 1 void stderr=5Fcb(GCBSysType sys, GCBTagType tag, GCBObjType obj, GCBMsgType= =20 msg); void stdout=5Fcb(GCBSysType sys, GCBTagType tag, GCBObjType obj, GCBMsgType= =20 msg); bool module=5Fmatch(char *in=5Fstr, FunctionList *flp); bool function=5Fmatch(char *in=5Fstr, FunctionList *flp); void show=5Ffunction=5Flist(FunctionList *flp); bool minus=5Ff =3D false; /////////////////////////////////////////////////////////////////////// // // show source structure of a program // /////////////////////////////////////////////////////////////////////// main(int argc, char *argv[], char *envp[]) { if ( argc < 3 ) { printf("Usage: listmod <hostname> <execname=5Ffull=5Fpath> [-f=20 func=5Freg=5Fexpr]\n"); exit(1); } Process P; PoeAppl POE; SourceObj program, file, function; char host[MAXPATHLEN], path[MAXPATHLEN]; char *argvp[2]; int c, x, z; char func=5Fexpr[MAXPATHLEN] =3D "*"; AisStatus sts; if (strlen(argv[1]) > 255) { fprintf(stderr, "host name is too long\n"); return(99); } if (strlen(argv[2]) > 255) { fprintf(stderr, "path name is too long\n"); return(99); } Ais=5Finitialize(); strcpy(host, argv[1]); strcpy(path, argv[2]); #ifdef LOG=5FON printf("Args \n"); for (c =3D 1; c < argc; c++) { printf(" %d %s\n", c, argv[c]); } printf("Ais=5Fblog=5Fon \n"); fflush(stdout); sts=3DAis=5Fblog=5Fon(host, LGL=5Fdetail, LGD=5Fdaemon, NULL, NULL); if ( (int) sts !=3D 0) { printf("blog=5Fon %s\n", sts.status=5Fname()); exit(1); } printf("Ais=5Fblog=5Fon done \n"); fflush(stdout); #endif // check for function regular expression flag if ( strcmp(argv[3],"-f")=3D=3D0) { if ( argc < 5 ) { printf("Usage: host /path../code [-f func=5Freg=5Fexpr] \n"); exit(1); } minus=5Ff =3D true; strcpy(func=5Fexpr, argv[4]); printf(" Searching for functions like: \"%s\"\n",func=5Fexpr); } sts=3DPOE.bcreate(host, path, &argv[1], envp, stdout=5Fcb, NULL, stderr= =5Fcb,=20 NULL); if ( (int)sts !=3D 0) { printf("bcreate %s\n", sts.status=5Fname()); exit(1); } P =3D POE.get=5Fprocess(0); SourceObj myprog =3D P.get=5Fprogram=5Fobject(); // If there was a regular expression specified, get the function list FunctionList *func=5Flistp; if ( minus=5Ff =3D=3D true )=20 { AisStatus *stsp =3D new AisStatus(ASC=5Fsuccess); func=5Flistp =3D myprog.bget=5Ffunction=5Flist(P, func=5Fexpr, stsp); if ( (int)*stsp !=3D 0)=20 { printf("bget=5Ffunction=5Flist %s\n", sts.status=5Fname()); exit(1); } #ifdef DEBUG=5FON show=5Ffunction=5Flist(func=5Flistp); #endif } SourceObj mymod; SourceObj myfun; InstPoint ip; int modcount, count; const int bufSize =3D 128; char bufmname[bufSize]; // buffer for module=5Fname(..) printf("source file count =3D %d\n", myprog.child=5Fcount()); printf("\n Index\n\nKey (Src#) Sourcefile\n\n"); for (c =3D 0; c < myprog.child=5Fcount(); c++) { mymod =3D myprog.child(c); // only list modules that have functions with a match if (module=5Fmatch(mymod.module=5Fname(bufmname, bufSize), func=5Flistp= )) printf("%2d. file %s\n",c,mymod.module=5Fname(bufmname, bufSize)); } printf("\n\n Instrumentation Point Table\n\nKey (Src#.Mod#)=20 Details" "\n\n"); for (c =3D 0; c < myprog.child=5Fcount(); c++) { /* print all programs */ mymod =3D myprog.child(c); // only report on modules that have functions with a match if (!module=5Fmatch(mymod.module=5Fname(bufmname, bufSize), func=5Flist= p)) continue; sts =3D mymod.bexpand(P); if ( (int)sts !=3D 0) printf("%s\n", sts.status=5Fname()); modcount =3D mymod.child=5Fcount(); printf("%2d. %3d functions in file " "%s\n", c, modcount, mymod.module=5Fname(bufmname, bufSize)); for ( x =3D 0; x < modcount; x++) { /* functions */ myfun =3D mymod.child(x); // only report on functions that match the regular expression if (!function=5Fmatch(myfun.get=5Fmangled=5Fname(bufmname, bufSize), = func=5Flistp)) continue; count=3Dmyfun.exclusive=5Fpoint=5Fcount(); printf("%2d.%03d %3d IPT in function %s" "\n", c, x, count, myfun.get=5Fdemangled=5Fname(bufmname,=20 bufSize)); for (int z=3D0; z<count; z++) { ip=3Dmyfun.exclusive=5Fpoint(z); switch ( ip.get=5Ftype() ) { case IPT=5Ffunction=5Fcall : printf(" %3d call at lineno %d @ 0x%llx %s" "\n", z, ip.get=5Fline(), ip.get=5Faddress(), ip.get=5Fdemangled=5Fname(bufmname, bufSize)); break; case IPT=5Ffunction=5Fentry : printf(" %3d entry at lineno %d @ 0x%llx %s" "\n", z, ip.get=5Fline(), ip.get=5Faddress(), myfun.get=5Fdemangled=5Fname(bufmname, bufSize)); break; case IPT=5Ffunction=5Fexit : printf(" %3d exit at lineno %d @ 0x%llx %s" "\n", z, ip.get=5Fline(), ip.get=5Faddress(), myfun.get=5Fdemangled=5Fname(bufmname, bufSize)); break; default: printf(" %3d type %d lineno %d @ 0x%llx %s" "\n", z, ip.get=5Ftype(), ip.get=5Fline(), ip.get=5Faddre= ss(), ip.get=5Fdemangled=5Fname(bufmname, bufSize)); break; } } } } sts=3DP.bdestroy(); exit(0); } /////////////////////////////////////////////////////////////////////// // // check if string passed in is a module name in the function list // /////////////////////////////////////////////////////////////////////// bool module=5Fmatch(char *in=5Fstr, FunctionList *flp) { char mod=5Fbuf[MAXPATHLEN]; // If no regular expression specified, don't bother to look // for a match if ( minus=5Ff =3D=3D false ) return true; // look through the list for a matching module // return true if a match is found for (int i =3D 0; i < flp->get=5Fcount(); i++) { FunctionId id =3D flp->get=5Fentry(i); if (!strcmp(in=5Fstr, id.get=5Fmodule=5Fname(mod=5Fbuf, sizeof(mod=5Fbu= f)))) { return true; } } // no match was found return false; } /////////////////////////////////////////////////////////////////////// // // check if string passed in is a function name in the function list // /////////////////////////////////////////////////////////////////////// bool function=5Fmatch(char *in=5Fstr, FunctionList *flp) { char mang=5Fbuf[MAXPATHLEN]; // If no regular expression specified, don't bother to look // for a match if ( minus=5Ff =3D=3D false ) return true; // look through the list for a matching function // return true if a match is found for (int i =3D 0; i < flp->get=5Fcount(); i++) { FunctionId id =3D flp->get=5Fentry(i); if (!strcmp(in=5Fstr, id.get=5Fmangled=5Fname(mang=5Fbuf, sizeof(mang= =5Fbuf)))) { return true; } } // no match was found return false; } /////////////////////////////////////////////////////////////////////// // // show the entries in the passed in function list // /////////////////////////////////////////////////////////////////////// void show=5Ffunction=5Flist(FunctionList *flp) { char mod=5Fbuf[MAXPATHLEN]; char func=5Fbuf[MAXPATHLEN]; char mang=5Fbuf[MAXPATHLEN]; printf("FunctionList has %d elements\n", flp->get=5Fcount()); for (int i =3D 0; i < flp->get=5Fcount(); i++)=20 { FunctionId id =3D flp->get=5Fentry(i); printf("%s, %s, %s\n", id.get=5Fmodule=5Fname(mod=5Fbuf, sizeof(mod=5Fb= uf)), id.get=5Fdemangled=5Fname(func=5Fbuf,=20 sizeof(func=5Fbuf)), id.get=5Fmangled=5Fname(mang=5Fbuf, sizeof(mang= =5Fbuf))=20 ); } } /////////////////////////////////////////////////////////////////////// // // callback for target program stdout // /////////////////////////////////////////////////////////////////////// void stdout=5Fcb(GCBSysType sys, GCBTagType tag, GCBObjType obj, GCBMsgType msg) { printf("stdout=5Fcb[%d]: ", sys.msg=5Fsize); char *p =3D (char *) msg; for (int i=3D0; i<sys.msg=5Fsize; i++) { printf("%c",*p); p++; } printf("\n"); fflush(stdout); } /////////////////////////////////////////////////////////////////////// // // callback for target program stderr // /////////////////////////////////////////////////////////////////////// void stderr=5Fcb(GCBSysType sys, GCBTagType tag, GCBObjType obj, GCBMsgType msg) { printf("stderr=5Fcb[%d]: ", sys.msg=5Fsize); char *p =3D (char *) msg; for (int i=3D0; i<sys.msg=5Fsize; i++) { printf("%c",*p); p++; } printf("\n"); fflush(stdout); } |