- •Организация системы доступа пользователей и разработка технических принципов запуска ресурсоемких приложений в распределенной вычислительной среде на основе технологии облачных вычислений
- •Диссертация
- •Глава 1. Классификация распределенных вычислительных сред 15
- •Глава 1. Классификация распределенных вычислительных сред 6
- •2Глава 2. Проблемы доступа пользователей и анализ продуктов для запуска приложений в распределенной вычислительной среде 14
- •Введение
- •Глава 1. Классификация распределенных вычислительных сред
- •Клиент-сервер
- •Метакомпьютинг
- •Основные понятия
- •Кластерная технология
- •Технологии Грид
- •Архитектура Грид
- •Общие задачи Грида
- •Технологии и системы облачных вычислений
- •Основные характеристики Облачных вычислений
- •Особенности облачных вычислений
- •Вызовы облачных вычислений
- •Глава 2. Проблемы доступа пользователей и анализ продуктов для запуска приложений в распределенной вычислительной среде
- •Анализ системы безопасности для распределенных вычислений
- •Системы авторизации Grid
- •Системы авторизации облачных вычислений
- •Анализ Облачных платформ для эффективного построения облачной вычислительной среды
- •Облачная платформа ( eucalyptus)
- •Облачная платформа (OpenNebula )
- •Облачная платформа (Abicloud )
- •Облачная платформа (Nimbus )
- •Анализ безопасности программной интерфейса api для управления ресурсами и сервисами Облачных вычислений
- •Исследование производительности метакомпьютера с единым образом операционной системы
- •Исследование производительности pvm c и без миграции процессов mosix в гетерогенной среде
- •Исследование производительности mpi с и без миграции процессов mosix в виртуальной среде
- •Анализ продукты Globus Toolkit для организации системы доступа пользователей к распределенной вычислительной среде
- •Gridftp – для управления данными
- •Gram – для управления процессами
- •Разработка и исследование системы управления ресурсами Univa Grid Engine в многопроцессорных северах
- •Конфигурация Univa Grid Engine
- •Глава 3. Организация системы доступа пользователей и разработка технических принципов запуска ресурсоемких приложений
- •Разработка системы безопасности грида в систему облачных вычислений
- •Разработка системы управления облачными ресурсами
- •Программный интерфейс drmaa для интеграции программных продуктов
- •Мosix вычислительный кластер на основе технологии облачных вычислений
- •Запуск приложение в распределенной вычислительной среде на основе технологии облачных вычислений
- •Глава 4. Консолидация и интеграция программных комплексов
- •Интеграция mpich2 и uge для запуска параллельных приложений
- •Интеграция uge и Globus toolkit для запуска приложений через drmaa
- •Интеграция системы безопасности Грида в систему Облачных вычислений
- •Разработка программного обеспечения OpenFoam в распределенной вычислительной среде
- •Часть исходного кода программы
- •Заключение
- •Литература
Разработка программного обеспечения OpenFoam в распределенной вычислительной среде
Для иллюстрации возможностей разработанного подхода приведем решениедля сложного инженерного приложения – расчет задачи течения. Поскольку при решении уравнений динамики течений взаимодействие между параллельными процессами очень интенсивное, реализация таких задач вызов для любой системы распределенных вычислений.
Данный пакет будет установлен на диск с ПО, доступным для всех пользователей кластера. Он подмонтирован в папку /opt/. Итак, для установки OpenFOAM необходимо выполнить следующие шаги:
1) В окне терминала, добавить OpenFOAM в список местоположений в хранилище для apt, чтобы искать,
VERS=$(lsb_release -cs)
sudo sh -c "echo deb http://www.openfoam.org/download/ubuntu $VERS main > /etc/apt/sources.list.d/openfoam.list"
2) Обновить список пакетов APT для учета нового местоположения хранилища
sudo apt-get update
3) Установка OpenFOAM (211 в название относится к версии 2.1.1):
sudo apt-get install openfoam211
4) Установить Paraview
sudo apt-get install paraviewopenfoam3120
Для того, чтобы использовать установленный пакет OpenFOAM, надо выполнить следующие шаги
Открыть Bashrc файл в домашнем каталоге пользователя
gedit ~/.bashrc
В нижней части этого файла, добавить следующие строки
source /opt/openfoam211/etc/bashrc
Оттестировать приложения icoFoam, из пакета OpenFOAM,
icoFoam -help
" Usage " должно появиться сообщение, что установки и конфигурации пользователя завершены.
Для запуска последовательных расчетов необходимо выполнить следующие шаги:
Создать директорию проекта в $ HOME/OpenFOAM каталоге с именем <пользователь> -2.1.1 и создать каталог с именем, запустив в нем,
mkdir -p $FOAM_RUN
Скопировать папку примеры в OpenFOAM каталог. Если переменные среды OpenFOAM установлены правильно, то следующая команда приведет к результату:
cp -r $FOAM_TUTORIALS $FOAM_RUN
Для примера рассмотрим первый случай несжимаемого ламинарного потока в полости:
cd $FOAM_RUN/tutorials/incompressible/icoFoam/cavity
blockMesh
icoFoam
paraFoam
Файл system/decomposeParDict задает параметры для распараллеливания задачи:
• параметр numberOfSubdomains должен соответствовать числу параллельных процессов;
• параметр method задает метод для разбиения области;
• блок simpleCoeffs используется в случае метода «simple» («n (a b c)» указывает, как именно разбивать область (a * b * c = numberOfSubdomains)).
Директория 0 содержит начальные условия задачи, физические свойства переменных указаны в constant/transportProperties.
Мы запустим расчеты с ∆t=10-5. Я не стану приводить содержимое конфигурационных файлов, так как это заняло бы довольно много места, а также потому, что данный пример является одним из стандартных примеров.
Перед запуском расчетов необходимо подготовить данные. Для этого переходим в папку с задачей и выполняем:
blockMesh
Данная команда создаст сетку, для контроля можно выполнить:
checkMesh
Теперь можно запускать собственно расчеты. Для расчетов используется программа (solver) pisoFoam из пакета OpenFOAM:
pisoFoam
Наши вычисления завершились без ошибок. После этого можно запускать программу для визуализации ParaView с помощью скрипта paraFoam (результат показан на рисунке).
paraFoam
Для запуска параллельных расчетов необходимо выполнить следующие шаги:
Вначале выполняем теже действия, что и для последовательных расчетов:
blockMesh
checkMesh
Теперь нужно провести декомпозицию задачи. Для этого нам нужно создать файл decomposeParDict в папке system нашего примера, в котором будут указаны параметры распараллеливания задачи. Его примерное содержимое:
numberOfSubdomains 2;
method simple;
simpleCoeffs
{
n ( 2 1 1 );
delta 0.001;
}
Параметр «numberOfSubdomains» должен соответствовать числу параллельных потоков, которые мы будем запускать (он указывает число подзадач, на которое мы разбиваем нашу задачу). Параметр «method» определяет метод, с помощью которого будет произведено разбиение задачи. В конце мы определяем, как именно будет разделена наша задача (на 2 области по оси x в данном случае). Теперь запускаем программу decomposePar, которая и проведет разбиение:
decomposePar
Теперь можно запускать расчеты
qsub <скрипт>
Содержимое скрипта для запуска:
#!/bin/bash
~/ openfoam.sh <директория_с_данными> pisoFoam
После выполнения расчетов запускаем программу reconstrucPar:
reconstructPar
Теперь мы можем просмотреть результаты при помощи ParaView (paraFoam – скрипт OpenFOAM, подготавливающий данные для ParaView и запускающий данную программу):
paraFoam
Рисунок 4.2 - Просмотр результата в ParaView
Приведенный пример показывает, что даже очень сложные задачи с сильным взаимодействием между параллельными процессами удается достаточно эффективно решать с помощью облачных технологий.
