Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] Porting OpenMPI to a new system
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2010-04-29 06:04:16


On Apr 28, 2010, at 11:34 AM, Ioannis E. Venetis wrote:

> 1) We need to have support for both, a native and also a
> cross-compilation environment.
> a) The native environment is a non-mainstream 64-bit processor
> (specially designed for the system where it is being used). The OS
> environment is Linux, the compiler is gcc and in general we have a quite
> typical Linux/GNU environment, ported to that system.

FWIW, Open MPI is much easier to compile natively than in a cross-compilation environment.

Compiling in a cross-compilation environment *works*, but it's a little manual-setup-intensive. I can provide more details if you need them; we don't have all the cross-compilation instructions in the main README, IIRC.

> b) The cross-compilation environment should be run on a Linux x86_64
> system. The cross-compiler, libraries, etc are already working, which
> means that only OpenMPI needs to be ported right now. We use this
> environment together with a simulator of the system, in order to
> evaluate any changes in the architecture of the system. Using the
> typical configure options of most applications, we would like to have
> something like the following options in this case when building OpenMPI:
>
> --host=x86_64-linux-gnu --build=<our system triplet>

Ralf already commented on this.

> Afterwards, the OpenMPI library should be linked together with our
> applications and the final executable should be run on the simulator.
>
> I have started looking into the source code of OpenMPI, but I have not
> yet understood in which files I should start making changes. I would
> appreciate any help you can provide, in order for me to start the port.

Open MPI has a small chunk of assembly code for some critical portions of functionality (like fast locks, etc.). If your processor does not have assembly code support already, you'll need to add that. Shrudder.

Are you running on a network that Open MPI supports already? Hopefully your platform supports at least TCP-based communications. OMPI uses TCP for setup/bootstrapping and then can also use TCP for MPI communications. If you have a different kind of network, you'll need to write OMPI plugins to support that network.

OMPI's code base is *fairly* portable -- it might "just work" on your system. More likely is that it'll "mostly work" and there will be a few portability issues that you'l run into because they're corner cases that all work on OMPI's supported platforms but not on yours. Perhaps the easiest thing to do is just to try configuring and compiling, and see what problems you run into.

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/