Как кластеризовать два рабочих стола Ubuntu Linux для запуска программы?

Предыстория: Для некоторых друзей из местного учебного заведения я написал программу на Java, которая имитирует рост кристалла в микроклеточной матрице как параллельную программу, которая реализует 100 000 итераций МонтеКарло, каждая из которых состоит из 14 240^2 шагов. Впервые реализованный в 2-х измерениях, он способен поддерживать матрицу размером до 14,240x14,240, каждая ячейка является байтом, и связанные структуры данных для поддержки алгоритмов для вычисления областей зерен и т. Д.

Программа была написана в виде 4 параллельных потоков, которые используют четырехъядерный процессор (100%), причем каждый поток выполняет 1/4 число шагов, а потоки "рекомбинируют" в конце 14 240^2/4 испытаний и запускают следующая итерация, где я разветвляю новые темы. Доступ к общей матрице и т. Д. Контролируется с помощью synchronize ключевое слово, и 4 потока контролируются для закрытия с помощью семафора.

Кроме того, я построил для них аппаратное обеспечение - процессор Intel Core i5 2500K, с 16 ГБ ОЗУ, двойным разделением на Windows (для их использования) и Linux - для моего тестирования.

Проблема: Эти друзья теперь хотят, чтобы я попытался помочь в написании трехмерной версии, и готовы уступить матрице размером 10 000x10 000x10 000.

Моя идея: Очевидно, что одна машина не сможет справиться с этим. Можно ли использовать кластер из двух-трех таких машин? Если да, может кто-нибудь подсказать мне о реализации с открытым исходным кодом, бесплатной, мета-программной или Java-реализации, которая может выполнять JVM на этих узлах, а затем запустить эту программу?

На одной машине я могу коснуться только матрицы 400x400x400. Я готов переписать код таким образом, чтобы каждый квадрант матрицы обрабатывался в отдельном кластере с каждым испытанием квадранта, но мне нужно знать, как выполнять программу одновременно на разных машинах и как синхронизировать вычисления.

Я остаюсь благодарен за любое предложение или идею.

1 ответ

MPI, вероятно, где вы должны начать. Интерфейс передачи сообщений очень распространен при создании кластеров.

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