13

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

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

5 ответов5

11

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

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

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

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

4

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

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

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

4

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

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

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

2

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

1

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .