MPI compilation in cygwin/XP

Post Reply
krouchen

MPI compilation in cygwin/XP

Post by krouchen »

Hello. I am a new user, and I found the instructions amazingly concise & full of great tips on how to go about (and not just for Neuron proper ;-)
However ...

Before trying to configure & build Neuron 6.2 in cygwin/XP starting with:

./configure --prefix=`pwd` --with-nrnpython --with-mpi

I got:

...
get_config_var('LIBPL') '/usr/lib/python2.5/config'
numpy not enabled. If desired add --enable-numpy to configure.
checking if python include files and libraries work... yes
checking for mpicc... no
checking for hcc... no
checking for mpcc... no
checking for mpcc_r... no
checking for mpxlc... no
checking for cmpicc... no
checking for MPI_Init... no
checking for MPI_Init in -lmpi... no
checking for MPI_Init in -lmpich... no
configure: error: Cannot compile MPI program

First, I see that I should have installed numpy beforehand - Now, when I do install it, should NEURON be rebuilt?
Or can I do --enable-numpy before I even install it?

Second, of course, I could leave out the MPI for later (all I have for now is my laptop's CPU) yet ...

I did install & configure MPICH2 .MSI for Windows beforehand
Win32 IA32 (binary) mpich2-1.0.7-win32-ia32.msi

for NEURON purposes to c:\mpich2 and ran wmpiconfig.exe
just as advised by:
http://www.neuron.yale.edu/neuron/insta ... mpile.html

So my questions are:
1) Do I need a full build of MPICH2 from its source to produce then MPI-enabled NEURON code?
2) Is MPI-enabled code a possibility with cygwin at all?
3) What MPICH2 1.0.7. elements would satisfy the configuration of MPI-enabled NEURON?
Are these just libraries or also some MPICH2 compilation utilities should enter into play?
Can someone give me a 101 explanation how MPI works?
Thanks in advance.

==================================
[/home/u139/neuron/nrn] echo $PATH

/usr/bin:/home/u139/bin:
/cygdrive/c/PROGRA~1/Borland/Delphi5/Projects/Bpl:/cygdrive/c/PROGRA~1/Borland/Delphi5/Bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/PROGRA~1/COMMON~1/ROXIOS~1/DLLSHA~1:/cygdrive/c/Program Files/QuickTime/QTSystem/:/cygdrive/c/Program Files/Delphi7SE/bin:/cygdrive/c/Program Files/Delphi7SE/Projects/BPL:/cygdrive/d/BC5/BIN:/cygdrive/d/BC5/BIN:/cygdrive/c/util

Attached is a brief listing of the nrn directory & the MPICH2 tree

[/home/u139/neuron/nrn] ls
COPYING bin configure ltmain.sh nrnrpm.spec.in
INSTALL build.sh configure.in m4 nrnversion.sh
Makefile.am config.guess depcomp missing share
Makefile.in config.h.in install-sh mysvnversion.sh src
README config.log installunix.html nmodlconf.h.in ylwrap
aclocal.m4 config.sub libtool nrnconf.h.in

[/home/u139/neuron/nrn] ls -R /cygdrive/c/mpich2/
/cygdrive/c/mpich2/:
COPYRIGHT.rtf bin include lib
README.winbin.rtf examples jumpshot setup.jpg

/cygdrive/c/mpich2/bin:
TraceInput.dll jumpshot.jar smpd.exe wmpiexec.exe
clog2TOslog2.jar jumpshot_launcher.jar traceTOslog2.jar wmpiregister.exe
irlog2rlog.exe mpiexec.exe wmpiconfig.exe

/cygdrive/c/mpich2/examples:
cpi.exe cpilog.c cxxpi.vcproj fpi.f fpilog.f
cpi.vcproj cxxpi.cxx examples.sln fpi.vfproj icpi.c

/cygdrive/c/mpich2/include:
clog_commset.h mpe.h mpi.h mpi_sizeofs.mod
clog_const.h mpe_log.h mpi.mod mpicxx.h
clog_inttypes.h mpe_logf.h mpi_base.mod mpif.h
clog_uuid.h mpe_misc.h mpi_constants.mod mpio.h

