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
> 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!