Талтыкина (1235576), страница 6

Файл №1235576 Талтыкина (Численное решение граничных интегральных уравнений трехмерных стационарных задач дифракции с использованием мозаично-скелетонного метода) 6 страницаТалтыкина (1235576) страница 62020-10-07СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

Это программа сравнивает численное решение с известным аналитическим решениемзадачи и выводит погрешность. Если аналитическое решение неизвестно, точисленное решение задачи сравнивается с решением задачи на самой густойсетке.Кроме того существует программа расчёта погрешности плотности интегрального уравнения. При неизвестной плотности она также сравнивает её сплотностью на самой густой сетке.3.2Параллельная версияАлгоритм численного решения краевых задач и задачи дифракции реализован в виде программных комплексов для многопроцессорных вычислительных систем. Распараллеливанию подвергались наиболее трудоёмкие модули– мозаично-скелетонный метод и матрично-векторное умножение в GMRES.В [18] даны рекомендации по реализации версии метода для платформ с распределённой памятью.

В данной работе параллельная версия создана для систем с общей памятью при помощи технологии OpenMP 3.0. Выбор систем сразделяемой памятью обусловлен необходимостью общего доступа потоков кбольшому объёму данных. Такими данными является набор блоков, где каждый блок является структурой, содержащей несколько массивов. Передачатакого объёма данных между потоками при распределённой памяти занялабы слишком много времени. Преимуществом технологии OpenMP являетсяи простота в использовании.

Для распараллеливания программы достаточнодобавить клаузы OpenMP, и код будет исполняться в параллельном режиме. Количество потоков задаётся либо в самой программе, либо с помощьювнешней функции. При задании одного потока программа исполняется в последовательном режиме.Последовательные части программы исполняет мастер-поток, и привстречи параллельных секций он «пробуждает» дополнительные потоки, которые выполняют указанную секцию. В современной реализации OpenMP37«пробуждение» потоков происходит максимально быстро.Первые два этапа мозаично-скелетонного метода, построение дерева кластеров и списка блоков, выполняются последовательно. Два этих модуля исполняются быстро по сравнению со временем работы остальной программы.Параллельная секция начинается на третьем этапе при аппроксимации блоков матрицы.

Для создания такой секции используется OpenMP процедура$OMP PARALLEL. При этом каждый поток получает некоторое количествоблоков и обрабатывает их. В зависимости от того к какой зоне принадлежитблок, поток либо ищет малоранговое приближение, либо рассчитывает блокполностью. Разделение блоков по потокам организовано динамически, то естьв начальный момент времени потоки получают по одному блоку. Когда поток закончил работу с текущим блоком, он забирает из стека следующийблок. Проведённые эксперименты показали, что в таком случае потоки обрабатывают приблизительно одинаковое количество блоков и заканчиваютсвою работу почти одновременно.В OpenMP переменные в параллельных областях программы разделяютсяна два основных класса: private и shared.

При использовании для переменнойкласса private каждый поток имеет копию этой переменной в свой памяти. Если используется класс firstprivate, переменная инициализируются значениеморигинальной переменной; в случае назначения класса lastprivate последнийпоток по окончанию параллельной секции обновляет значение оригинальнойпеременной. Переменные типа shared доступны всем потокам, при работе сними могут понадобиться критические секции или атомарные операции.

Этиинструменты нужны, чтобы предотвратить одновременную запись в общиепеременные.В данном случае общими переменными являются список блоковvector_block, точки сетки xt, значения интегралов dinteg и значения направляющих косинусов cosnor. К классу fisrtprivate относятся текущий блок tmp,строки u и столбцы v матрицы или подматрица matr, вспомогательные массивы tmp_vector и u_1 и вспомогательные переменные eps1, s2 и com. Длясуммирования мозаичного ранга используется класс переменных reduction.При этом у каждого потока хранится локальная переменная mosaic_rank, ипо окончанию параллельной секции оригинальная переменная приравнивает38ся к сумме локальных переменных. При записи обработанного блока используется критическая секция.Матрично-векторное умножение в GMRES также сделано в параллельном режиме.

При этом каждый поток получает свой набор блоков, которыеон умножает на вектор. Как уже говорилось ранее, если блок относится к«ближней» зоне поток использует функции библиотеке Intel MKL, иначе используется функция block_vector. Блоки также распределяются по потокамдинамически. Для задач дифракции для перемножения четырёх матриц навектор существует четыре параллельные секции. Это сделано для того, чтобыне происходила одновременная запись в общие переменные.Тестирование параллельных версий проходило на кластере ВЦ ДВО РАН,правильность работы параллельного варианта определялась сравнением погрешностей решения задач с последовательным вариантом программы.3.3Компиляция программного обеспеченияДля компиляции программ используется скрипт Makefile, которые запускается подпрограммой make.

