Я вирішую багатомасштабну задачу за допомогою гетерогенного багатомасштабного методу (HMM) . По суті, моя конкретна процедура використовує такий ітераційний процес:
- Розв’яжіть багато локальних матричних систем.
- Обчисліть значення інтересу за рішеннями локальних систем.
- Зберіть глобальну матричну систему з локальних "цінностей, що цікавлять"
- Розв’яжіть глобальну матричну систему
- Використовуйте рішення глобальної матричної системи для формування нових локальних матричних систем.
Повторюйте, поки не будуть виконані деякі критерії конвергенції.
Оскільки існує багато локальних (незалежних) лінійних систем рівнянь, і декілька систем можуть вміщуватися в локальну оперативну пам'ять, я вважаю, що найкраще завантажувати кілька "локальних" систем у кожен процесор і вирішувати кожну систему послідовно ( див. Це розміщене запитання ).
Моє запитання стосується найкращої стратегії зібрати та вирішити глобальну матричну систему. У моєму конкретному випадку система глобальної матриці досить мала, щоб вона могла повністю вміститися в оперативній пам'яті будь-якого процесора. Крім того, локальні та глобальні матриці не змінюють розмір між ітераціями. Отже, я передбачаю одну з трьох можливих стратегій:
- Зберіть «цікавлять значення» на одному процесорі та збирайте / вирішуйте глобальну матричну систему послідовно на одному процесорі.
- Скопіюйте значення, що цікавлять, на кожен процесор і послідовно збирайте / вирішуйте ту саму глобальну матричну систему на кожному процесорі.
- Якщо припустити, що кожен процесор володіє "значеннями, що цікавлять", необхідними для створення суміжних блоків глобальної матриці, то ми можемо зібрати розділи глобальної матриці локально, а потім вирішити їх разом паралельно.
Я бачу деякі переваги / недоліки кожного методу. У Способі 1 не потрібно спілкуватися на етапі вирішення, але зв'язок з кореневим процесором і з нього може стати вузьким місцем (особливо в масштабі). Спосіб 2 може зажадати більше міжпроцесорних комунікацій для збирання глобальної матриці, ніж перший метод, однак комунікація не потрібна на етапі вирішення або на етапі складання локальної матриці, що слідує. Спосіб 3 не вимагає міжпроцесорного зв'язку для складання локальних або глобальних матриць, але вимагає його на етапі вирішення.
Припустимо, що кожна локальна система знаходиться в порядку x 10 3 і існує 10 3 x 10 3 локальних матричних систем. Давайте припустимо, що система глобальної матриці має розмір 10 3 x 10 3 . Згідно з цими припущеннями, яка з трьох вищезгаданих стратегій, ймовірно, призведе до швидшого вирішення глобальної системи? Чи існують інші стратегії відображення глобальної матриці, які можуть працювати швидше за кожну ітерацію?