Я хотел бы создать собственное частное вычислительное облако или так называемую сетку.
У меня есть доступ к ИТ-классам с кучей быстрых компьютеров, и я хотел бы использовать эту огромную мощность. (Или даже просто используйте 3 маленьких компьютера дома одновременно для одной и той же задачи.)
Что-то вроде виртуальной машины, распределенной по всем ядрам ЦП, было бы здорово. Так что у меня была бы одна (виртуальная) ОС, работающая с ~ 40 ГБ ОЗУ, эффективной частотой ~ 120 ГГц и большим объемом памяти. Я знаю, что сеть все замедлит, но если это «слияние ресурсов» того не стоит из-за медленной сети (хотя это 1 Гбит / с на каждой машине), что-то вроде BOINC, но меньше и проще тоже подойдет. . Что-то, что распределяет рабочие единицы для локальных узлов.
Я бы хотел, чтобы он был бесплатным, возможно, с открытым исходным кодом и работал на узлах Windows и Linux.
Если нет простого способа, могу ли я реализовать свой собственный протокол, предназначенный для каждого вычисления (это может быть что угодно, от шахматного ИИ до трассировки лучей, от фрактального рендеринга до расчета PI), который я хотел бы сделать? Или использовать BOINC?
Я взглянул на Eucalyptus, но думаю, что это было бы слишком много. Разве BOINC не был бы таким же?
Кто-нибудь может порекомендовать мне хорошее программное обеспечение, с помощью которого я мог бы это сделать?
Это очень широкий вопрос. В общем, запуск одной ОС общего назначения на нескольких компьютерах - это святой Грааль параллельных / распределенных вычислений, и он не был реализован каким-либо значимым образом. Если ваша проблемная область легко распараллеливается, то есть много решений для вашей проблемы, включая системы пакетного планирования, такие как Condor, и подходы к кластеризации, такие как Eucalyptus, Hadoop и Beowulf. Если это нелегко распараллелить, значит, вам нужно много алгоритмического мышления. Итак, для любого заданного проблемного пространства
У меня была бы одна (виртуальная) ОС, работающая с ~ 40 ГБ ОЗУ, эффективной частотой ~ 120 ГГц и большим объемом памяти.
Не существует без специального оборудования или программного обеспечения. Причина, по которой его не существует, заключается в том, что ваши «быстрые» каналы 1GbE чертовски медленны, если сравнить их со скоростями межсоединений внутри любого данного ПК. Вот несколько примеров:
Теперь вы можете делать несколько вещей, которые вы упомянули отдельно. Например, существуют приложения для распределенных вычислений, такие как BOINC / SETI @ Home, которые, если, конечно, полагаются на рабочие нагрузки с высоким уровнем параллелизма (могут обрабатываться отдельно и позже объединяться). Существуют также приложения для распределенного хранения, такие как Bittorrent / Brancecache.
Если вы имеете в виду конкретную рабочую нагрузку, которую вы хотите решить с помощью числового анализа, и программных решений, взгляните на Кластеризация Беовульфа.
Здесь действительно важно понять, как расстояние между компонентами влияет на более медленную передачу данных между ними. Это фундаментальный принцип вычислений, который объясняет многие вещи, включая ответ на ваш вопрос. Краткая версия. Чем дальше друг от друга два компонента, тем меньше их максимальная скорость связи. Подумайте, насколько быстр кэш L1 по сравнению с оперативной памятью, а затем с жестким диском. Это прямая функция его расстояния от ядра.