Итогом работы программы make является исполняемый файл density. В скрипте Makefile описаны опции компилятора,подключаемые модули и библиотеки. Рассмотрим скрипт запуска программы численного решения задачи дифракцииподробнее.FC_VERSION := 1 1 . 1PROJECT_DIR := /home/ t a l t y k i n a / h e l m h o l t zTOOLS_DIR := /home/ t a l t y k i n aFC_DIR := / opt / i n t e l / Compiler /${FC_VERSION}/072/MKL_DIR := / opt / i n t e l /mkl / 1 0 . 0 .

3 . 0 2 0 /FC := ${FC_DIR}/ b in / i n t e l 6 4 / i f o r tRM := rm − r fMOD_INCLUDE := −module ${PROJECT_DIR}/ modulesPROJ_INCLUDE := −I $ {PROJECT_DIR}/ s r c / i n c l u d eMKL_INCLUDE:= −I $ {MKL_DIR}/ i n c l u d eMKLPATH := −L${MKL_DIR}/ l i b / em64tMKL_LIB := ${MKLPATH}/ l i b m k l _ s o l v e r _ i l p 6 4 _ s e q u e n t i a l . a${MKLPATH}/ l i b m k l _ i n t e l _ i l p 6 4 . a39${MKLPATH}/ l i b m k l _ s e q u e n t i a l . a ${MKLPATH}/ l i b m k l _ c o r e . a${MKLPATH}/ l i b m k l _ b l a c s _ i n t e l m p i _ i l p 6 4 .

a −Wl,−−end−groupFFLAGS += −openmpFFLAGS += −O2FFLAGS += −r e a l −s i z e 64FFLAGS += −t r a c e b a c kFFLAGS += −check boundsPROJECT = d e n s i t yOBJS += . / g l o b a l s . oOBJS += . / c o n s t a n t s . oOBJS += . / u t i l s . oOBJS += . / i o . oOBJS += . / e r r o r . oOBJS += . / e l l . oOBJS += . / p o i n t . oOBJS += . / nvecc . oOBJS += . / f h l o c . oOBJS += . / f i n f i . oOBJS += . / v e c t o r . oOBJS += . / data . oOBJS += . / c r o s s . oOBJS += .

/ gmres . oOBJS += . / i n t e g . oOBJS += . / k e r n e l . oOBJS += . / r i g h t . oOBJS += . / d e v i s i o n . oOBJS += . / cube_tree . oOBJS += . / b l o c k . oOBJS += . / main . oa l l : ${PROJECT}${PROJECT} : ${OBJS}@echo ’ B u i l d i n g t a r g e t : $@ ’${FC} ${FFLAGS} −o "${PROJECT }" $ (OBJS) ${MKL_LIB}#${FC} ${FFLAGS} −o "${PROJECT}" $ (OBJS) ${MKL_LIB}@echo ’ F i n i s h e d b u i l d i n g t a r g e t : $@ ’40@echo ’ ’%.o : %. f 9 0@echo ’ B u i l d i n g f i l e : $<’${FC} ${FFLAGS} ${MKL_INCLUDE} ${PROJ_INCLUDE}−c −o "$@" "$<"@echo ’ F i n i s h e d b u i l d i n g : $ <’@echo ’ ’clean :−$ (RM) $ (OBJS) ${PROJECT} * .

mod−@echo ’ ’.PHONY: a l l c l e a n dependents.SECONDARY:Переменные с суффиксом DIR определяют директории, в которых находятся подключаемые библиотеки и сам компилятор. Файлы библиотек располагаются в переменных с суффиксом INCLUDE. Переменные FFLAGS содержат флаги компилятора.Данная программа использует следующие флаги: -openmp подключаетстандарт OpenMP; -O2 указывает, что компилятор оптимизирует программу;-real-size 64 определяет, что вещественные и комплексные переменные будутдлиной в 16 байт; -traceback выводит подробную информацию об ошибках;-check bounds проводит динамическую проверку выхода индекса за границымассива.Переменная с именем PROJECT определяет название исполняемого файла.

Подключаемые модули задаются переменными OBJS. Модуль globals.f90содержит объявление переменных, общих для всех модулей. Также там задаются такие параметры задач, как форма и размер включения, тип источника, параметры среды и включения. В модуле constants.f90 сохранены частоиспользуемые константы, например,14 .В модуль utils.f90 входят подпро-граммы перевода чисел в строковые величины и обратно. Процедуры длязаписи и чтения из файла таких данных как плотности, решения, точки сетки, интегралы, косинусы описаны в модуле io.f90.

Программы расчета погрешностей в соответствующих пространствах приведены в модуле errors.f90.41Модули point.f90 и ell.f90 раскидывают точки по поверхности включения. Направляющие косинусы рассчитываются в подпрограмме nvecc.f90. Программа fhloc.f90 необходима для введения локальной параметризации поверхностивключения. Модуль finfi.f90 содержит программу для вычисления функций,образующих разбиение единицы на поверхности включения, и их производных.

Характеристики

Список файлов ВКР

Численное решение граничных интегральных уравнений трехмерных стационарных задач дифракции с использованием мозаично-скелетонного метода
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6568
Авторов
на СтудИзбе
298
Средний доход
с одного платного файла
Обучение Подробнее