Для вычисления матричного произведения C = A x B
элемент за элементом вы просто вычисляете C(i,j) = dot_product(A(i,:),B(:,j))
. То есть (i, j) элемент C является точечным произведением строки i в A и столбца j в B.
Если вы настаиваете на отправке строк A и строк B вокруг, тогда вам будет непросто написать параллельную программу, производительность которой превосходит простую последовательную программу. Скорее, то, что вам следует сделать, это отправить строки A и столбцы B процессорам для вычисления элементов C. Если вы вынуждены отправлять строки A и строки B, то я предлагаю сделать это, но вычислить Продукт на сервере. То есть игнорируйте все рабочие процессоры и просто выполняйте вычисления последовательно.
Одной из альтернатив будет вычисление частичных точечных произведений на рабочих процессорах и накопление частичных результатов. Это потребует некоторого сложного программирования; это можно сделать, но я буду очень удивлен, если с вашей первой попытки вы сможете написать программу, которая превосходит (по скорости выполнения) простую последовательную программу.
(Да, существуют другие подходы к разложению матрично-матричных продуктов для параллельного выполнения, но они более сложны, чем описанные выше. Если вы хотите исследовать их, тогда Матричные вычисления - это место, с которого можно начать чтение .)
Вам также необходимо тщательно продумать предложенные меры эффективности - наиболее эффективной будет программа передачи сообщений, которая не передает сообщений. Если стоимость передачи сообщений намного превышает стоимость вычислений, то реализация без передачи сообщений будет наиболее эффективной по обоим показателям. Тем не менее, в целом, показатели эффективности параллельных программ представляют собой отношения ускорения к числу процессоров: таким образом, ускорение в 8 раз на 8 процессорах является совершенно эффективным (и обычно его невозможно достичь).
Как уже говорилось, ваша проблема не является разумной. Либо установщик проблемы неверно определил его, либо вы неправильно указали (или неправильно поняли) правильную спецификацию.