模拟网格。如何在执行任务时接收和发送数据?
SimGrid. How to receive and send data while executing task?
模拟以下情况应该用什么方法或思路。
有master、worker1(主机1)和worker2(主机2)。
当前 worker1 正在执行一些数据,但是 worker2 是空闲的。
Master必须向worker2发送instruction
关于从worker1下载数据并开始执行它们。
想法是从 master 发送 messageTask
到 worker2 --> worker2 发送 messageTask
到 worker1 --> worker1 发送 task(name, flopsamount, byteSize)
到 worker2 --> worker2 接收并执行它。
但是如果worker1忙于执行他的task
,worker1如何从worker2接收messageTask
? worker1 在执行任务时如何发送数据?或者worker2有其他方法可以从繁忙的worker1下载数据吗?
已更新
这是worker2的一段代码。
MessageTask messageTask = new MessageTask();
messageTask.dsend(mailbox_worker1)
对于工人 1
try {
task.execute(); // Currently worker1 is here, in other words, worker1 is exectuing some another task
} catch (TaskCancelledException e) {
}
worker1 如何将 receive
messageTask 和 send
返回给 worker2 真实数据(不中断当前任务的执行)?
已更新
是否正确deployment.xml?
<process host="Tier1_1" function="LHCb.Process1">
<argument value="1"/> <!-- Input mailbox -->
</process>
<process host="Tier1_1" function="LHCb.Process2">
<argument value="1"/> <!-- Input mailbox -->
</process>
至少有两种方法可以在交流时做事。您可以使用分离发送,这意味着您不关心通信是否有效,也可以使用异步通信。
本目录中有第一种机制的示例:examples/java/async/dsend,而另一种机制尚未在Java中示例。您现在必须检查 C 示例。
现在,在更新的部分中,您想在执行某事的同时做一些事情。由于(目前)还没有异步执行,您将不得不在同一台主机上启动另一个进程来处理通信,而第一台主机正在计算内容。
模拟以下情况应该用什么方法或思路。
有master、worker1(主机1)和worker2(主机2)。
当前 worker1 正在执行一些数据,但是 worker2 是空闲的。
Master必须向worker2发送instruction
关于从worker1下载数据并开始执行它们。
想法是从 master 发送 messageTask
到 worker2 --> worker2 发送 messageTask
到 worker1 --> worker1 发送 task(name, flopsamount, byteSize)
到 worker2 --> worker2 接收并执行它。
但是如果worker1忙于执行他的task
,worker1如何从worker2接收messageTask
? worker1 在执行任务时如何发送数据?或者worker2有其他方法可以从繁忙的worker1下载数据吗?
已更新 这是worker2的一段代码。
MessageTask messageTask = new MessageTask();
messageTask.dsend(mailbox_worker1)
对于工人 1
try {
task.execute(); // Currently worker1 is here, in other words, worker1 is exectuing some another task
} catch (TaskCancelledException e) {
}
worker1 如何将 receive
messageTask 和 send
返回给 worker2 真实数据(不中断当前任务的执行)?
已更新
是否正确deployment.xml?
<process host="Tier1_1" function="LHCb.Process1">
<argument value="1"/> <!-- Input mailbox -->
</process>
<process host="Tier1_1" function="LHCb.Process2">
<argument value="1"/> <!-- Input mailbox -->
</process>
至少有两种方法可以在交流时做事。您可以使用分离发送,这意味着您不关心通信是否有效,也可以使用异步通信。
本目录中有第一种机制的示例:examples/java/async/dsend,而另一种机制尚未在Java中示例。您现在必须检查 C 示例。
现在,在更新的部分中,您想在执行某事的同时做一些事情。由于(目前)还没有异步执行,您将不得不在同一台主机上启动另一个进程来处理通信,而第一台主机正在计算内容。