Я запускаю симуляцию на своем ноутбуке (Core 2 Duo 1,8 ГГц с 4 ГБ ОЗУ под управлением Windows 7), что занимает очень много времени.
У меня есть пара неиспользуемых 32-битных (Core 2 Duo 1.8Ghz с 4GB RAM) настольных компьютеров. Я хотел бы подключить их (как ведомые устройства) в сетку, используя локальную сеть, к моему ноутбуку (в качестве ведущего), чтобы быстрее завершить выполнение алгоритмов.
Как это сделать? Какую операционную систему мне следует использовать? Должна ли моя операционная система быть сервером? Мне нужно дополнительное оборудование?
Пожалуйста, укажите мне на любые учебники или книги. Пожалуйста, дайте мне ваши ценные предложения и советы.
Какой тип инфраструктуры распределенных / параллельных вычислений вы создаете, во многом зависит от решаемой проблемы. Проще всего распределять рабочие нагрузки, которые легко разделить: разделить набор задач на 4 части, передать эти части на 4 машины, снова объединить результаты после завершения обработки. Рабочие нагрузки, которые не подходят для разделения, - это те, которые сильно зависят от ранее или в настоящее время обрабатываемых данных.
Для данных, которые невозможно разделить, лучше всего изучить некоторые из единственная система-образ frameworks (список см. по ссылке). Это заставляет несколько систем имитировать одну большую систему. Даже в этом случае необходимо позаботиться о проектировании обработки таким образом, чтобы минимизировать межсистемную связь. В подобных системах действительно полезны сетевые продукты, такие как Infiniband.
Для данных, которые жестяная банка subdivide, у вас есть намного больше возможностей. Возможно, самый большой BOINC, который предназначен для отчетов о рабочих единицах с очень высокой задержкой (часы, дни или даже недели). Я слышал о частных кластерах BOINC.
Еще в колледже я использовал PVM. Это C-библиотека (существует новая оболочка perl), которая обеспечивает межсистемную связь по множеству транспортов.
Что бы вы ни выбрали, вам все равно придется переделывать работу вашей вычислительной инфраструктуры. Это будет большая работа, но, по крайней мере, вы сможете использовать больше ресурсов для решения своих проблем. Маловероятно, что вы можете просто перетащить существующий код в структуру распределенных вычислений и заставить все работать, просто запустить и запустить распределенную структуру будет непросто.
В зависимости от ваших потребностей. Но для вычислительной нагрузки попробуйте Java RMI или MPI.
Для обработки данных попробуйте Hadoop