Чи можна поєднати потужність обробки 2 комп’ютерів?


14

Ось кілька питань, я б хотів, щоб ви могли мене просвітити.

  1. Чи можна поєднати потужність обробки 2 комп’ютерів?
  2. Як це зробити?

7
1) Безумовно. 2) З величезними труднощами.
Daniel R Hicks

Відповіді:


11

Не прозоро там, де запущена програма може якось використовувати другу машину для виконання коду, оскільки вони логічно відокремлені, оскільки процесор не має можливості спілкуватися або отримувати доступ до пам'яті один одного.

Це не означає, що ви не можете поєднати обробну потужність:

  1. У певному програмному забезпеченні можуть бути компоненти, які можна виконати на інших машинах, наприклад, складання білка, SETI @ home. Вони, як правило, спеціалізовані, тобто ви не можете запустити Excel і сказати йому використовувати інший комп'ютер для обчислення.
  2. Якщо ви виконуєте інтенсивні завдання процесором, ви можете використовувати їх для вторинної машини, наприклад, кодування / перекодування відеопотоку.

Якщо ви хочете використати вторинний комп'ютер будь-яким способом, то можливість дистанційного керування має вирішальне значення. Два способи зробити це через якийсь віддалений доступ (RDP, VNC) або альтернативне щось на кшталт synergy +.


1
Скажімо, наприклад, у мене на ноутбуці є 4 Гб оперативної пам’яті та 4 Гб на моєму ПК, чи дозволить RDP фактично запускати програн з 8 ГБ оперативної пам’яті?
TGamer

5

Один з моїх найбільш часто використовуваних рядків - Так і Ні!

Так, це можливо - для певних додатків, розроблених таким чином. (Загальновідомий як кластер - далі читайте тут )

Ні, не можна (принаймні, наскільки я знаю) зняти два з полицьких комп’ютерів, "зв'язати" їх разом і отримати об'єднану пам'ять, потужність обробки та все інше.


1
@ ~ quack так, і я сказав для певних додатків ... Оскільки питання було позначене Windows-7, я припускав, що він має на увазі щоденний комп'ютер з будь-якою програмою на полиці .... У будь-якому разі - Не вимагайте кластерів Beowulf спеціально написані програми? ... Я не експерт, жодного разу не використовував, але я швидко прочитав beowulf.org/overview/index.html (особливо останні два абзаци)
Вільям Гілсум,

Вибачте, після перечитування я видалив попередній коментар і помітив, що ви вже пов’язані з концепцією кластеризації. beowulfs розроблені навколо нестандартних компонентів і є одним із способів "зв'язати" декілька систем разом, але ви праві, що вони насправді не працюють для програм, які спеціально не призначені для них.
шарлатаний кіхот

4

Це дуже можливо! Але судячи з простоти вашого запитання, я припускаю, що ви хочете просто запустити програму, яка магічно зробить ваш комп'ютер удвічі швидшим, що неможливо.

Потрібно розуміти, що при запуску програми вона підтримує свій стан, провокуючи процесор переміщати пам'ять між регістрами жорсткого диска, оперативної пам’яті та процесора, а також адресами різних компонентів (наприклад, відеокарт або мережевих карт). Проблема з використанням процесора з іншого комп’ютера, який допоможе вам, полягає в тому, що йому потрібен доступ до тієї самої пам'яті. А підтримка дзеркального зображення пам’яті ваших комп’ютерів на іншому комп’ютері вимагає стільки накладних витрат, що легко перемогти мету спробувати додати інший комп'ютер для отримання продуктивності :)

Але типи речей, які можна розділити між декількома комп'ютерами, - це зображення зображень або деякі математичні обчислення, які можуть працювати незалежно.


3

Якщо ви шукаєте, це спосіб поєднання потужності обробки двох ПК в один, "найпростіший" спосіб зробити це налаштувати обидва з них як хости віртуальної машини за допомогою програмного забезпечення типу VMWare ESXi (Попереджайте, що це вимагатиме пристрою для сумісного обладнання) та створення групи ресурсів або кластеру та створення віртуальної машини, яка використовує ресурси обох комп'ютерів. Це НЕ допоможе отримати повну 2x швидкість (ви втратите ресурси через віртуалізацію), і це обмежене рішення через ймовірні вимоги сумісності, але це найбільш "правильна" відповідь на ваше запитання. Віртуальна машина буде діяти як один ПК із потужністю обробки обох хостів за вирахуванням накладних витрат, необхідних для підтримки віртуалізації.


Я боюся, що комунікація між господарями буде вузьким місцем.
gronostaj

1
Так, спілкування між хостами може бути вузьким місцем, це частина накладних витрат. Негігабітні мережі були б головним винуватцем цього, але враховуючи дешевий і плодотворний гігабітний доступ, я не відчуваю, що це особливо штрафує. Однак це стосується всієї мережевої розподіленої обробки, і VM є набагато більш корисним сценарієм із значно меншим ускладненням, ніж віддалені виклики процедур та спеціально написані програми, присвячені (яким має бути все-таки) мережевих розподілених обчислень.
Джордж Спайсленд

2

Я погоджуюся з іншими відповідями:

  • Якщо у вас є величезна багатолистова робоча книга Excel, і ви хочете мати можливість запускати Excel удвічі швидше (оновлення формул та сценаріїв, запуск макросів тощо), вам не пощастить.
  • Якщо у вас є спеціальна програма, яка легко розділяється, наприклад, знайти квадратний корінь кожного цілого числа від 1 до 1 000 000, вам слід легко розбити проблему на частини та розподілити їх.
  • Якщо у вас є спеціальний додаток, наприклад обчислення перших 1 000 000 цифр π (pi), ви можете це зробити, якщо ви досить добре зрозумієте проблемний простір.

Якщо ви говорите про розробку програмного забезпечення для роботи в розподіленому (багатокомп'ютерному) середовищі, ось кілька пропозицій:

  • Використовуйте віддалені виклики процедур (RPC) . Так само, як ви можете зробити хост-файловий сервер або веб-сервер, RPC дозволяють зробити машину, по суті, CPU-сервером. Концептуально у вас була б одна головна машина, яка була б клієнтом RPC, і вона викликала б функції бібліотеки, які прозоро виконувалися б на сервері. У своїй найпростішій формі ця архітектура не дала б вам ніякої користі від продуктивності, оскільки тільки один процесор буде виконуватися в будь-який момент. Однак в асинхронній моделі клієнт може запустити віддалену процедуру на сервері, а потім виконувати інші дії, поки сервер працює.
  • Використовуйте мову, розроблену для паралельної обробки, наприклад, Unified Parallel C (UPC) . Це розширення мови С із засобами для розподілених даних та одночасного виконання. Список літератури:
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.