>From what I could see, actually you can obviate the input-parse.xml with a
bit of rough work :).
1. To parse the objects to the spawning processes, first wrap your objects
in to a derived data type (ex. MPI_Struct) which can be easily transferred
from the web service to the spawned children. If you are using Axis/C, then
this might be an easy map since you already have your data structs ready. So
after spawning, send your object structs to the leading process of the
spawned pool which from there you can distribute the objects to other
processes in that pool. No need to use the file at this point since theres
an inter communicator established between the webservice and the lead
process when you call MPI_Spawn. Use this correctly within webservice and
the lead process. Call 'MPI_Comm_get_parent' inside the lead child to get
the webservice intercommunicator.
2. In this case, I'm not sure. But since the webservice runs only in one
instance, you dont need it to run in several processes. So as I could see,
the main process can be a single process and it can be executed just as
./main_process without mpirun -np x commands. So this might work for you as
well when the service is loaded inside the httpserver as a single service.
I think someone can comment on this whether is it safe and acceptable to run
the main process without mpirun?
On Tue, Jul 28, 2009 at 8:35 AM, Ashika Umanga Umagiliya <
> Greetings all,
> Please refer to the image at : http://i25.tinypic.com/v65ite.png
> As mentioned in Lisandro's reply, my webservice is acting as a proxy to the
> MPI application.
> In the webservice, the SOAP parameters are bind into C++ object model.
> But I have several questions:
> (1) It seems MPI_Comm_spawn() command just execute the MPI programm like an
> external application.
> So, the C++ object-model created in webservice, is not accessible in my MPI
> application.(illustrated in blue line)
> If thats the case,to pass the input parameters, I have to marshal my
> object-model into an XML file , then call MPI_Comm_spawn() with the filename
> as an argument,so that MPI programm can read the values from the XML
> file.(illustrated in red lines)
> Is there any other way to do this?
> (2) Before calling MPI_Comm_spawn() in my webservice,I have to initialize
> MPI by calling, MPI_Init(),MPI_Comm_get_parent()..etc.
> So do I have to initialize MPI in my webservice logic.
> If thats the case,I can't start my webservice in standard way like:
> but in MPI way:
> #mpirun -np 100 -hostfile ~./hosts svmWebservice
> ??? which is confusing ??
> Any tips?
> Thanks in advance,
> Lisandro Dalcin wrote:
> I do not know anything about implementing webservices, but you should
> take a look at MPI-2 dynamic process management. This way, your
> webservice can MPI_Comm_spawn() a brand-new set of parallel processes
> doing the heavy work. This way, your webservice will act as a kind of
> proxy application between the request coming from the outside world
> and your parallel computing resources...
> On Fri, Jul 17, 2009 at 12:44 AM, Ashika Umanga
> Umagiliya<aumanga_at_[hidden]> <aumanga_at_[hidden]> wrote:
> Greetings all,
> I am in the design level of parallizing an SVM algorithm.We need to expose
> this as a webservice.I have decided to go with Axis2/C implementation.
> Please refer to : http://i30.tinypic.com/i707qq.png
> As can be seen in the Figure1 , can I embedd my MPI logic in side my
> Webservice ? I guess that its not possible because the webservice is
> packaged as a static library (myService.so) and can not execute the
> In Figure2, I have illustrated another alternative.In my Webservice, I
> invoke my parallel program (myParallelProg) using "mpirun" and other
> Is there any good design to accomplish what I am trying to do?I think the
> second is not a good design ?
> Thanks in advance,
> users mailing listusers_at_[hidden]http://www.open-mpi.org/mailman/listinfo.cgi/users
> users mailing list