4

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

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

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

3 ответа3

3

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

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

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

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

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

2

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

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

0

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

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

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