/cygdrive/c/mpich2/jumpshot:
jumpshot.ico usersguide.pdf

/cygdrive/c/mpich2/lib:
cxx.lib fmpe.lib fmpich2g.lib libfmpich2g.a libmpicxx.a mpi.lib
cxxd.lib fmpich2.lib fmpich2s.lib libmpi.a mpe.lib
[/home/u139/neuron/nrn]
ted
Site Admin
Posts: 6289
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: MPI compilation in cygwin/XP

Post by ted »

krouchen wrote:I found the instructions amazingly concise & full of great tips
Good. If you find anything that is incorrect or misleading, please let us know. It's probably getting to be time for the "compile under MSWin" instructions to be reviewed and revised.
./configure --prefix=`pwd` --with-nrnpython --with-mpi
. . .
First, I see that I should have installed numpy beforehand - Now, when I do install it, should NEURON be rebuilt?
Or can I do --enable-numpy before I even install it?
I should mention that the standard NEURON installer for MSWin includes Python. So unless you absolutely need something that is only in the latest source code from the subversion repository, you might want to try using NEURON's latest .exe installer, and then see if you can get numpy to work with that. If that doesn't work, you should probably install numpy before building NEURON.
I could leave out the MPI for later (all I have for now is my laptop's CPU)
If you have no immediate need for MPI, don't bother with it now. If and when you finally do have a use for MPI, version creep in either NEURON or MPI may force you to start from scratch. Finally, the advent of multithreaded NEURON--which is available now via the latest source code from the cvs repository--will parallelize simulation execution on a standalone PC with multiple processors without having to use MPI or requiring major revision of your programs, and at the same time will allow continued use of the GUI for control and display of simulation results (something that is not possible with MPI).
1) Do I need a full build of MPICH2 from its source to produce then MPI-enabled NEURON code?
No need to build MPICH2 if you can get the installer.
2) Is MPI-enabled code a possibility with cygwin at all?
Yes but why bother if the need is not immediate?
3) What MPICH2 1.0.7. elements would satisfy the configuration of MPI-enabled NEURON?
The last time I installed MPICH2 under MSWin, the installer didn't offer "custom installation" options. It installed what it installed, and what it installed contained what NEURON needed.
Can someone give me a 101 explanation how MPI works?
The MPICH2 site has links to documentation, and you'll find extensive documentation all over the WWW. Here's a tutorial that you might want to dig into: http://www.lam-mpi.org/tutorials/nd/
krouchen

Re: MPI compilation in cygwin/XP

Post by krouchen »

Ok.
Now, would the NEURON/MPI not work just because I've installed
cygwin (+gcc etc & the NEURON subtree) on D: (no space on C:)
and MPI in c:\mpich2
?
krouchen

Re: MPI compilation in cygwin/XP

Post by krouchen »

Another related one:

Do I get MPI from here

http://www.mcs.anl.gov/research/project ... =downloads
Current Stable Version: 1.0.7
Platform Download Size
...
Win32 IA32 (binary) mpich2-1.0.7-win32-ia32.msi [http] 8.8 MB

or from somewhere else (e.g. Does cygwin offer MPI?)
ted
Site Admin
Posts: 6289
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: MPI compilation in cygwin/XP

Post by ted »

krouchen wrote:would the NEURON/MPI not work just because I've installed
cygwin (+gcc etc & the NEURON subtree) on D: (no space on C:)
and MPI in c:\mpich2
How do you know it isn't working? What is the symptom?
ted
Site Admin
Posts: 6289
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: MPI compilation in cygwin/XP

Post by ted »

krouchen wrote:Do I get MPI from here
http://www.mcs.anl.gov/research/project ... =downloads
Yes.
krouchen

Re: MPI compilation in cygwin/XP

Post by krouchen »

" How do you know it isn't working? What is the symptom?

The tail of the NRN configure listing is in my original post.

See in particular:

Before trying to configure & build Neuron 6.2 in cygwin/XP starting with:

./configure --prefix=`pwd` --with-nrnpython --with-mpi

I got:

...

