Создание импровизированного "суперкомпьютера" путем подключения нескольких используемых компьютеров в локальной сети

Я продолжаю разрабатывать простую, но ресурсоемкую компьютерную программу, которую я использую для научных исследований. Было бы очень полезно иметь большую скорость обработки. Сейчас я использую Mac OS X 10.5.7 на 2-ГГц Intel Core Duo, и моя программа работает довольно медленно. Некоторое время я работал на значительно более старом ноутбуке с Ubuntu, и он работал в 20 раз быстрее.

Я думаю, что могу подключить к локальной сети кучу дешевых бывших в употреблении ПК под управлением Linux и использовать многопоточное программирование для распределения нагрузки обработки по компьютерам. Моя программа смущающе параллельна, то есть линейное увеличение числа ядер должно привести к почти линейному увеличению скорости вычислений. Кроме того, размер программы, требования к памяти и требования к HD практически равны нулю, а объем информации, передаваемой в и из основной процедуры (между компьютерами), в основном равен нулю.

Так что мне интересно, какие дорожные блоки могут помешать осуществлению этого? Это должно быть довольно просто или нет? Будет ли это даже работать? Кроме того, при покупке бывших в употреблении компьютеров какие факторы следует учитывать? Для моих целей, двухъядерный 2ГГц ~= одноядерный 4ГГц? Я полагаю, что, как правило, я должен идти с самыми дешевыми многоядерными компьютерами, которые я могу найти (лучшее соотношение обработки и стоимости).

3 ответа

Решение

Предупреждение: большая часть знаний здесь носит теоретический характер и должна быть подкреплена фактами, основанными на конкретных потребностях

Вы, вероятно, могли бы / должны настроить кластер. Если вы собираетесь использовать новые системы, самые дешевые многоядерные системы звучат как хорошая ставка (если вы выбираете старые, ИЗБЕГАЙТЕ PENTIUM IV, если вы не хотите обогревать помещение более эффективно, чем вы обрабатываете. Я бы рассмотрел двухъядерный 2 ГГц Система немного лучше, чем один процессор с частотой 4 ГГц, если только у вас не было одного потока, требующего большой мощности (чего у вас нет). Я бы отметил, что в целом новые версии процессоров общего назначения обычно имеют тенденцию быть лучше, чем те, которые они заменяют, особенно в последнее время, так как энергопотребление стало проблемой. Если бы я хотел разобраться с мелочами, я бы посмотрел на различные поколения процессоров и тесты для них, чтобы получить более четкое представление об эффективности и сила.

Вы, вероятно, захотите рассмотреть загрузку рабочих систем с минимальной операционной системой, со стандартными образами через сеть, используя PXE, чтобы сэкономить на хранилище для каждой отдельной системы - так как ваши требования к оперативной памяти минимальны, вы, вероятно, можете иметь всю ОС в оперативной памяти, поскольку вы используете это только для одной цели

Возможно, вам понадобится программное обеспечение, которое может быть запущено в кластере (IE, учитывайте это при проектировании - возможно, с MPI, настройте программное обеспечение кластера и т. Д. При этом я видел МАССОВЫЕ массивы товарные ПК, связанные вместе в университете для кластера, так что его правдоподобно

С другой стороны, учитывая, что массивная распараллеливание является вашей главной целью, и вы собираетесь работать с массивно параллельными рабочими нагрузками, вы можете рассмотреть альтернативы кластеру x86 - в Ubuntu есть 48-ядерный кластер, который они построили из плат разработки приложений (я Я думаю, что кластер систем Raspberry Pi будет... интересным и достаточно эффективным, если вы не возражаете против огромного количества странных маленьких недорогих систем).

У Journeyman Geek есть очень хорошие замечания по настройке собственного кластера, но я также хотел бы добавить, что в зависимости от вашей рабочей нагрузки может быть дешевле использовать что-то вроде Elastic Map-Reduce. Если ваша рабочая нагрузка может быть превращена в проблему Map-Reduce, вы должны обратиться к ней. После учета стоимости покупки компьютеров, электричества, охлаждения и обслуживания, возможно, будет дешевле запустить его на Amazon (0,10 долл. США в час для самого низкого стандартного уровня от Amazon, 0,045 долл. США в час, если вы используете текущий спот). цена экземпляра))

Если вы готовы приложить немного больше усилий, вы можете использовать свой собственный механизм параллельной обработки и использовать микроэкземпляр еще дешевле ($0,02/ час для полного экземпляра, $0,007/ час по текущей спотовой цене). Собственный пакет Amazon Map-Reduce не будет работать на нем. Это может быть очень полезно, если вместо этого ваш процесс связан с процессором, если память связана как микроэкземпляры быстрее, чем маленький стандартный образ, но у них нет памяти и меньше оперативной памяти.

Другим вариантом, который вы можете рассмотреть, является запуск вашей программы внутри BOINC. Это имеет преимущество существующей системы, которая уже имеет сложную часть распределения и сбора "рабочих мест". Это также позволяет вам привлечь больше людей к запуску вашей программы. Вы можете привлечь друзей или даже случайных людей в Интернете для запуска вашей программы, если вы достаточно рекламируете ее. Это позволяет вам иметь (потенциально) массивный кластер компьютеров для запуска программ без затрат на запуск большого количества небольших компьютеров и продолжающихся затрат на электроэнергию.

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

Другие вопросы по тегам