On Feb 8, 2010, at 2:34 PM, Lubomir Klimes wrote:

> I am new in the world of MPI and I would like to ask you for the help. In my 
> diploma thesis I need to write a program in C++ using MPI that will execute 
> another external program - an optimization software GAMS. My question is 
> wheter is sufficient to use simply the command system(); for executing GAMS. 
> In other words, will the external program "work" in parallel?

It depends on what you mean, and what your system setup is.

Calling system() may (will) cause problems if you're using a Myrinet or 
OpenFabrics-based network in MPI (for deep, dark, voodoo reasons -- we can 
explain if you care).  If you're using TCP, you should likely be fine -- but be 
aware that your resulting program may not be portable.

Calling system() in your MPI application will effectively fork/exec the 
specified command.  Hence, if you "mpirun -np 8 a.out", and a.out calls 
system("foo"), you'll get 8 copies of foo running independently of each other.  
If your project is supposed to parallelize foo, then it depends on the input / 
computation / output of foo as to whether this is a good approach.

That being said, if you're just using MPI effectively as a launcher to launch N 
copies of foo, note that you can use Open MPI's "mpirun" to launch non-MPI 
applications (e.g., "mpirun -np 4 hostname").

> If the question is 'Yes', does someone know whether it will work also with 
> LAM/MPI instead of OpenMPI?

As a former developer of LAM/MPI, I can pretty confidently say that, just like 
Mac replied to your initial question on the LAM/MPI list: LAM/MPI is pretty 
much dead.  If you're just starting with MPI, you're much better to start with 
Open MPI than LAM/MPI.  :-)

-- 
Jeff Squyres
jsquy...@cisco.com

For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to