[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [microblaze-uclinux] Porting MPI to uclinux
> While trying to port MPI to uclinux, I am facing a roadblock because of
> the usage of fork() in the MPI implementations available. But uclinux
> does not support fork() due to lack of MMU. How do I tackle this
> problem? Can I use vfork in place of fork and if so what are the factors
> to be considered in this? Can anybody provide any help/suggestions on this?
George is correct, we have done a port of the MPICH2 libraries and
utilities to uClinux, for NASA's RSC project. The libraries themselves
are not difficult, the hard part is the MPD process management daemon.
In MPICH, MPD is written in Python, which is a bad start.
Even once you get python going, it uses Python's wrapper around the
fork() syscall, which will never work in uClinux. It is also impossible
to just do a simple fork->vfork conversion here, because the call
happens deep in a function context, and there is significant stack
unwinding that takes place after the vfork, which is contrary to the
noMMU fork -> vfork rules.
To get around this, we took the smpd process manager, which is written
in C. Even then, it is a very complex state machine, and makes
extensive use of fork in ways that are really quite tricky to port to
uClinux / vfork.
I will check about releasing the report I wrote on this, that explains
in pretty fine detail the issues and what we did to get around them.
microblaze-uclinux mailing list
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/