checking for mpicc... no
checking for hcc... no
checking for mpcc... no
checking for mpcc_r... no
checking for mpxlc... no
checking for cmpicc... no
checking for MPI_Init... no
checking for MPI_Init in -lmpi... no
checking for MPI_Init in -lmpich... no
configure: error: Cannot compile MPI program
hines
Site Admin
Posts: 1682
Joined: Wed May 18, 2005 3:32 pm

Re: MPI compilation in cygwin/XP

Post by hines »

see nrn/mswinmpiconf for some build information when using a non-cygwin mswin installation of mpich2 . I used
mpich2-1.0.3-1-win32-ia32.msi though that may be out of date. In the NEURON configure line I recommend
always replacing --with-mpi by --with-paranrn . The latter allows parallel simulation of individual cells and gap junctions.
It is robust enough now that it really should be automatic when --with-mpi is specified.
The --enable-numpy is causing confusion here due to its proximity to the mpi messages.It has nothing to do with
mpi. As an irrelevant aside, the latest version has removed this configure option since the efficient use of numpy no longer needs any
build-time information about numpy.

I should mention that future versions of NEURON for mswin (perhaps the next upload of the setup.exe) will have
enough of mpich2 (compiled under cygwin) as a
part of the installer to allow use of mpi on a multicore machine. This is not important for parallel networks or cells on a multicore
desktop since that is handled by threads. But the ParallelContext bulletin board is also useful on a multicore desktop and that
requires mpi. My opinion is that compiling mpich2 under cygwin gives the best configuration of the entire mpi+neuron environment.
krouchen

Re: MPI compilation in cygwin/XP

Post by krouchen »

All this is very useful, but does not explain why the NRN configure does not find any of the 1.0.7 mpich2 within my cygwin installation.

I think it is just because none of mpich2 is on the $PATH.
True?
krouchen

Re: MPI compilation in cygwin/XP

Post by krouchen »

One more

Indeed, there is no provision for any MPI compilation in the MPICH2 .. .MSI
Hence hines was right suggesting a complete rebuild of MPICH2 from source under cygwin

Is it possible to add some notes to this effect in the MSWin set of install notes?

In particular about the best MPICH2 directory tree and other naming conventions that would best fit NEURON.
krouchen

Re: MPI compilation in cygwin/XP

Post by krouchen »

cf. my last post

https://svn.mcs.anl.gov/repos/mpi/mpich ... README.vin

is pretty comprehensive, but a shorter (hence less scary for a novice user ;-) and more cygwin/NEURON (bash) - specific version would be in order

echo $SHELL
/bin/bash

