
On 6 Jul 2010, at 00:24, Jack Bryan wrote:
Hi,
Thanks for all your reply.
I attached the code in the email.
I downloaded : Rhapsodia.Scheduler from http://rhascheduler.sourceforge.net/ because I need to do application program level task scheduling.
In file "TaskPackSystem.hpp", I designed a task class "TaskPackage" to carry my defined task.
Other classes in the file are not used.
My main program is mpi_message_transfer.cpp, which can transfer tasks from master to workers and then collects results from them.
Right now, I am testing 3 tasks (TOTALTASKNUM =3) and 2 workers (nodes).
I use 3 nodes totally, another node is the master.
node 0 : is master.
node 1 : worker 1 assigned with task 1 and 3.
node 2 : worker 2 assigned with task 2.
Each task has a distinct tag, which is assigned by master before it is sent out to a worker.
After receiving a task and doing its local work on the task, the worker uses the same tag ID to send it to master.
The master use non-blocking world.recv(resultSourceRank, tagID, resultTaskPackage) to get the result task.
You may need to download the Rhapsodia.Scheduler to get their header files.
I attached the 4 files in the email.
mpi_message_transfer.cpp TaskPackSystem.hpp BasicScheduler.hpp SimpleScheduler.hpp
Hi Jack, it would help a lot if you could reduce this to a simpler example - for example I don't even know whether your problem is with the T1 or T2 tasks, or anything else. One immediate problem I see is that you never post a wait for recvReqsT2, and thus those receives will never happen. You will need to reduce this to a simpler problem, and it might also help if, as suggested before, you also try to use the native MPI API instead of Boost.MPI. Matthias Matthias