Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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 - семестровая работа к курсу "Параллельное программирование"
- Host: GitHub
- URL: https://github.com/aemarkov/gravsim2
- Owner: aemarkov
- Created: 2017-01-06T08:35:53.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2017-01-06T09:30:33.000Z (almost 8 years ago)
- Last Synced: 2024-04-28T06:23:32.098Z (8 months ago)
- Topics: mpi, n-body, openmp, simulation, study-project
- Language: C
- Homepage:
- Size: 45.4 MB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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 в градусах
```