Модификация базового алгоритма
Алгоритм Фокса изначально ориентирован
на вычислительные системы с распределённой памятью. Предлагаемый им
способ распределения блоков между задачами позволяет максимально
распараллелить умножение матриц и исключает обращение разными процессами к одним и тем
же частям матрицы. В условиях smp системы нет необходимости в передаче данных
от одного вычислителя к другому, поэтому классический алгоритм Фокса
можно существенно упростить. Теперь нет необходимости в выбирать качестве
начального блока один из диаганальных блоков матрицы. Достаточно каждому из
потоков выделить свою строку блоков матицы А. Таким образом, все потоки имеют доступ
на чтение к обоим матрицам, а на запись к разным строкам результирующей матрицы С, и
не вызывают конфликтов.
|