Игра «Жизнь». Снова. На Этот Раз В 3D

За прошедшую неделю Хабр пополнился несколькими статьями об игре «Жизнь».

Что ж, тогда я поделюсь своей работой на эту тему.



Предисловие

Прошлым летом мне представилась возможность посетить летнюю школу по параллельному программированию, проводимую НГУ.

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

Я заинтересовался клеточными автоматами.

Моя первая ассоциация при словосочетании «клеточный автомат» — это именно «Жизнь».

Я понимал, что никому не будет интересно наблюдать за живущими на экране черными клетками.

А это слишком просто для такого проекта.

Необходимо было придумать что-то принципиально новое.

Я решил расширить диапазон своих мыслей и выйти за рамки двухмерного пространства.

Буквально.

Я подумал, а почему бы не сделать эту игру трехмерной? Ведь это гораздо интереснее!

ЭНажмите 1. Клеточный автомат.

Думаю, каждый здесь (или почти каждый) представляет себе клеточный автомат. Поэтому не будем углубляться в теорию, а сразу перейдем к практике.

Единственное, что отличало этот клеточный автомат от самого примитивного, это необходимость распараллеливания вычислений.

В будущем, правда, добавится еще кое-что, но не будем пока об этом.

Для наших целей клеточный автомат (далее КА) должен быть синхронным.

К счастью, даже при параллельной реализации алгоритма это не создает никаких неудобств.

При работе с OpenMP достаточно просто поместить в блок #pragma omp for {} цикл, вычисляющий значение CA. Что-то вроде этого

   

#pragma omp parallel shared(Temp, Space, Size) private(Num_of_nbr, x, y, z)

Теги: #жизнь #opengl #C++ #Параллельное программирование #клеточный автомат #C++ #Алгоритмы #Параллельное программирование
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.