2

Предыстория: Для некоторых друзей из местного учебного заведения я написал программу на 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 000 x 10 000 x 10 000.

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

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

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

1 ответ1

1

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

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