Есть ли какие-либо параллельные рамки, подходящие для этого сценария? - PullRequest
0 голосов
/ 25 апреля 2019

Интересно, есть ли рамки, подходящие для этого сценария?

Например, у меня есть 3 подчиненных компьютера, 10 задач обработки, каждая задача имеет определенное время обработки, и между задачами существует зависимость обработки. Итак, как эффективно назначить 10 задач 3 подчиненным компьютерам, позволить им выполнять высокопроизводительные вычисления. Учтите, что между подчиненными машинами возникают накладные расходы. Например, менее подходящее задание помещается на ведомое устройство.

Ниже приведен пример кода,

задача 1. (узел1)

callback receive(msg){
   print(msg); 
   reply(ack);
}
loop(){
   ...// initializing
   ..// do computing
   ..// sampling data.
   prepare_packet(&packet);
   send(packet, len(packet), node2);
   wait_for_packet(TIME_OUT);
   delay(1000);
}

задача 2. (узел2)

callback receive(msg){
   print(msg); 
   reply(ack);
}
loop(){
   ...// initializing
   ..// do computing
   ..// sampling data.
   prepare_packet(&packet);
   send(packet, len(packet), node1);
   wait_for_packet(TIME_OUT);
   delay(1000);
}

Выше приведен простой пример, иллюстрирующий задачи обработки и их взаимосвязь. Мы можем обнаружить, что между узлом 1 (задача 1) и узлом 2 (задача 2) существует коммуникационное поведение. Если узел 1 и узел 2 выполняются на разных машинах, скорость выполнения может отличаться из-за различной производительности компьютера. Затем каждый узел должен ждать, пока другой выполнит задачи.

Например, когда узел 1 выполняет wait_for_packet в течение времени (t1, t5), он должен подождать и посмотреть, есть ли пакет от узла 2, чтобы определить, может ли быть активирована функция обратного вызова receive.

Итак, есть ли какая-либо вычислительная среда, способная выполнить вышеописанный сценарий? Спасибо!

...