On 29/4/2010 1:04 μμ, Jeff Squyres wrote:
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.

The problem is that I don't have direct access at this point to the machine. I will have to send it to someone else even for a simple compilation. But I have the simulator, so I have right now to start from there.


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.

So, I would really appreciate it if you could do this.


    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.

That's not a problem. I am very familiar with assembly.


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.

Now, I knew already that this is the most important part! I am waiting from day to day to get the documentation about all this. From some preliminary search I did in what I already have, there is probably NO TCP. I think that this will be the most difficult part for me to port.


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.


Yes, this is what I started doing.

Thank you for your help!

Ioannis

Reply via email to