Могу ли я использовать потоки или мне нужно использовать процессы при умножении двух матриц? - PullRequest
0 голосов
/ 05 апреля 2019

Моя домашняя задача гласит, что я должен отправить часть матрицы A и весь B каждому рабочему процессу, но я (и многие люди в моем классе) не уверены, требует ли это использования fork () для создания процесса или если можно использовать pthreads. Вопрос в следующем:

Напишите параллельную программу, вычисляющую произведение двух n × n плотных матриц, C = A × B, используя мастер-процесс и p рабочих процессов.

Мастер-процесс горизонтально разбивает матрицу A на p равных срезов (мы предполагаем, что p делит n) и отправляет всю матрицу B и один кусочек A каждому из рабочих процессов (существует взаимно-однозначное сопоставление между разделами A и рабочими процессами).

сокеты и SOCK_STREAM должны использоваться

Мое задание в настоящее время работает так:

Программа берет две матрицы и заполняет их случайными значениями, затем отправляет A и B в другую программу с использованием сокетов. Я создаю массив pthreads и отправляю части A и всю B в каждый поток и в конечном итоге возвращаю матрицу продукта в первую программу.

Размерность матриц указана в командной строке.

...