как выполнить расчет матрицы симметрии c с балансировкой нагрузки? - PullRequest
0 голосов
/ 09 июля 2020

Я хочу вычислить n x n матрицу A. Это симметрия c, то есть A(i,j) = A(j,i)

Предположим, вычисление A(i,j) занимает много времени, это займет 1000 секунд.

Предположим, получить A(j,i) из A(i,j) - это просто копирование данных, это очень быстро, это займет 0,00001 с.

Каждый элемент A(i,j) не имеет зависимости, вы можете сначала вычислить кого угодно, если хотите.

Чтобы быстро получить все элементы в матрице A, необходимо использовать атрибут symmerti c.

Я хочу использовать n worker для вычисления матрицы A. Рабочий i вычислить строку i из A.

Наивное решение:

worker 1 calculate A(1,1), A(1,2), A(1,3), ...,  A(1,n)
worker 2 calculate         A(2,2), A(2,3), ...,  A(2,n)
worker 2 calculate                 A(3,3), ...,  A(3,n)
...
worker n calculate                               A(n,n)
then lower triangle part can obtain by upper triangle part.

Это решение приводит к worker 1 требует вычисления n элемента, но только worker n вычислить 1 элемент. Это решение для балансировки нагрузки.

Я ищу решение для балансировки нагрузки. Может ли кто-нибудь дать несколько советов? Спасибо за ваше время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...