<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6000.16735" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
class=123244520-08122008>Hi,</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
class=123244520-08122008>&nbsp;Looks to me to be some issue with permissions for 
the user registered to run the MPI job (mpiexec -register). What does the script 
do (Note that you cannot access network drives when you run your program using 
mpiexec, unless you use the "-map" option of mpiexec to explicitly map the 
network drive)?</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
class=123244520-08122008>&nbsp;I just tried running a program that loads a dll 
and executes a procedure from the dll using mpiexec (mpiexec -n 2 foo.exe) and 
it worked fine. </SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
class=123244520-08122008></SPAN></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
class=123244520-08122008>Regards,</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
class=123244520-08122008>Jayesh</SPAN></FONT></DIV><BR>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> Vivian [mailto:viviantj@gmail.com] 
<BR><B>Sent:</B> Friday, December 05, 2008 6:11 PM<BR><B>To:</B> Jayesh 
Krishna<BR><B>Cc:</B> mpich-discuss@mcs.anl.gov<BR><B>Subject:</B> Re: 
[mpich-discuss] problem of calling .dll in mpich<BR></FONT><BR></DIV>
<DIV></DIV>Hi, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; It runs fine with the 
"-localonly" and "-localroot" option. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Really 
don't understand why it cannot call dll using "-n 1" option. (This program 
should be run in multiple computers).<BR>Regards,<BR>Vivian<BR><BR>
<DIV class=gmail_quote>On Fri, Dec 5, 2008 at 6:01 PM, Jayesh Krishna <SPAN 
dir=ltr>&lt;<A 
href="mailto:jayesh@mcs.anl.gov">jayesh@mcs.anl.gov</A>&gt;</SPAN> wrote:<BR>
<BLOCKQUOTE class=gmail_quote 
style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
  <DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff 
  size=2><SPAN>Hi,</SPAN></FONT></DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN>&nbsp;Can 
  you also try whether the program runs fine with the "-localroot" option 
  ?</SPAN></FONT></DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff 
  size=2><SPAN></SPAN></FONT>&nbsp;</DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff 
  size=2><SPAN>Regards,</SPAN></FONT></DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff 
  size=2><SPAN>Jayesh</SPAN></FONT></DIV><BR>
  <DIV lang=en-us dir=ltr align=left>
  <HR>
  <FONT face=Tahoma size=2><B>From:</B> Vivian [mailto:<A 
  href="mailto:viviantj@gmail.com" target=_blank>viviantj@gmail.com</A>] 
  <BR><B>Sent:</B> Friday, December 05, 2008 11:30 AM<BR><B>To:</B> Jayesh 
  Krishna<BR><B>Cc:</B> <A href="mailto:mpich-discuss@mcs.anl.gov" 
  target=_blank>mpich-discuss@mcs.anl.gov</A><BR><B>Subject:</B> Re: 
  [mpich-discuss] problem of calling .dll in mpich<BR></FONT><BR></DIV>
  <DIV>
  <DIV></DIV>
  <DIV class=Wj3C7c>
  <DIV></DIV>Hi,&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I attached the 
  sample test program which fails to call dll when it is run by "mpiexec -n 1 
  application name". <BR>&nbsp;&nbsp;&nbsp;&nbsp; (Btw, when using "mpiexec 
  -localonly application name", dll can be 
  called.)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>The DLL called in the 
  program is a Dynamic Link Library (DLL) provided by ArcView ( a GIS software) 
  for use with WinHelp that lets you run a script. The DLL contains two 
  functions that you can use as WinHelp macros. 
  <P>AVRun -- this macro sends an Avenue statement from Help to ArcView. For 
  example, you might send a statement to make a particular view the active 
  document or run a script contained in the current project.</P>
  <P></P>
  <P>AVScript -- this macro runs a given script regardless of what ArcView 
  project is open. The script, in this case, is stored as part of the Help file 
  and not in an ArcView project.</P>
  <P><BR></P>Here's how you could run a script in the current ArcView project 
  file and pass an argument to it. In this case, the number 5 is passed as an 
  argument to a script, named script1, in the 
  project:<BR>AVRun(`av.Run("script1", 5)') 
  <P></P>
  <P><BR></P>
  <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Here is the sample test 
  code<BR></P>------------------------------------------------------------------------------------------------------------------------------------------------------------------<BR>#include&lt;iostream&gt;<BR>#include 
  &lt;windows.h&gt; <BR><BR>/*Some users may get error messages such 
  as<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SEEK_SET is #defined but must not 
  be for the C++ binding of MPI<BR>&nbsp;&nbsp; The problem is that both stdio.h 
  and the MPI C++ interface use SEEK_SET, SEEK_CUR, and SEEK_END. 
  <BR>&nbsp;&nbsp; This is really a bug in the MPI-2 standard. You can try 
  adding the following three lines before mpi.h is included<BR>*/<BR>#undef 
  SEEK_SET<BR>#undef SEEK_END<BR>#undef SEEK_CUR<BR>#include 
  "mpi.h"<BR><BR>typedef char (__stdcall *AVRUN) (char[100]); <BR>HINSTANCE 
  ArcviewDLL;<BR>AVRUN AVRun;<BR><BR>int main(int argc,char 
  **argv)<BR>{<BR><BR>&nbsp;&nbsp;&nbsp; //load avhelp.dll 
  <BR>&nbsp;&nbsp;&nbsp; ArcviewDLL= 
  LoadLibraryA("Avhelp.dll");&nbsp;&nbsp;&nbsp; //It needs a Unicode string. 
  Therefore, we use LoadLibraryA() instead of LoadLibrary()&nbsp; 
  <BR>&nbsp;&nbsp;&nbsp; if (ArcviewDLL==NULL)<BR>&nbsp;&nbsp;&nbsp; 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("cannot load the 
  Avhelp.dll.\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Make 
  sure that the Avhelp.dll is in your \\windows\\system 
  "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  "directory or in the program's directory.\n");<BR>&nbsp;&nbsp;&nbsp; 
  }<BR><BR>&nbsp;&nbsp;&nbsp; //get the adress of the AVRun function 
  <BR>&nbsp;&nbsp;&nbsp; AVRun = (AVRUN) GetProcAddress(ArcviewDLL, 
  "AVRun");<BR><BR>&nbsp;&nbsp;&nbsp; //================================== Start 
  MPI =======================================//<BR>&nbsp;&nbsp;&nbsp; //MPI : 
  Declar Variables<BR>&nbsp;&nbsp;&nbsp; int my_rank;&nbsp;&nbsp;&nbsp; 
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Rank of process 
  <BR>&nbsp;&nbsp;&nbsp; int num_proc;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Number of 
  processers<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
  &nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; //MPI : 
  Initialize<BR>&nbsp;&nbsp;&nbsp; MPI_Init(&amp;argc, 
  &amp;argv);<BR>&nbsp;&nbsp;&nbsp; MPI_Comm_rank(MPI_COMM_WORLD, 
  &amp;my_rank);<BR>&nbsp;&nbsp;&nbsp; MPI_Comm_size(MPI_COMM_WORLD, 
  &amp;num_proc);<BR><BR><BR>&nbsp;&nbsp;&nbsp; // -------- master Program 
  ----------------//<BR>&nbsp;&nbsp;&nbsp; if 
  (my_rank==0)&nbsp;&nbsp;&nbsp;&nbsp; // Master processor<BR>&nbsp;&nbsp;&nbsp; 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //-------------Start call dll 
  --------------//&nbsp; &nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 
  &nbsp;&nbsp;&nbsp; ArcviewDLL= LoadLibraryA("Avhelp.dll");&nbsp;&nbsp; 
  <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; AVRun = (AVRUN) 
  GetProcAddress(ArcviewDLL, 
  "AVRun");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  std::cout&lt;&lt;"Start Calling DLL"&lt;&lt;std::endl;<BR>&nbsp;&nbsp;&nbsp; 
  &nbsp;&nbsp;&nbsp; 
  AVRun("av.run(\"HAO_script3\",\"\")");<BR>&nbsp;&nbsp;&nbsp; 
  &nbsp;&nbsp;&nbsp; std::cout&lt;&lt;"End Calling 
  DLL"&lt;&lt;std::endl;<BR><BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
  //MasterWork_MPI();<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
  //-------------End call dll---------------//<BR>&nbsp;&nbsp;&nbsp; 
  }<BR><BR>&nbsp;&nbsp;&nbsp; // --------slave Program 
  ------------------//<BR>&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp; 
  {&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
  <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  //SlaveWork_MPI();<BR>&nbsp;&nbsp;&nbsp; }<BR><BR>&nbsp;&nbsp;&nbsp; 
  MPI_Finalize(); <BR><BR>&nbsp;&nbsp;&nbsp; //================================ 
  End MPI ====================================//<BR>&nbsp;&nbsp;&nbsp; return 
  0;<BR>}<BR><BR>&nbsp;&nbsp;&nbsp; <BR><SPAN 
  style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'"></SPAN>Vivian<BR>12/05/2008<BR><BR><BR><BR>
  <DIV class=gmail_quote>On Fri, Dec 5, 2008 at 10:03 AM, Jayesh Krishna <SPAN 
  dir=ltr>&lt;<A href="mailto:jayesh@mcs.anl.gov" 
  target=_blank>jayesh@mcs.anl.gov</A>&gt;</SPAN> wrote:<BR>
  <BLOCKQUOTE class=gmail_quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
    <DIV>
    <DIV dir=ltr align=left><FONT face=Arial color=#0000ff 
    size=2><SPAN>Hi,</SPAN></FONT></DIV>
    <DIV dir=ltr align=left><FONT face=Arial color=#0000ff 
    size=2><SPAN>&nbsp;Can you send us a sample test program that fails 
    ?</SPAN></FONT></DIV>
    <DIV dir=ltr align=left><FONT face=Arial color=#0000ff 
    size=2><SPAN></SPAN></FONT>&nbsp;</DIV>
    <DIV dir=ltr align=left><FONT face=Arial color=#0000ff 
    size=2><SPAN>Regards,</SPAN></FONT></DIV>
    <DIV dir=ltr align=left><FONT face=Arial color=#0000ff 
    size=2><SPAN>Jayesh</SPAN></FONT></DIV><FONT face=Arial color=#0000ff 
    size=2></FONT><BR>
    <DIV lang=en-us dir=ltr align=left>
    <HR>
    <FONT face=Tahoma size=2><B>From:</B> <A 
    href="mailto:mpich-discuss-bounces@mcs.anl.gov" 
    target=_blank>mpich-discuss-bounces@mcs.anl.gov</A> [mailto:<A 
    href="mailto:mpich-discuss-bounces@mcs.anl.gov" 
    target=_blank>mpich-discuss-bounces@mcs.anl.gov</A>] <B>On Behalf Of 
    </B>Vivian<BR><B>Sent:</B> Friday, December 05, 2008 12:05 AM<BR><B>To:</B> 
    <A href="mailto:mpich-discuss@mcs.anl.gov" 
    target=_blank>mpich-discuss@mcs.anl.gov</A><BR><B>Subject:</B> 
    [mpich-discuss] problem of calling .dll in mpich<BR></FONT><BR></DIV>
    <DIV>
    <DIV></DIV>
    <DIV>
    <DIV></DIV>Hi,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I met some problems when I 
    was trying to call a dll in a mpich program (Language:VS 
    2005).<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1) MPICH seems to only support 
    calling convention&nbsp; _cdecl. <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; When 
    I change the project setting to _stdcall, the code cannot be successfully 
    built.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; So I set 
    the project setting back to _cdecl and force the calling convention of the 
    function pointer to my function on the DLL to be "_stdcall". This time the 
    program is built. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    Under debugging mode or directly run in command window ( c:&gt;test.ext), 
    there is no problem to call dll in the code.<BR>&nbsp; &nbsp; &nbsp; &nbsp; 
    &nbsp; Here is the code:<BR>&nbsp; &nbsp; 
    -------------------------------------------------------------------------------- 
    <BR>&nbsp;&nbsp;&nbsp;&nbsp; typedef char (__stdcall *AVRUN) 
    (char[100]);&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; HINSTANCE ArcviewDLL;&nbsp; 
    <BR>&nbsp;&nbsp;&nbsp;&nbsp; AVRUN AVRun;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
    ArcviewDLL= LoadLibraryA("Avhelp.dll");&nbsp;&nbsp;&nbsp; 
    <BR>&nbsp;&nbsp;&nbsp;&nbsp; AVRun = (AVRUN) GetProcAddress(ArcviewDLL, 
    "AVRun");<BR><BR>&nbsp;&nbsp;&nbsp; 
    AVRun("av.run(\"HAO_script3\",\"\")");<BR>&nbsp;&nbsp;&nbsp; 
    -------------------------------------------------------------------------------<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    (2) However, the program fails to call dll when I use "mpiexec" to run it. 
    (c:&gt;mpiexec -n 1 
    test.exe).<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    It seems to "stop" right before this line<BR>&nbsp; 
    -------------------------------------------------------------<BR>&nbsp;&nbsp;&nbsp; 
    AVRun("av.run(\"HAO_script3\",\"\")");<BR>&nbsp; 
    -------------------------------------------------------------<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    Is there anyone having any idea why this happens?<BR 
    clear=all><BR>--<BR>Vivian<BR></DIV></DIV></DIV></BLOCKQUOTE></DIV><BR></DIV></DIV></DIV></BLOCKQUOTE></DIV></BODY></HTML>