Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

Условия

Знакомство в компании

Представим, что процессы – это компания незнакомых людей, которые знакомятся с помощью следующей игры:

  1. Начинает процессор 0. Случайным образом он выбирает другой процессор i и посылает ему сообщение со своим именем (можете случайным образом задавать имя)

  2. Процессор i отсылает сообщение случайному процессору j (которые еще не участвовал в игре), в сообщении – все имена и ранги предыдущих процессоров в правильном порядке. Номер процессора j знает только I, так что все должны быть начеку.

  3. Игра заканчивается через N ходов. Используйте синхронную пересылку MPI_SSend

Напишите программу используя MPI. (25 баллов)

Параллельный одномерный клеточный автомат.

С помощью MPI распараллельте одномерный клеточный автомат Вольфрама (Rule110).

Игра происходит следующим образом:

  1. Инициализируйте одномерный массив 0 и 1 случайным образом

  2. В зависимости от значений: левого соседа, себя, правого соседа на следующем шаге клетка либо меняет значение, либо остается той же. Посмотрите, например, что значит Rule110 (https://en.wikipedia.org/wiki/Rule_110)

Сделайте периодические и непериодические граничные условия (5 баллов)

Работает параллельный код на нескольких процессах (20 баллов)

Имплементированы клетки-призраки (ghost cells) (10 балла)

Можно поменять правило игры (сделать одно из 256) (20 баллов)

График ускорения работы программы от кол-ва процессов (5 баллов)

Картинка эволюции для одного правила (15 баллов)

Итого баллов: 75 + 25 = 100 баллов за базовую часть из 2 заданий

Бонус Параллельная игра «Жизнь» (*) 20 баллов Распараллельте игру «Жизнь» Конвея (https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life)

Бонус Война и Мир (*) 10 баллов С помощью работы на нескольких процессах (MPI) найдите топ-10 встречающихся слов в романе «Война и Мир» Л.Н. Толстого

Решения

Знакомство в компании

Пример запуска:

chmod +x acquaintance.py
mpirun --allow-run-as-root -n 8 acquaintance.py

Вывод программы:

Я processor_0
Я processor_6 и знаком с ['processor_0']
Я processor_2 и знаком с ['processor_0', 'processor_6']
Я processor_5 и знаком с ['processor_0', 'processor_6', 'processor_2']
Я processor_3 и знаком с ['processor_0', 'processor_6', 'processor_2', 'processor_5']
Я processor_4 и знаком с ['processor_0', 'processor_6', 'processor_2', 'processor_5', 'processor_3']
Я processor_1 и знаком с ['processor_0', 'processor_6', 'processor_2', 'processor_5', 'processor_3', 'processor_4']
Я processor_7 и знаком с ['processor_0', 'processor_6', 'processor_2', 'processor_5', 'processor_3', 'processor_4', 'processor_1']

Параллельный одномерный клеточный автомат

Пример запуска:

chmod +x automata.py
mpirun --allow-run-as-root -n 8 automata.py --periodic --show-progress

Вывод программы:

⬜⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬛⬛⬜⬛⬜⬛⬛⬜⬜⬛⬜⬜⬛⬜
⬜⬛⬛⬛⬛⬛⬛⬜⬛⬛⬜⬛⬛⬛⬛⬜⬜⬛⬛⬛⬛⬛⬛⬛⬛⬜⬛⬛⬜⬛⬛⬜
⬛⬛⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬜⬜⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬛⬜
⬛⬛⬜⬜⬜⬛⬛⬜⬜⬜⬜⬛⬜⬛⬛⬛⬛⬛⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬛⬛
⬜⬛⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬛⬛⬜⬜⬜⬛⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬛⬛⬜
⬛⬛⬜⬛⬛⬜⬛⬜⬜⬛⬛⬜⬜⬛⬜⬜⬛⬛⬜⬜⬜⬛⬛⬜⬛⬜⬜⬜⬛⬛⬛⬜
⬛⬛⬛⬛⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬜⬛⬛⬛⬜⬜⬛⬛⬛⬛⬛⬜⬜⬛⬛⬜⬛⬛
⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬛⬛⬛⬛⬛⬛⬜⬛⬜⬛⬛⬜⬜⬜⬛⬜⬛⬛⬛⬛⬛⬜
⬜⬜⬜⬜⬜⬛⬛⬜⬛⬛⬛⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬜⬜⬛⬛⬛⬛⬜⬜⬜⬛⬜
⬜⬜⬜⬜⬛⬛⬛⬛⬛⬜⬛⬜⬜⬜⬛⬛⬜⬜⬜⬜⬛⬜⬛⬛⬜⬜⬛⬜⬜⬛⬛⬜
⬜⬜⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬛⬛⬛⬜⬛⬛⬜⬛⬛⬛⬜
⬜⬜⬛⬛⬛⬜⬜⬛⬛⬜⬛⬜⬛⬛⬜⬛⬜⬜⬛⬛⬜⬜⬜⬛⬛⬛⬛⬛⬛⬜⬛⬜
⬜⬛⬛⬜⬛⬜⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬜⬛⬛⬛⬜⬜⬛⬛⬜⬜⬜⬜⬛⬛⬛⬜
⬛⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬛⬜⬛⬛⬛⬜⬜⬜⬛⬛⬜⬛⬜
⬛⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬛⬛⬛⬛⬛⬜⬛⬜⬜⬛⬛⬛⬛⬛⬛
⬛⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬜⬜⬜⬛⬛⬛⬜⬛⬛⬜⬜⬜⬜⬜
⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬛⬜⬜⬛⬛⬜⬛⬛⬛⬛⬜⬜⬜⬜⬛
⬛⬜⬜⬛⬛⬜⬛⬜⬜⬜⬜⬛⬛⬛⬜⬜⬛⬛⬜⬛⬛⬛⬛⬛⬜⬜⬛⬜⬜⬜⬛⬛
⬛⬜⬛⬛⬛⬛⬛⬜⬜⬜⬛⬛⬜⬛⬜⬛⬛⬛⬛⬛⬜⬜⬜⬛⬜⬛⬛⬜⬜⬛⬛⬜
⬛⬛⬛⬜⬜⬜⬛⬜⬜⬛⬛⬛⬛⬛⬛⬛⬜⬜⬜⬛⬜⬜⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛
⬜⬜⬛⬜⬜⬛⬛⬜⬛⬛⬜⬜⬜⬜⬜⬛⬜⬜⬛⬛⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜
⬜⬛⬛⬜⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜⬛⬛⬜⬛⬛⬛⬛⬛⬛⬜⬜⬛⬛⬜⬛⬜⬜⬜
⬛⬛⬛⬛⬛⬜⬜⬜⬜⬛⬜⬜⬜⬛⬛⬛⬛⬛⬜⬜⬜⬜⬛⬜⬛⬛⬛⬛⬛⬜⬜⬜
⬛⬜⬜⬜⬛⬜⬜⬜⬛⬛⬜⬜⬛⬛⬜⬜⬜⬛⬜⬜⬜⬛⬛⬛⬛⬜⬜⬜⬛⬜⬜⬛
⬛⬜⬜⬛⬛⬜⬜⬛⬛⬛⬜⬛⬛⬛⬜⬜⬛⬛⬜⬜⬛⬛⬜⬜⬛⬜⬜⬛⬛⬜⬛⬛
⬛⬜⬛⬛⬛⬜⬛⬛⬜⬛⬛⬛⬜⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬜⬛⬛⬛⬛⬛⬜
⬛⬛⬛⬜⬛⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬛⬛⬛⬜⬜⬜⬛⬛
⬜⬜⬛⬛⬛⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬛⬜⬛⬛⬛⬜⬜⬜⬜⬛⬜⬜⬛⬛⬜
⬜⬛⬛⬜⬛⬜⬜⬜⬛⬛⬜⬛⬜⬜⬛⬛⬜⬛⬛⬛⬜⬛⬜⬜⬜⬛⬛⬜⬛⬛⬛⬜
⬛⬛⬛⬛⬛⬜⬜⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛⬛⬜⬛⬛⬛⬜⬜⬛⬛⬛⬛⬛⬜⬛⬜
⬛⬜⬜⬜⬛⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬛⬜⬛⬜⬛⬛⬜⬜⬜⬛⬛⬛⬛
⬛⬜⬜⬛⬛⬛⬛⬛⬜⬜⬛⬛⬜⬛⬜⬜⬛⬛⬜⬛⬛⬛⬛⬛⬛⬜⬜⬛⬛⬜⬜⬜
⬛⬜⬛⬛⬜⬜⬜⬛⬜⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛⬛⬜⬜⬜⬜⬛⬜⬛⬛⬛⬜⬜⬛
Time for world_size = 8: 0.8093 seconds

Аргументы программы:

--rule-id - номер правила игры (по умолчанию 110)

--size - длина автомата в ширину (по умолчанию 32 и должна делиться нацело на количество процессоров)

--num-epochs - количество эпох работы автомата (по сути высота картинки) (по умолчанию 32)

--periodic - при указании делает периодические граничные условия

--show-progress - при указании выводит на экран картинку

В автомат имплементированы клетки-призраки, код работает на нескольких процессах.

Вывод автомата для rule_id = 30:

⬛⬜⬜⬛⬜⬛⬛⬜⬛⬜⬜⬜⬛⬜⬜⬛⬛⬛⬛⬛⬜⬜⬛⬛⬜⬜⬛⬛⬛⬜⬛⬜
⬛⬛⬛⬛⬜⬛⬜⬜⬛⬛⬜⬛⬛⬛⬛⬛⬜⬜⬜⬜⬛⬛⬛⬜⬛⬛⬛⬜⬜⬜⬛⬜
⬛⬜⬜⬜⬜⬛⬛⬛⬛⬜⬜⬛⬜⬜⬜⬜⬛⬜⬜⬛⬛⬜⬜⬜⬛⬜⬜⬛⬜⬛⬛⬜
⬛⬛⬜⬜⬛⬛⬜⬜⬜⬛⬛⬛⬛⬜⬜⬛⬛⬛⬛⬛⬜⬛⬜⬛⬛⬛⬛⬛⬜⬛⬜⬜
⬛⬜⬛⬛⬛⬜⬛⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬛⬛⬛
⬜⬜⬛⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬛⬜⬜⬛⬜⬜⬜⬛⬛⬜⬛⬛⬜⬜⬜⬛⬛⬜⬜
⬜⬛⬛⬛⬜⬛⬛⬜⬛⬜⬛⬜⬛⬜⬛⬛⬛⬛⬜⬛⬛⬜⬜⬛⬜⬛⬜⬛⬛⬜⬛⬜
⬛⬛⬜⬜⬜⬛⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬛⬛⬜⬛⬜⬛⬜⬜⬛⬛
⬜⬜⬛⬜⬛⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬜⬜⬛⬛⬜⬛⬜⬜⬜⬛⬜⬛⬛⬛⬛⬜
⬜⬛⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬜⬛⬛⬜⬛⬛⬜⬛⬜⬜⬜⬛
⬜⬛⬜⬜⬛⬛⬜⬜⬜⬛⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬛⬛⬜⬜⬛⬜⬜⬛⬛⬜⬛⬛
⬜⬛⬛⬛⬛⬜⬛⬜⬛⬛⬜⬜⬛⬜⬛⬜⬛⬛⬛⬛⬜⬜⬛⬛⬛⬛⬛⬛⬜⬜⬛⬜
⬛⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛⬜⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛⬛⬛⬛
⬜⬜⬛⬜⬜⬛⬛⬜⬛⬜⬛⬜⬜⬜⬛⬜⬛⬛⬜⬛⬛⬜⬜⬛⬜⬜⬜⬛⬛⬜⬜⬜
⬜⬛⬛⬛⬛⬛⬜⬜⬛⬜⬛⬛⬜⬛⬛⬜⬛⬜⬜⬛⬜⬛⬛⬛⬛⬜⬛⬛⬜⬛⬜⬜
⬛⬛⬜⬜⬜⬜⬛⬛⬛⬜⬛⬜⬜⬛⬜⬜⬛⬛⬛⬛⬜⬛⬜⬜⬜⬜⬛⬜⬜⬛⬛⬜
⬛⬜⬛⬜⬜⬛⬛⬜⬜⬜⬛⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜⬛⬛⬜⬜⬛⬛⬛⬛⬛⬜⬜
⬛⬜⬛⬛⬛⬛⬜⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜⬛⬛⬜⬛⬛⬛⬜⬜⬜⬜⬛⬛
⬜⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬜⬜⬜⬛⬛⬛⬛⬛⬜⬜⬛⬜⬜⬛⬜⬜⬛⬛⬜
⬜⬛⬛⬛⬜⬜⬛⬛⬜⬛⬜⬛⬛⬜⬜⬛⬛⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬛⬛⬛⬜⬛
⬜⬛⬜⬜⬛⬛⬛⬜⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛
⬜⬛⬛⬛⬛⬜⬜⬛⬛⬛⬜⬛⬜⬛⬜⬜⬜⬛⬛⬛⬛⬜⬛⬜⬜⬜⬜⬜⬜⬜⬛⬛
⬜⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬛⬜⬛⬛⬜⬛⬛⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬛⬛⬜
⬛⬛⬛⬜⬛⬛⬜⬜⬛⬜⬛⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬛⬛⬜⬛⬜⬜⬜⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬜⬛⬛⬛⬜⬛⬜⬜⬛⬛⬛⬛⬜⬛⬛⬛⬛⬜⬜⬛⬛⬜⬛⬛⬜⬜⬛
⬛⬜⬜⬛⬛⬜⬛⬜⬜⬜⬛⬛⬛⬛⬜⬜⬜⬜⬛⬜⬜⬜⬛⬛⬛⬜⬜⬛⬜⬛⬛⬛
⬜⬛⬛⬛⬜⬜⬛⬛⬜⬛⬛⬜⬜⬜⬛⬜⬜⬛⬛⬛⬜⬛⬛⬜⬜⬛⬛⬛⬜⬛⬜⬜
⬛⬛⬜⬜⬛⬛⬛⬜⬜⬛⬜⬛⬜⬛⬛⬛⬛⬛⬜⬜⬜⬛⬜⬛⬛⬛⬜⬜⬜⬛⬛⬜
⬛⬜⬛⬛⬛⬜⬜⬛⬛⬛⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬛⬜⬛⬜⬜⬛⬜⬛⬛⬜⬜
⬛⬜⬛⬜⬜⬛⬛⬛⬜⬜⬜⬛⬜⬛⬛⬜⬜⬛⬛⬜⬛⬜⬜⬛⬛⬛⬛⬜⬛⬜⬛⬛
⬜⬜⬛⬛⬛⬛⬜⬜⬛⬜⬛⬛⬜⬛⬜⬛⬛⬛⬜⬜⬛⬛⬛⬛⬜⬜⬜⬜⬛⬜⬛⬜
⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬛⬛⬛⬜⬜⬜⬛⬜⬜⬛⬛⬜⬛⬛
⬜⬛⬜⬛⬜⬛⬛⬜⬜⬜⬛⬛⬛⬛⬜⬛⬛⬛⬛⬜⬜⬛⬜⬛⬛⬛⬛⬛⬜⬜⬛⬜
Time for world_size = 8: 0.7389 seconds

Вывод автомата для rule_id = 184:

⬜⬛⬜⬛⬛⬛⬜⬛⬜⬜⬛⬜⬛⬜⬛⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜
⬜⬜⬛⬛⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬛
⬛⬜⬛⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜
⬜⬛⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛
⬛⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜
⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬛
⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛
⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜
⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜
⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜
⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜
⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛
⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜
⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛
⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜
⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜
⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛
⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜
⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛
⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜
⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛
⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜
⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛
⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜
⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛
⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜
⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛
⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜
⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛
⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜
⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛
⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛⬜
⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬜⬛⬜⬛⬜⬛
Time for world_size = 8: 0.8143 seconds

Вывод автомата для rule_id = 54:

⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬜⬛⬜⬜⬜⬛⬜⬜⬛⬜⬛
⬛⬛⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛⬛⬛⬛
⬜⬜⬜⬛⬜⬜⬜⬜⬛⬛⬛⬛⬜⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬛⬛⬛⬜⬜⬛⬜⬜⬜⬜⬛⬜⬛⬛⬛⬛⬛⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬜
⬜⬛⬜⬜⬜⬛⬛⬛⬛⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬜⬜
⬛⬛⬛⬜⬛⬜⬜⬜⬜⬛⬛⬜⬜⬜⬛⬜⬜⬜⬛⬛⬛⬛⬛⬛⬜⬛⬛⬛⬜⬜⬜⬜
⬜⬜⬜⬛⬛⬛⬜⬜⬛⬜⬜⬛⬜⬛⬛⬛⬜⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬛
⬛⬜⬛⬜⬜⬜⬛⬛⬛⬛⬛⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬛⬛⬛⬜⬛⬛⬛⬛⬛
⬜⬛⬛⬛⬜⬛⬜⬜⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜⬜⬛⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬜⬜
⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛⬛⬛⬜⬛⬛⬛⬜⬜⬜⬜
⬛⬛⬜⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬛
⬜⬜⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬛⬛⬛⬜⬛⬛⬛⬛⬜
⬜⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬛⬜⬜⬜⬛⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬜⬛
⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛⬛⬛⬜⬛⬛⬛⬜⬜⬛⬛
⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬛⬛⬜⬜
⬜⬜⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬛⬛⬛⬜⬛⬜⬜⬛⬜
⬜⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬛⬜⬜⬜⬛⬜⬜⬛⬜⬜⬜⬛⬛⬛⬛⬛⬛
⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛⬛⬛⬜⬛⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬛
⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬛⬛
⬜⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬛⬜⬜⬜⬛⬜⬜⬛⬛⬛⬜⬛⬛⬛⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛⬜⬜⬜⬛⬜⬜⬜⬜⬛⬜
⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛⬜⬛⬛⬛⬜⬜⬛⬛⬛
⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬜⬜⬜
⬛⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬛⬜⬜⬜⬛⬛⬜⬜⬜⬛⬜⬛⬜⬜⬛⬜⬛
⬜⬜⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬛⬛⬛⬛⬛⬜⬛⬜⬜⬛⬜⬛⬛⬛⬛⬛⬛⬛⬛⬜
⬜⬛⬛⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬛
⬛⬜⬜⬜⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬛⬛
⬜⬛⬜⬛⬛⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬛⬛⬛⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬛⬜⬜
⬛⬛⬛⬜⬜⬜⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬜⬜⬛⬜⬜⬛⬜⬜⬜⬛⬜⬜⬛⬛⬛⬜
⬜⬜⬜⬛⬜⬛⬛⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬛⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛⬜⬜⬜⬛
⬛⬜⬛⬛⬛⬜⬜⬜⬛⬜⬛⬛⬛⬜⬛⬛⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛⬜⬛⬛
⬜⬛⬜⬜⬜⬛⬜⬛⬛⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬜⬛⬛⬛⬜⬜⬛⬛⬛⬜⬜
Time for world_size = 8: 0.7173 seconds

Вывод автомата для rule_id = 73:

⬜⬜⬛⬜⬜⬜⬜⬛⬜⬛⬛⬛⬜⬛⬜⬛⬛⬜⬜⬛⬛⬛⬜⬜⬛⬜⬜⬛⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬛⬜⬜⬜⬛⬜⬛⬜⬜⬜⬛⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛
⬜⬜⬛⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬜⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬛⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛
⬜⬜⬛⬜⬛⬛⬜⬛⬛⬛⬛⬛⬛⬛⬜⬛⬛⬜⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬛⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛
⬜⬜⬛⬜⬛⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬛⬜⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬜⬛⬛⬛⬛⬛⬛⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛
⬜⬜⬛⬜⬛⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬛⬜⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛
⬜⬜⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬛⬜⬛⬛⬛⬛⬛⬛⬛⬜⬛⬛⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛
⬜⬜⬛⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬜⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬛⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛
⬜⬜⬛⬜⬛⬛⬜⬛⬛⬛⬛⬛⬛⬛⬜⬛⬛⬜⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬛⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛
⬜⬜⬛⬜⬛⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬛⬜⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬜⬛⬛⬛⬛⬛⬛⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛
⬜⬜⬛⬜⬛⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬛⬜⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛
⬜⬜⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛
⬜⬜⬜⬜⬛⬛⬜⬛⬛⬛⬛⬛⬛⬛⬜⬛⬛⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜
⬛⬛⬛⬜⬛⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛
Time for world_size = 8: 1.4379 seconds

Проанализировать скорость работы программы от кол-ва процессов можно с помощью команды:

chmod +x time.sh
./time.sh 6

Вывод скрипта:

Time for world_size = 1: 39.9391 seconds
Time for world_size = 2: 44.5940 seconds
Time for world_size = 3: 44.4641 seconds
Time for world_size = 4: 22.2608 seconds
Time for world_size = 5: 19.2947 seconds
Time for world_size = 6: 17.1178 seconds

Можно заметить, что в начале при увеличении world_size скорость слегка проседала (возможно это из-за времени пересылки данных между процессорами), но при дальнейшем увеличении параметра программа ускоряется в разы.