Примеры кодов с MPI, OpenMP и CUDA. Код собран при помощи CMake.
00-hello-world- Простой пример Hello World с использованием MPI01-send_recv- Примеры использования функций Send/Recv02-ping-pong- Пример обмена сообщениями между процессами (задача "Пинг-понг")03-probe-message-status- Примеры использования Probe и получения статуса сообщений04-isend-irecv- Примеры неблокирующих операций ISend/IRecv
00-hello-world- Базовый пример с использованием OpenMP01-parallel-for- Примеры параллельных циклов02-sections- Примеры использования секций в OpenMP03-master- Примеры с директивой master04-parralel-sum- Примеры параллельного суммирования05-matrix-multiplication- Умножение матриц с использованием OpenMP06-critical-sections- Примеры использования критических секций
00-how-to-run-task-on-cluster- Инструкция по запуску задач на кластере01-intro- Введение в CUDA02-device-specs-benchmarks- Спецификации устройства и бенчмарки03-memory-model- Модель памяти в CUDA03.5-matrix-multiplication-example- Пример умножения матриц на CUDA04-reduction- Примеры редукции05-scan- Примеры сканирования06-cublas- Примеры использования библиотеки cuBLAS07-pycuda- Примеры использования PyCUDAtasks- Упражнения для выполнения
MapReduce- Примеры MapReduce01-one-stage- Одностадийный MapReduce - задача WordCount02-two-stages- Двухстадийный MapReduce для получения Top-слов
Cassandra- Примеры работы с Apache CassandraHive- Примеры работы с Apache Hive
Проект использует CMake для сборки примеров MPI и OpenMP. По умолчанию сборка CUDA-примеров отключена.
Для сборки проекта:
mkdir build
cd build
cmake ..
makeПримеры HadoopStackExamples имеют отдельные системы сборки:
- MapReduce - сборка через Maven
- Cassandra - инфраструктура запускается через Docker
- Hive - сборка через Maven
Компиляция программ происходит при помощи компиляторов mpicc и mpic++. Подключение происходит при помощи команды
module add mpi/openmpi4-x86_64
После этого mpicc и mpic++ подгрузятся в $PATH
Для локального запуска можно использовать скрипт run_local.sh. Опция -np используется для указания количества процессов.
MPI локально может быть установлен для следующих ОС:
Ubuntu: sudo apt-get install openmpi-bin libopenmpi-dev
Mac OS: brew install open-mpi
sinfo- посмотреть информацию по нодам кластераsinfo -N -l- посмотреть информацию по каждой ноде кластераsqueue- посмотреть очередь задачsrun <command>- запустить команду на ноде кластераsbatch <script>- запустить скрипт на нодах кластера. Каждый скрипт должен начинаться с#!/bin/bash. Примеры запуска команд можно найти здесь. После этого должно высветиться сообщениеSubmitted batch job <job_id>, результаты работы попадают в лог-файлslurm-<job_id>.out.
- https://www.open-mpi.org/doc/current/ - мануал OpenMPI 4.0
- https://mpitutorial.com - хороший tutorial по MPI с примерами.