OMPI uses the getcwd() library call to determine the pwd, whereas the shell $PWD variable contains the shell's point of view of what the PWD is (I *suspect* that the pwd(1) shell command also uses getcwd(), but I don't know that for sure).

From the OSX getcwd(3) man page:

The getcwd() function copies the absolute pathname of the current working directory into the memory referenced by buf and returns a pointer to buf. The size argument is the size, in bytes, of the array referenced by buf.

From the Linux getcwd(3) man page:

The getcwd() function shall place an absolute pathname of the current working directory in the array pointed to by buf, and return buf. The pathname copied to the array shall contain no components that are sym-
       bolic links. ...

So this at least explains why you're seeing that behavior.

I'm trying to think of a good reason why we're not checking PWD -- I think the reasons are as follows:

1. LAM/MPI has used getcwd() for about 10 years (I can't speak for the other MPI's, though)

2. You're the first guy to ask in that time (or the frequency of asking is so low that I've forgotten)

But these are pretty wimpy reasons. :-) I'll have to check with the other developers to see if there are any "gotchas" to using PWD if it's defined and contains a valid alias for the current directory.



On Mar 2, 2007, at 1:12 PM, Grismer, Matthew J Civ AFRL/VAAC wrote:

I’m using OpenMPI on an Xserve cluster running OS X Server 10.4.8. The user directories exist on an XserveRAID connected to the master node via fibre channel. So, on the master node the full pathname for the user directories is /Volumes/RAID1/users1. The compute nodes of the cluster automount the user directories via NFS, so the full path to the user directories appears on the nodes as /xhome/ users1. I created a hostfile list of all the compute nodes on the cluster, not including the master node. When I attempt to run a program in my home directory matt from the master node with



mpirun –hostfile nodes –np 4 program



it fails because it cannot find program. If I add the –wdir option and specify the directory as /xhome/users1/matt, everything is fine.



My question is this, how does OpenMPI determine your working directory, and is there a way to fix this without the –wdir option? For example, if you look at the PWD environment variable, it is always /xhome/users1/matt, even on the master. If you use the pwd command, however, you get different the two different results on the master and the nodes.



Thanks.



Matt



_____________________________________________________

Matthew Grismer



_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users


--
Jeff Squyres
Server Virtualization Business Unit
Cisco Systems


Reply via email to