распараллеливание «while» в MPI - PullRequest
0 голосов
/ 30 апреля 2020

Я хотел попросить помочь с распараллеливанием MPI. В основном в этом фрагменте кода я собираюсь выполнить глубокий поиск в неупорядоченном бинарном дереве поиска, чтобы найти лучшее. У меня есть некоторые проблемы с распараллеливанием, то есть я думал о передаче каждого узла дерева процессу, чтобы он вычислял максимум в поддереве, которое исходит от этого узла. Поэтому я думал об использовании функции MPI_gather, то есть каждый работник будет вычислять максимум в своем поддереве, каждый из этих процессов будет передавать это значение мастеру для вычисления глобального максимума дерева. Может ли такой процесс go?

int calcolaMax (узел * root) {

if(root->left == NULL && root->right == NULL) return root->data;

stack* pila = new_stack(100);

node* node;
unsigned int max = 0;

push(pila, root);


while (is_empty(pila) != 1)
{

    node = pop(pila);
    if (node->data > max) max = node->data;


    if (node->left != NULL) push(pila, node->left);
    if (node->right != NULL) push(pila, node->right);

}

free_stack(pila);

return max;


}
...