Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/aemarkov/gravsim2

Расчет гравитационной задачи N-тел при помощи OpenMP и MPI - семестровая работа к курсу "Параллельное программирование"
https://github.com/aemarkov/gravsim2

mpi n-body openmp simulation study-project

Last synced: 16 days ago
JSON representation

Расчет гравитационной задачи N-тел при помощи OpenMP и MPI - семестровая работа к курсу "Параллельное программирование"

Awesome Lists containing this project

README

        

# GravSim2
Расчет гравитационной задачи N-тел при помощи OpenMP и MPI

## Описание
Эти программы позволяют моделировать движение какого-то количества притягивающихся частиц и визуализировать их движение.

Сюда входят следующие программы

- Моделирование при помощи OpenMP (рекомендуется для запуска на 1м вычислительном узле)
- Моделирование при помощи MPI
- Визуализатор

Программы моделирования записывают анимацию движения точек в файл, а затем при помощи визуализатора можно ее просмотреть. Визуализатор
позволяет перемещать и вращать камеру.

![](images/gravsim.jpg)

## Сборка
### Сборка под Windows
Для сборки используйте Visual Studio 2015, достаточно просто собрать решение. Для наибольшей производительности
(в несколько раз\десятков раз больше) используйте `Release`, а не `Debug`. Для сборки проекта с MPI необходимо, чтобы Microsoft MPI
был установлен на компьютер.

#### Запуск визуализатора
Из Visual Studio визуализатор запускается просто запуском проекта `Visualizer`, но чтобы иметь возможность запускать его отдельно,
в папку с `.exe` файлом визуализатора скопируйте следующие файлы и папки из папки `Visualizer`:

- glew32.dll
- SDL32.dll
- shaders

#### Бинарники
Вы можете скачать [релиз](https://github.com/Garrus007/GravSim2/releases) и просто запустить, скорее всего он работает.

### Сборка под Linux
Вам потребуется g++ (с поддержкой C++ 11, но на дворе 2017 год!)

#### Сборка OpenMP проекта
OpenMP отлично собирается и работает

```
make OpenMPGrav
```

#### Сборка MPI проекта
Я вроде бы сделал, чтобы он собирался, но MPI у меня нет. Я закинул проект на кластер ВолгГТУ, собрал там и возникло несколько ошибок.
Я их потом вроде исправил, но не факт, что все, а качать проект обратно лень. Но там ничего смертельного.

Для сборки с MPI вам потребуется какой-то поддерживающий это компилятор, например Intel C++ Compiler.
Исправьте `Makefile`, в случае с Intel C++ Compiler:

```Makefile
CC=mpiicc
```
Сборка

```
make MPIGrav
```

#### Сборка визуализатора
Никак. Он у меня зависит от Windows-версий SDL2 и glew32. Для сборки под Linux самостоятельно напишите Makefile и, возможно, что придется
исправить.

## Запуск
Оба проекта (OpenMP и MPI) используют одни и те же аргументы командной строки

```
-particles -steps -params -out [-nt ]
```

Если число потоков не указано, будет столько, сколько установит OpenMP (по-умолчанию - все доступные потоки).

Формат файла параметров

```






```
### Запуск визуализатора

```
Visualizer
```

Шаг по времени `Dt` не используется

### Настройки визуализатора
У визуализатора нет настроек, и чтобы настроить скорость воспроизведения и начальное положение камеры придется редактировать код.

#### Скорость воспроизведения
`Visualizer.cpp`

```cpp
unsigned int framesPerRenderFrame = 1; //Скорость воспроизведения
```

`framesPerRenderFram` указывает, раз в сколько кадров рендера будет загружаться новые координаты точек из файла

#### Начальное положение и поворот камеры
`Engine\Engine.cpp`

```cpp
camera.SetPosition(0, 300, 0); //X Y Z, ось X - влево, Y - вверх, Z - вперед,
camera.SetRotationAngles(0, -85, 0); //YAW PITCH ROLL в градусах
```