[OMPI users] Perl and MPI

2006-09-13 Thread imran shaik
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

2006-09-13 Thread Gunnar Johansson

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

2006-09-13 Thread Jayanta Roy

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

2006-09-13 Thread Renato Golin

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

2006-09-13 Thread Ralph H Castain
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

2006-09-13 Thread Jeff Squyres
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

2006-09-13 Thread Prakash Velayutham
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

2006-09-13 Thread Christian Kauhaus
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

2006-09-13 Thread Wael Sinno
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