Я решаю проблему мультимасштаба, используя Гетерогенный Метод Мультимасштаба (HMM) . По сути, моя конкретная процедура использует следующий итерационный процесс:
- Решите много локальных матричных систем.
- Вычислите значение интереса из решений локальных систем.
- Соберите глобальную матричную систему из локальных «ценностей интереса»
- Решить глобальную матричную систему
- Используйте решение глобальной матричной системы для формирования новых локальных матричных систем.
Повторяйте, пока не будут выполнены некоторые критерии сходимости.
Поскольку существует много локальных (независимых) линейных систем уравнений и несколько систем могут вписаться в локальную оперативную память, я полагаю, что лучше всего загружать несколько «локальных» систем в каждый процессор и решать каждую систему последовательно ( см. Этот опубликованный вопрос ).
Мой вопрос касается лучшей стратегии сборки и решения глобальной матричной системы. В моем конкретном случае глобальная матричная система достаточно мала, чтобы полностью поместиться в оперативную память любого процессора. Кроме того, локальные и глобальные матрицы не меняют размер между итерациями. Итак, я предвижу одну из трех возможных стратегий:
- Соберите «интересующие вас значения» на одном процессоре и последовательно соберите / решите глобальную матричную систему на одном процессоре.
- Скопируйте интересующие значения на каждый процессор и последовательно соберите / решите одну и ту же глобальную матричную систему на каждом процессоре.
- Предполагая, что каждый процессор обладает «интересующими значениями», необходимыми для создания смежных блоков глобальной матрицы, мы можем собирать разделы глобальной матрицы локально, а затем решать их вместе параллельно.
Я вижу некоторые преимущества / недостатки каждого метода. В способе 1 обмен данными не требуется на этапе решения, но обмен данными с корневым процессором и из него может стать узким местом (особенно в масштабе). Для способа 2 может потребоваться больше межпроцессорных обменов данными для сборки глобальной матрицы, чем в первом способе, но не требуется никакой связи на этапе решения или на этапе сборки локальной матрицы, который следует. Метод 3 не требует межпроцессорного взаимодействия для сборки локальных или глобальных матриц, но требует его на этапе решения.