Можно ли объединить вычислительную мощность 2 компьютеров?

95266
Wern Ancheta

Вот несколько вопросов, я бы хотел, чтобы вы меня просветили.

  1. Можно ли объединить вычислительную мощность 2 компьютеров?
  2. Как мне это сделать?
13
1) Конечно. 2) С огромным трудом. Daniel R Hicks 11 лет назад 7

5 ответов на вопрос

11
mindless.panda

Непрозрачно, когда работающая программа может каким-то образом использовать второй компьютер для выполнения кода, поскольку они логически разделены, и процессор не может обмениваться данными или получать доступ к памяти друг друга.

Это не значит, что вы не можете объединить вычислительную мощность:

  1. Определенное программное обеспечение может иметь компоненты, которые могут выполняться на других машинах, например, сворачивание белка, SETI @ home. Они, как правило, специализированные, то есть вы не можете запустить Excel и сказать ему использовать другой компьютер для вычислений.
  2. Если вы выполняете задачи с интенсивным использованием процессора, вы можете использовать дополнительный компьютер для их запуска, например, кодирование / перекодирование видеопотока.

Если вы хотите каким-либо образом использовать дополнительный компьютер, крайне важно иметь возможность удаленного управления. Два способа сделать это через некоторый вид удаленного доступа (RDP, VNC) или альтернативно что-то вроде синергии +.

Скажем, например, у меня есть 4 ГБ ОЗУ на моем ноутбуке и 4 ГБ на моем ПК, позволит ли мне RDP виртуально запускать програн с 8 ГБ ОЗУ? TGamer 7 лет назад 0
4
William Hilsum

Одна из моих наиболее часто используемых строк - Да и Нет!

Да, это возможно - для определенных приложений, которые предназначены для работы таким образом. (Обычно известный как кластер - Дальнейшее чтение здесь )

Нет, невозможно (по крайней мере, насколько я знаю) взять два готовых компьютера, «связать» их вместе и получить объединенную память, вычислительную мощность и все остальное.

@ ~ quack да, и я сказал для некоторых приложений ... Поскольку вопрос был помечен Windows-7, я предположил, что он имел в виду компьютер, работающий каждый день, с любой готовой программой .... В любом случае - кластеры Beowulf не требуют специально написанные приложения? ... Я не эксперт, никогда не пользовался им, но я быстро прочитал http://www.beowulf.org/overview/index.html (особенно последние два абзаца) William Hilsum 14 лет назад 1
извините, удалил мой предыдущий комментарий после перечитывания и заметил, что вы уже связаны с концепцией кластеризации. beowulf разработаны на основе готовых компонентов и являются одним из способов "связать" несколько систем вместе, но вы правы, что они не работают для программ, которые специально не предназначены для них. quack quixote 14 лет назад 0
4
Nippysaurus

Это очень возможно! Но, судя по простоте вашего вопроса, я предполагаю, что вы хотели бы просто запустить программу, которая волшебным образом сделает ваш компьютер в два раза быстрее, что невозможно.

Необходимо понимать, что при запуске программы она поддерживает свое состояние, провоцируя ЦП перемещать память между регистрами жесткого диска, ОЗУ и ЦП, а также адреса различных компонентов (таких как видеокарты или сетевые карты). Проблема с использованием процессора с другого компьютера, чтобы помочь вам, что ему нужен доступ к той же памяти. А поддержание зеркального отображения памяти вашего компьютера на другом компьютере требует слишком много накладных расходов, что легко устраняет цель попытки добавить другой компьютер для повышения производительности :)

Но тип вещей, которые можно разделить между несколькими компьютерами, это рендеринг изображений или некоторые математические вычисления, которые могут работать независимо.

2
George Spiceland

Если вам нужен способ объединения вычислительной мощности двух ПК в один, самый простой способ сделать это - настроить их оба в качестве хостов виртуальных машин с использованием программного обеспечения, такого как VMWare ESXi (предупреждаем, что для этого потребуется устройство с совместимым оборудованием) и создание группы ресурсов или кластера и создание виртуальной машины, которая использует ресурсы обоих компьютеров. Это НЕ даст вам полной скорости в 2 раза (вы потеряете ресурсы из-за виртуализации) и является ограниченным решением из-за вероятных требований совместимости, но это самый «правильный» ответ на ваш вопрос. Виртуальная машина будет работать как один ПК с вычислительной мощностью обоих хостов за вычетом накладных расходов, необходимых для поддержки виртуализации.

Боюсь, что общение между хозяевами станет узким местом. gronostaj 10 лет назад 0
Да, связь между хостами может быть узким местом, это является частью накладных расходов. Негигабитные сети были бы основным виновником этого, но, учитывая дешевую и плодовитую гигабитную доступность, я не чувствую, что это особенно наказывает. Однако это справедливо для всей сетевой распределенной обработки, и виртуальная машина является гораздо более удобным сценарием со значительно меньшими сложностями, чем удаленные вызовы процедур и пользовательские приложения, предназначенные для (которые должны быть в любом случае) сетевых распределенных вычислений. George Spiceland 10 лет назад 1
1
Scott

Я согласен с другими ответами:

  • Если у вас огромная многослойная рабочая книга Excel, и вы хотите иметь возможность запускать Excel в два раза быстрее (обновление формул и сценариев, запуск макросов и т. Д.), Вам не повезло.
  • Если у вас есть пользовательское приложение, которое легко разбить на разделы, например, найти квадратный корень каждого целого числа от 1 до 1 000 000, вам будет легко разбить проблему на части и распределить их.
  • Если у вас есть пользовательское приложение, такое как вычисление первых 1 000 000 цифр π (pi), вы сможете это сделать, если вы достаточно хорошо понимаете проблемное пространство.

Если вы говорите о разработке программного обеспечения для работы в распределенной (с несколькими компьютерами) среде, вот несколько советов:

  • Используйте удаленные вызовы процедур (RPC) . Подобно тому, как вы можете сделать хост файловым сервером или веб-сервером, RPC позволяют вам сделать машину, по сути, сервером ЦП. Концептуально у вас будет один главный компьютер, который будет RPC-клиентом, и он будет вызывать библиотечные функции, которые будут прозрачно выполняться на сервере. В своей простейшей форме эта архитектура не даст вам никакого выигрыша в производительности, поскольку в любой момент будет выполняться только один процессор. Однако в асинхронной модели клиент может запустить удаленную процедуру на сервере, а затем выполнять другие действия во время работы сервера.
  • Используйте язык, разработанный для параллельной обработки, такой как Unified Parallel C (UPC) . Это расширение языка C с возможностями для распределенных данных и одновременного выполнения. Рекомендации: