Dear Sir,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thanks for the link. Helped clear some of my doubts.<br>Thanks,<br>Krishna Chaitanya K <br><br><div class="gmail_quote">On Jan 22, 2008 7:51 PM, Dave Goodell &lt;<a href="mailto:goodell@mcs.anl.gov">
goodell@mcs.anl.gov</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">The environment variables used to control debug messages can be found
<br>here: <a href="http://wiki.mcs.anl.gov/mpich2/index.php/Event_Logging" target="_blank">http://wiki.mcs.anl.gov/mpich2/index.php/Event_Logging</a><br><font color="#888888"><br>-Dave<br></font><div><div></div><div class="Wj3C7c">
<br>On Jan 21, 2008, at 6:54 PM, William Gropp wrote:<br><br>&gt; When debugging is enabled by configuring with the appropriate<br>&gt; switches, it just causes the appropriate code to be compiled into<br>&gt; MPICH2. &nbsp;There are environment variables and command line options
<br>&gt; that update the value of MPIU_DBG_ActiveClasses, thus enabling some<br>&gt; or all of the debug statements. &nbsp;As the purpose of these debug<br>&gt; statements is primarily to generate output that traces the<br>&gt; execution, the ActiveClasses variable allows the user to select
<br>&gt; which types of debug messages are desired.<br>&gt;<br>&gt; Object_set_ref is itself a macro that permits the use of assembly<br>&gt; instructions when needed in a multithreaded environment (and one<br>&gt; that uses fine-grain locking). &nbsp;All that it is doing is setting the
<br>&gt; reference count on the object to the requested value (typically 1<br>&gt; or 2, depending on the object).<br>&gt;<br>&gt; Bill<br>&gt;<br>&gt; On Jan 21, 2008, at 11:37 AM, Krishna Chaitanya wrote:<br>&gt;<br>&gt;&gt; Dear Sir,
<br>&gt;&gt; Sorry for the delay.<br>&gt;&gt; I added a few print statements and took a closer look at the<br>&gt;&gt; functions MPIU_DBG_MSG_FMT() and &nbsp;MPIU_DBG_Outevent (). It turns<br>&gt;&gt; out that the MPIU_DBG_ActiveClasses parameter remains at 0 for the
<br>&gt;&gt; entire program execution, which means, the if() test fails and the<br>&gt;&gt; MPIU_DBG_Outevent function never gets called. So, the call to<br>&gt;&gt; MPIU_Object_set_ref() &nbsp;that is being called from MPIR_Init_thread
<br>&gt;&gt; () is not doing anything in terms of updating or maintaining the<br>&gt;&gt; internal data structures.Am I missing something,here? &nbsp;Could some<br>&gt;&gt; one help me out &nbsp;by explaining this? I hope I have explained my
<br>&gt;&gt; doubt clearly.<br>&gt;&gt;<br>&gt;&gt; Thanks,<br>&gt;&gt; Krishna Chaitanya<br>&gt;&gt;<br>&gt;&gt; On Jan 16, 2008 3:14 AM, William Gropp &lt;<a href="mailto:gropp@mcs.anl.gov">gropp@mcs.anl.gov</a>&gt; wrote:
<br>&gt;&gt; Most of the operations that are used as macros are defined that<br>&gt;&gt; way so that they can be eliminated at compile time. &nbsp;The MPIU_DBG<br>&gt;&gt; routines are a good example. &nbsp;These are macros that are used to
<br>&gt;&gt; enable various debugging options and are not core parts of the<br>&gt;&gt; communicator structure. &nbsp;In fact, when MPICH2 is built for use in<br>&gt;&gt; production, these macros are defined as empty.<br>&gt;&gt;
<br>&gt;&gt; To answer your other question, there are no universally used<br>&gt;&gt; routines for list management - instead, different modules make use<br>&gt;&gt; of the routines that they need.<br>&gt;&gt;<br>&gt;&gt; Bill
<br>&gt;&gt;<br>&gt;&gt; On Jan 15, 2008, at 2:25 PM, Krishna Chaitanya wrote:<br>&gt;&gt;<br>&gt;&gt;&gt; Dear All,<br>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;I have been trying to understand the types of data<br>&gt;&gt;&gt; structures used by MPICH2 and the way in which the various lists
<br>&gt;&gt;&gt; are maintained and how they are initialized. I happen to observe<br>&gt;&gt;&gt; that most of such routines have been implemented as macros which<br>&gt;&gt;&gt; has made my job slightly harder as they dont appear while
<br>&gt;&gt;&gt; debugging with gdb.( Is there a way to trace through them at run<br>&gt;&gt;&gt; time?)<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;For example, I was keen on observing how MPICH2<br>&gt;&gt;&gt; deals with the MPI_COMM_WORLD data structure, which is of type
<br>&gt;&gt;&gt; MPID_COMM and it is a member of MPICH_PerProcess_t. So, at the<br>&gt;&gt;&gt; time of populating &nbsp;this structure , the library calls &nbsp;[ from<br>&gt;&gt;&gt; MPIR_Init_thread(...) &nbsp; &nbsp;]<br>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MPIU_Object_set_ref( MPIR_Process.comm_world, 1 );
<br>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-- &gt; &nbsp; MPIU_DBG_MSG_FM ( .... )<br>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -- &gt; MPIU_DBG_MSG_FMT ( .. )<br>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-- &gt; &nbsp;MPIU_DBG_Outevent ( ... )<br>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; va_start and other such list
<br>&gt;&gt;&gt; related macros.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; However, when the MPIU_DBG_Outevent function is invoked, the<br>&gt;&gt;&gt; paramater, int kind is hard-coded to be 0. When the kind value is<br>&gt;&gt;&gt; zero, the library does not do any list related 
work.Instead, it<br>&gt;&gt;&gt; prints some details into a file. &nbsp;So, how does the MPICH library<br>&gt;&gt;&gt; maintain reference to the &nbsp;MPIR_Process.comm_world structure,<br>&gt;&gt;&gt; without the invocation of macros like va_start, va_arg etc.
<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Its quite possible that I have got things wrong as I am jumping<br>&gt;&gt;&gt; from one function to another using the ctags and I havent<br>&gt;&gt;&gt; actually seen the code behave as above during run-time as we are
<br>&gt;&gt;&gt; dealing with macros. So, please correct me if I have got<br>&gt;&gt;&gt; something wrong.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; And, I am trying to draw an analogy between the OPEN-MPI and the<br>&gt;&gt;&gt; MPICH2 when it comes to the way the internal data structures are
<br>&gt;&gt;&gt; handled. In Open-MPI, the OPAL library maitains such lists and<br>&gt;&gt;&gt; has routines to manipulate them. Does MPICH have any other way of<br>&gt;&gt;&gt; working with the lists of objects other than using the va_start
<br>&gt;&gt;&gt; and other related macros?<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; NOTE : &nbsp;I am using the mpich2-1.0.6 version.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Thanks,<br>&gt;&gt;&gt; Krishna Chaitanya K,<br>&gt;&gt;&gt; National Institute of Technology,Karnataka ( NITK)
<br>&gt;&gt;&gt; India.<br>&gt;&gt;&gt; --<br>&gt;&gt;&gt; In the middle of difficulty, lies opportunity<br>&gt;&gt;<br>&gt;&gt; William Gropp<br>&gt;&gt; Paul and Cynthia Saylor Professor of Computer Science<br>&gt;&gt; University of Illinois Urbana-Champaign
<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; --<br>&gt;&gt; In the middle of difficulty, lies opportunity<br>&gt;<br>&gt; William Gropp<br>&gt; Paul and Cynthia Saylor Professor of Computer Science
<br>&gt; University of Illinois Urbana-Champaign<br>&gt;<br>&gt;<br><br></div></div></blockquote></div><br><br clear="all"><br>-- <br>In the middle of difficulty, lies opportunity