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?
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 ??
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<firstname.lastname@example.org> 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 "mpirun". In Figure2, I have illustrated another alternative.In my Webservice, I invoke my parallel program (myParallelProg) using "mpirun" and other parameters. 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, umanga _______________________________________________ users mailing list email@example.com http://www.open-mpi.org/mailman/listinfo.cgi/users
users mailing list