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

969
Matt Munson

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

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

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

4
Вы рассматривали кластер Беовульфа? http://en.wikipedia.org/wiki/Beowulf_cluster Piskvor 12 лет назад 2
Остерегайтесь ваших предохранителей! Jens Erat 12 лет назад 2

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

3
Journeyman Geek

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

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

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

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

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

Мне нравится идея стойки из нескольких сотен машин Raspberry Pi, разбивающих числа в кластере (возможно, "бушель"?). Shinrai 12 лет назад 1
2
Scott Chamberlain

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

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

Итак, в общем, если я использую сервис amazon, получу ли я учетную запись оболочки, чтобы я мог скомпилировать и отладить свою программу в их облачной системе, или как именно это работает? Я предполагаю, что они предоставляют спецификации для разработки программного обеспечения, чтобы воспользоваться их распределенной системой? Matt Munson 12 лет назад 0
Зависит от того, используете ли вы полный экземпляр или управляемую им систему MapReduce. Если вы используете их карту limit [вы получаете приложение для командной строки, которое запускаете локально для отладки] (http://docs.amazonwebservices.com/ElasticMapReduce/latest/GettingStartedGuide/) Если вы идете по маршруту «Другой процессор», вы получите адрес и закрытый ключ, к которому вы подключаетесь по SSH и имеете полный контроль над этим устройством. Как я уже сказал, полный контроль дешевле, но требует больше работы для настройки. Scott Chamberlain 12 лет назад 0
У них есть [бесплатный уровень] (http://aws.amazon.com/free/) их обычных экземпляров EC2, с которыми можно поиграть и опробовать его, если вы держите уровень ниже порога использования. Но у них нет бесплатного уровня Map-Reduce, чтобы попробовать его. Scott Chamberlain 12 лет назад 0
Моя программа написана на C ++. Означает ли http://aws.amazon.com/elasticmapreduce/faqs/#dev-8, что для работы с MapReduce будет много работы? На какую работу я бы посмотрел, чтобы настроить свой собственный двигатель? С точки зрения минимального объема работ по созданию минимально сложной программы C ++, модифицированной для многопоточного программирования, работающей под управлением службы облачных вычислений, что будет лучшим путем? я должен рассмотреть услуги кроме амазонки? Я попробую бесплатный уровень и посмотрю, с чем я столкнулся. Matt Munson 12 лет назад 0
Вы можете использовать C ++ с map-Reduce, однако вам, вероятно, придется изменить способ обработки выдачи единиц работы в своем коде. Основная логика обработки единицы работы должна оставаться в основном неизменной. Обратите внимание, что это отличается от многопоточности. У вас будет 2-3 приложения, одно распределяющее работу, одно выполняющее работу и одно, объединяющее выполненную работу с результатом. Независимо от того, что вы решите использовать, потребуется всего несколько усилий, чтобы превратить ваше приложение в распределенное. Я бы порекомендовал прочитать некоторые учебные пособия по распределенным вычислениям, или, по крайней мере, по карте-уменьшить Scott Chamberlain 12 лет назад 0
Это звучит сложно. Я никогда не пытался заставить исполняемые файлы передавать информацию взад и вперед. Как это вообще будет достигнуто? Облака не поддерживают параллельную обработку? Matt Munson 12 лет назад 0
позвольте нам [продолжить это обсуждение в чате] (http://chat.stackexchange.com/rooms/1645/discussion-between-scott-chamberlain-and-matt-munson) Scott Chamberlain 12 лет назад 1
0
TheLQ

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

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

Похожие вопросы