In particular (cf. hines' post) to point at whether mpd, gforker, or smpd is most appropriate for subserving running in parallel of various parts (e.g. single gap junctions vs whole populations) of NRN in parallel under MSWin/cygwin.
krouchen

Re: MPI compilation in cygwin/XP

Post by krouchen »

MPI is not trivial, and for an average (i.e. not a sysadmin guru) NEURON user it looks even less so from within cygwin:

The following post is an annotated log of my attempt to build a functional MPI set of services, which shows how quickly issues accumulate into 'rocket-science' proportions.

Now this is where I got following the MPICH2 README (up to step 7.):

...
Installing MPE2 include files to /home/u139/mpich2-install/include
Installing MPE2 libraries to /home/u139/mpich2-install/lib
Installing MPE2 utility programs to /home/u139/mpich2-install/bin
Installing MPE2 configuration files to /home/u139/mpich2-install/etc
Installing MPE2 system utility programs to /home/u139/mpich2-install/sbin
Installing MPE2 man to /home/u139/mpich2-install/man
Installing MPE2 html to /home/u139/mpich2-install/www
Installed MPE2 in /home/u139/mpich2-install
/home/u139/mpich2-install/sbin/mpeuninstall may be used to remove the installation
make[1]: Leaving directory `/home/u139/mpich2/mpich2-1.0.7/src/mpe2'

vim .bashrc

PATH=$HOME/mpich2-install/bin:$PATH

which mpd
/home/u139/mpich2-install/bin/mpd

which mpicc
/home/u139/mpich2-install/bin/mpicc

which smpd
smpd: Command not found.

vim .mpd.conf

secretword=whatever

chmod 600 .mpd.conf

configuration file /home/u139/.mpd.conf is accessible by others
change permissions to allow read and write access only by you
[1]+ Exit 255 mpd

ls -l .mpd.conf
-rw-r--r-- 1 u139 None 19 Sep 15 11:39 .mpd.conf

chmod 600 .mpd.conf

ls -l .mpd.conf
-rw-r--r-- 1 u139 None 19 Sep 15 11:39 .mpd.conf

chmod go-r .mpd.conf

ls -l .mpd.conf
-rw-r--r-- 1 u139 None 19 Sep 15 11:39 .mpd.conf

chmod g-r .mpd.conf
ls -l .mpd.conf
-rw-r--r-- 1 u139 None 19 Sep 15 11:39 .mpd.conf

===========

Now,
Can someone please tell me how can get to really
chmod 600 .mpd.conf

under cygwin

or else mpd would not run,

or mpd is not at all what one should be running?

Then how about smpd ?

[/home/u139/mpich2/mpich2-1.0.7] ./configure --help

...

--with-pm=name - Specify the process manager for MPICH.
Multiple process managers may be specified as long as they all use
the same pmi interface by separating them with colons. The
mpiexec for the first named process manager will be installed.
Example: --with-pm=gforker:mpd:remshell builds the three process
managers gforker, mpd, and remshell; only the mpiexec from gforker
is installed into the bin directory.

Bottomline:
So mpd is the process manager by default, gforker is for a single CPU, and smpd is for Windows?
i.e.

[/home/u139/mpich2/mpich2-1.0.7] ./configure --with-pm=smpd ...

Related Q's:
Can the cygwin install only be an MPI client?

Can it use an server on another MSWin machine (that does not have cygwin)?
Who/what starts smpd process there?
Does having cygwin simplify starting smpd?

~~~~~~~~

[/home/u139/mpich2/mpich2-1.0.7] find -name smpd
./src/pmi/smpd
./src/pm/smpd
./doc/smpd

~~~~~~

D:\MPICH2\bin\ smpd.exe

Process manager service for MPICH2 applications
Friday, April 04, 2008, 5:47:16 PM
ted
Site Admin
Posts: 6289
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: MPI compilation in cygwin/XP

Post by ted »

hines wrote:My opinion is that compiling mpich2 under cygwin gives the best configuration of the entire mpi+neuron environment.
Maybe so, but by using the installer package for MSWin I avoided all of the problems that krouchen has run into, and was able to get distributed execution of simulations going within relatively short order. Success depends on proper installation and configuration of software from four sources, and getting all these pieces to work together: NEURON, cygwin, Microsoft's .NET stuff, and MPICH2. It looked like a low-risk bet to save time and effort by not trying to compile MPICH2 from source, but instead assuming that the MPICH2 team knew what they were doing when they built their installer for MSWin. That assumption seemed to be true, but there were still plenty of "gotchas" (like getting the right verison of .NET, figuring out what to do about "fork failures").
krouchen

Re: MPI compilation in cygwin/XP

Post by krouchen »

ted wrote
" Maybe so, but by using the installer package for MSWin ...


The installer package for MSWin you approved does not contain any MPI compiler or SD library
(all of which are required to build/install NEURON with explicit MPI --with-mpi support)
: it just has smpd & mpiexec, and does not even include gforker.

So did you then build/install NEURON without explicit MPI support and rely on some implicit breakdown of models into separate threads executed at either the same or different CPU?
ted
Site Admin
Posts: 6289
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: MPI compilation in cygwin/XP

Post by ted »

krouchen wrote:The installer package for MSWin you approved does not contain any MPI compiler or SD library
The MPICH2 installer for MSWin that I used a year ago may have contained different stuff than the most recent MPICH2 installer does.
So did you then build/install NEURON without explicit MPI support and rely on some implicit breakdown of models into separate threads executed at either the same or different CPU?
I didn't have to do anything special--just
./configure --prefix=/usr/local/nrn --with-iv=/usr/local/iv --with-paranrn
make
make install
I haven't compiled NEURON from source code under MSWin since late 2007, and am not likely to do it again any time soon--had to reinstall MSWin on my desktop and laptop PCs (in each case, a "critical update" from Microsoft broke MSWin, but in different ways. Never had anything like that happen with Linux).
Post Reply