[OMPI users] Perl and MPI
Hi, I am posting to this mailing list after a long time. How is our openMPI going? Folks, I have few queries. 1. Are there any perl bindings to (Open) MPI? 2. How difficult it would be to write a perl wrapper over existing MPI code.? 3. Can I work with MPI without MPI's runtime environment.? Actually I want to use SunGrid Engine. To give a proper insight into my requirements, i shall explain my problem below. I need to run parallel jobs on a cluster typically of size 600 nodes and running SGE, but the programmers are good at perl but not C or C++. So i thought of MPI, but i dont know whether it has perl support? Feel free to suggest any other library with perl support. Thanks, Imran - Get your email and more, right on the new Yahoo.com
[OMPI users] OpenMPI + NAT
Hi all, We're currently setting up a small cluster used for parallel rendering. For convinience we use a master server which "hides" a set of dedicated nodes behind NAT. However, we also want to connect external workstations in a flexible manner. We've set up the routes so that each external machine can communicate directly with the nodes behind the NAT, and vice versa. We've also verified communication on random ports using a simple python socket script. However, the communication still fails in MPI with a message like: [localhost.localdomain:17383] *** An error occurred in MPI_Barrier [localhost.localdomain:17383] *** on communicator MPI_COMM_WORLD [localhost.localdomain:17383] *** MPI_ERR_INTERN: internal error [localhost.localdomain:17383] *** MPI_ERRORS_ARE_FATAL (goodbye) Before posting additonal debug info, I want to check if anyone has succedded in setting up an MPI cluster with "internal" and "external" nodes seperated by NAT. Note also that this is not a crucial problem, we could also make all nodes "external", but a solution with NAT would be quite practical. Regards, Gunnar Johansson
[OMPI users] problem with running mpi
Hi, I was running mpirun in the linux cluster we have. mpirun -n 5 -bynode -hostfile test_nodes a.out Sometime occationaly after MPI initialization I have the following error.. rank: 1 of: 5 rank: 4 of: 5 rank: 3 of: 5 rank: 0 of: 5 rank: 2 of: 5 Signal:6 info.si_errno:0(Success) si_code:0(SI_USER) [0] func:/opt/openmpi-1.1/lib/libopal.so.0 [0x4011781f] [1] func:[(nil)] *** End of error message *** Signal:6 info.si_errno:0(Success) si_code:0(SI_USER) [0] func:/opt/openmpi-1.1/lib/libopal.so.0 [0x4011781f] [1] func:[(nil)] *** End of error message *** And then in after few runns it automatically gets through! Can you have some clue? Regards, Jaynta
Re: [OMPI users] Perl and MPI
On 9/13/06, imran shaik wrote: I need to run parallel jobs on a cluster typically of size 600 nodes and running SGE, but the programmers are good at perl but not C or C++. So i thought of MPI, but i dont know whether it has perl support? Hi Imran, SGE will dispatch process among the nodes of your cluster but it does not support interprocess communication, which MPI does. If your problem is easily splittable (like parse a large apache log, read a large xml list of things) you might be able to split the data and spawn as many process as you can. I do it using LSF (another dispatcher) and a Makefile that controls the dependencies and spawn the processes (using make's -j flag) and it works quite well. But if your job need the communication (like processing big matrices, collecting and distributing data among processes etc) you'll need an interprocess communication and that's what MPI is best at. In a nutshell, you'll need the runtime environment to run MPI programs as well as you need SGE's runtime environments on every node to dispatch jobs and collect information. About MPI bindings for Perl, there's this module: http://search.cpan.org/~josh/Parallel-MPI-0.03/MPI.pm but it's far too young to be trustworthy, IMHO, and you'll probably need the MPI runtime on all nodes as well... cheers, --renato
Re: [OMPI users] Perl and MPI
I can't speak to the Perl bindings, but Open MPI's runtime already supports SGE, so all you have to do is "mpirun" like usual and we take care of the rest. You may have to check your version of Open MPI as this capability was added in the more recent releases. Ralph On 9/13/06 8:52 AM, "Renato Golin" wrote: > On 9/13/06, imran shaik wrote: >> I need to run parallel jobs on a cluster typically of size 600 nodes and >> running SGE, but the programmers are good at perl but not C or C++. So i >> thought of MPI, but i dont know whether it has perl support? > > Hi Imran, > > SGE will dispatch process among the nodes of your cluster but it does > not support interprocess communication, which MPI does. If your > problem is easily splittable (like parse a large apache log, read a > large xml list of things) you might be able to split the data and > spawn as many process as you can. > > I do it using LSF (another dispatcher) and a Makefile that controls > the dependencies and spawn the processes (using make's -j flag) and it > works quite well. But if your job need the communication (like > processing big matrices, collecting and distributing data among > processes etc) you'll need an interprocess communication and that's > what MPI is best at. > > In a nutshell, you'll need the runtime environment to run MPI programs > as well as you need SGE's runtime environments on every node to > dispatch jobs and collect information. > > About MPI bindings for Perl, there's this module: > http://search.cpan.org/~josh/Parallel-MPI-0.03/MPI.pm > > but it's far too young to be trustworthy, IMHO, and you'll probably > need the MPI runtime on all nodes as well... > > cheers, > --renato > ___ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users
Re: [OMPI users] Perl and MPI
SGE capabilities will be in the upcoming 1.2 release -- it is not included in any of the current stable releases. You can grab nightly snapshot tarballs from the trunk, but they are not guaranteed to be stable (they're the head of active development). On 9/13/06 11:03 AM, "Ralph H Castain" wrote: > I can't speak to the Perl bindings, but Open MPI's runtime already supports > SGE, so all you have to do is "mpirun" like usual and we take care of the > rest. You may have to check your version of Open MPI as this capability was > added in the more recent releases. > > Ralph > > > On 9/13/06 8:52 AM, "Renato Golin" wrote: > >> On 9/13/06, imran shaik wrote: >>> I need to run parallel jobs on a cluster typically of size 600 nodes and >>> running SGE, but the programmers are good at perl but not C or C++. So i >>> thought of MPI, but i dont know whether it has perl support? >> >> Hi Imran, >> >> SGE will dispatch process among the nodes of your cluster but it does >> not support interprocess communication, which MPI does. If your >> problem is easily splittable (like parse a large apache log, read a >> large xml list of things) you might be able to split the data and >> spawn as many process as you can. >> >> I do it using LSF (another dispatcher) and a Makefile that controls >> the dependencies and spawn the processes (using make's -j flag) and it >> works quite well. But if your job need the communication (like >> processing big matrices, collecting and distributing data among >> processes etc) you'll need an interprocess communication and that's >> what MPI is best at. >> >> In a nutshell, you'll need the runtime environment to run MPI programs >> as well as you need SGE's runtime environments on every node to >> dispatch jobs and collect information. >> >> About MPI bindings for Perl, there's this module: >> http://search.cpan.org/~josh/Parallel-MPI-0.03/MPI.pm >> >> but it's far too young to be trustworthy, IMHO, and you'll probably >> need the MPI runtime on all nodes as well... >> >> cheers, >> --renato >> ___ >> users mailing list >> us...@open-mpi.org >> http://www.open-mpi.org/mailman/listinfo.cgi/users > > > ___ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users -- Jeff Squyres Server Virtualization Business Unit Cisco Systems
Re: [OMPI users] Perl and MPI
Renato Golin wrote: > On 9/13/06, imran shaik wrote: > >> I need to run parallel jobs on a cluster typically of size 600 nodes and >> running SGE, but the programmers are good at perl but not C or C++. So i >> thought of MPI, but i dont know whether it has perl support? >> > > Hi Imran, > > SGE will dispatch process among the nodes of your cluster but it does > not support interprocess communication, which MPI does. If your > problem is easily splittable (like parse a large apache log, read a > large xml list of things) you might be able to split the data and > spawn as many process as you can. > > I do it using LSF (another dispatcher) and a Makefile that controls > the dependencies and spawn the processes (using make's -j flag) and it > works quite well. But if your job need the communication (like > processing big matrices, collecting and distributing data among > processes etc) you'll need an interprocess communication and that's > what MPI is best at. > > In a nutshell, you'll need the runtime environment to run MPI programs > as well as you need SGE's runtime environments on every node to > dispatch jobs and collect information. > > About MPI bindings for Perl, there's this module: > http://search.cpan.org/~josh/Parallel-MPI-0.03/MPI.pm > > but it's far too young to be trustworthy, IMHO, and you'll probably > need the MPI runtime on all nodes as well... > > cheers, > --renato Hello, My users use Parallel::MPI and MPI::Simple perl modules consistently without issues. But I am not sure of the support for MPI-2 standard with either of these modules. Is there someone here that can answer that question too? Also those modules seem to work only with MPICH now and not the other MPI distributions. Prakash
Re: [OMPI users] OpenMPI + NAT
Gunnar Johansson : >Note also that this is not a crucial problem, we could also make all >nodes "external", but a solution with NAT would be quite practical. Trying to launch MPI processes using port forwarding is currenly a call for trouble, since IP address and port information is usually embedded into the Open MPI startup protocol. It would probably a better solution to use a job manager like SGE which accepts jobs on a head node (which has a public IP address) and distributes the jobs on the cluster nodes. Christian -- Dipl.-Inf. Christian Kauhaus <>< Lehrstuhl fuer Rechnerarchitektur und -kommunikation Institut fuer Informatik * Ernst-Abbe-Platz 1-2 * D-07743 Jena Tel: +49 3641 9 46376 * Fax: +49 3641 9 46372 * Raum 3217
[OMPI users] Error initializing application linked with UnixODBC
Hi, I have an application that uses the UnixODBC library (http://www.unixodbc.org) and MPI. When trying to run a program linked with UnixODBC, I immediately get an error, regardless of the calls in the program, i.e. OpenMPI fails during MPI_Init, which is the first call in the program. I tried a simple experiment using the following program (trivial to demonstrate the bug) : #include #include int main(int argc, char* argv[]) { std::cerr << "Initializing MPI" << std::endl; MPI_Init(&argc, &argv); std::cerr << "MPI Initialized" << std::endl; int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); std::cerr << "My rank is : " << rank << std::endl; std::cerr << "Shutting down MPI" << std::endl; MPI_Finalize(); } If I compile this normally without UnixODBC, everything is fine: [wsinno@cluster openmpi_bug]$ mpic++ main.cpp [wsinno@cluster openmpi_bug]$ mpiexec -n 2 ./a.out Initializing MPI Initializing MPI MPI Initialized My rank is : 0 Shutting down MPI MPI Initialized My rank is : 1 Shutting down MPI If I compile and link in UnixODBC, I get the following problem: [wsinno@cluster openmpi_bug]$ mpic++ main.cpp -L UnixODBC/lib -lodbc [wsinno@cluster openmpi_bug]$ mpiexec -n 2 ./a.out Initializing MPI [cluster.logicblox.local:02272] [NO-NAME] ORTE_ERROR_LOG: Not found in file runtime/orte_init_stage1.c at line 214 -- It looks like orte_init failed for some reason; your parallel process is likely to abort. There are many reasons that a parallel process can fail during orte_init; some of which are due to configuration or environment problems. This failure appears to be an internal failure; here's some additional information (which may only be relevant to an Open MPI developer): orte_sds_base_select failed --> Returned value -13 instead of ORTE_SUCCESS -- -- It looks like MPI_INIT failed for some reason; your parallel process is likely to abort. There are many reasons that a parallel process can fail during MPI_INIT; some of which are due to configuration or environment problems. This failure appears to be an internal failure; here's some additional information (which may only be relevant to an Open MPI developer): ompi_mpi_init: orte_init_stage1 failed --> Returned "Not found" (-13) instead of "Success" (0) -- *** An error occurred in MPI_Init *** before MPI was initialized *** MPI_ERRORS_ARE_FATAL (goodbye) I have tried using iodbc (http://www.iodbc.org) instead, and that seems to work fine. Attached are the config.log and ompi_info output. Wael. Open MPI: 1.1.1 Open MPI SVN revision: r11473 Open RTE: 1.1.1 Open RTE SVN revision: r11473 OPAL: 1.1.1 OPAL SVN revision: r11473 Prefix: /opt/openmpi Configured architecture: i686-pc-linux-gnu Configured by: root Configured on: Fri Sep 1 17:21:07 EDT 2006 Configure host: cluster.logicblox.local Built by: root Built on: Fri Sep 1 17:34:48 EDT 2006 Built host: cluster.logicblox.local C bindings: yes C++ bindings: yes Fortran77 bindings: yes (all) Fortran90 bindings: yes Fortran90 bindings size: small C compiler: gcc C compiler absolute: /usr/bin/gcc C++ compiler: g++ C++ compiler absolute: /usr/bin/g++ Fortran77 compiler: gfortran Fortran77 compiler abs: /usr/bin/gfortran Fortran90 compiler: gfortran Fortran90 compiler abs: /usr/bin/gfortran C profiling: yes C++ profiling: yes Fortran77 profiling: yes Fortran90 profiling: yes C++ exceptions: no Thread support: posix (mpi: no, progress: no) Internal debug support: no MPI parameter check: runtime Memory profiling support: no Memory debugging support: no libltdl support: yes MCA memory: ptmalloc2 (MCA v1.0, API v1.0, Component v1.1.1) MCA paffinity: linux (MCA v1.0, API v1.0, Component v1.1.1) MCA maffinity: first_use (MCA v1.0, API v1.0, Component v1.1.1) MCA timer: linux (MCA v1.0, API v1.0, Component v1.1.1) MCA allocator: basic (MCA v1.0, API v1.0, Component v1.0) MCA allocator: bucket (MCA v1.0, API v1.0, Component v1.0) MCA coll: basic (MCA v1.0, API v1.0, Component v1.1.1) MCA coll: hierarch (MCA v1.0, API v1.0, Component v1.1.1) MCA coll: self (MCA v1.0, API v1.0, Component v1.1.1) MCA coll: sm (MCA v1.0, API v1.0, Component v1.1.1) MCA coll: tuned (MCA v1.0, API v1.0, Component v1.1.1) MCA io: romi