Hi,
Thanks for all your reply.
I attached the code in the email.
I downloaded : Rhapsodia.Scheduler
from
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