Магистерский диплом (ВКР) на тему Исследование возможностей современных технологий программирования для реализации метода конечных разностей во временной области.
-
Оформление работы
-
Список литературы по ГОСТу
-
Соответствие методическим рекомендациям
-
И еще 16 требований ГОСТа,которые мы проверили
Скачать эту работу всего за 2490 рублей
Ссылку для скачивания пришлем
на указанный адрес электронной почты
на обработку персональных данных
Содержание:
Введение 6
1 Анализ проблемы повышения эффективности решения задач вычислительной математики на многопроцессорных системах 8
1.1 Суть и особенности задачи параллельного программирования 8
1.2 Оценка путей распараллеливания задачи расчета численным методом конечных разностей 10
1.3 Анализ существующих технологий и средств для распараллеливания вычислительных задач 15
1.3.1 Стандартные средства операционных систем для создания многопоточных приложений (на примере ОС Windows) 15
1.3.2 Технологии программирования для проведения параллельных вычислений 19
1.3.3 Готовые программные продукты, предоставляющие возможности по распараллеливанию алгоритмов вычислительной математики 20
1.4 Выделение нерешенных частей проблемы и постановка задачи на разработку в рамках данной работы 20
2 Разработка проектных решений по реализации программы для вычислений методом конечных разностей путем параллельных вычислений 23
2.1 Описание конкретной прикладной задачи, подлежащей решению численным методом в данной работе 23
2.2 Особенности метода конечных разностей во временной области и разработка путей распараллеливания вычислений 27
2.3 Обоснование выбора инструментов для разработки 29
2.3.1 Выбор языка программирования 29
2.3.2 Выбор интегрированной среды разработки 33
2.3.3 Необходимость в использовании дополнительных библиотек 38
3 Практическая реализация программы для вычислений методом конечных разностей путем параллельных вычислений 40
3.1 Реализация интерфейса пользователя программы 40
3.2 Описание особенностей реализации исходного кода программы 43
3.3 Тестирование разработанного программного обеспечения 47
3.4 Сравнение результатов проведения расчетов решаемой задачи в различных режимах с помощью созданного программного обеспечения 57
3.5 Руководство пользователя разработанной программы 59
Заключение 60
Список использованных источников 62
Приложение А 65
Приложение Б. 71
Введение:
Задача расчетов электромагнитных волн является одной из важнейших физических задач, имеющих прямое прикладное значение. К соответствующим процессам следует отнести работу и радио, и телевидения, и сотовой связи, а в последние десятилетия – беспроводной цифровой связи. Также все процессы протекания электрического тока в цепях (а также в объеме диэлектриков конденсаторов) также являются ЭМ-процессами, т.е. почти любое современное устройство порождает некие электромагнитные процессы. Следовательно, задача моделирования распространения электромагнитного поля является в достаточной степени востребованной, однако качественное ее решение обычно сложно с вычислительной точки зрения (требует больших объемов математических вычислений). Такого рода задачи решаются с помощью распределенных (в частности по сети Интернет) или параллельных (на многопроцессорных ЭВМ) вычислений. В обоих случаях подразумевается применение численных методов решения уравнений Максвелла, в частности метода конечных разностей во временной области, являющегося частным случаем общего метода конечных разностей, адаптированным именно для нахождения компонентов электромагнитной волны. Таким образом, актуальной является проблема интенсификации вычислительной процедуры применения метода конечных разностей во временной области путем ее распараллеливания.
Целью работы является создание условий для уменьшения времени расчета модели распространения электромагнитного поля методом конечных разностей во временной области, чего можно добиться путем анализа алгоритмов распараллеливания указанной задачи и разработки соответствующих программных средств на разных языках (в частности Java и Python), которые следует сравнить.
Задачами работы являются:
1) Анализ условий и особенностей применения метода конечных разностей во временной области, в частности путей его разделения на отдельные операции и вычислительные процедуры, которые могут быть выполнены на различных исполнительных устройствах в параллельном режиме.
2) Разработка алгоритмических и проектных решений для возможности реализации параллельных вычислений по методу конечных разностей во временной области.
3) Программная реализация средства для моделирования распространения электромагнитных колебаний по методу конечных разностей во временной области при различных условиях протекания данного процесса.
Объектом исследования является процесс распараллеливания вычислений по методу конечных разностей во временной области для системы дифференциальных уравнений Максвелла.
Предметом исследования являются методы и средства для обеспечения возможности такого распараллеливания.
Практическое значение работы состоит в разработке работоспособного программного обеспечения, с помощью которого можно изучать особенности получаемых решений уравнений Максвелла при различных условиях проведения моделирования и написанных на разных языках программирования.
Методы, примененные в работе: численный метод решения дифференциальных уравнений конечных разностей во временной области, а также методы из отрасли технологий программирования.
Заключение:
Таким образом, в данной работе в целом проведено исследование возможностей современных технологий программирования для реализации метода конечных разностей во временной области.
В первую очередь проведен анализ условий и особенностей применения метода конечных разностей в целом и во временной области в частности. Рассмотрены пути проведения параллельных вычислений, в частности очерчены пути распараллеливания и основного для данной работы метода конечных разностей во временной области: его разделения на отдельные операции и вычислительные процедуры, которые могут быть выполнены на различных исполнительных устройствах в параллельном режиме.
Во второй главе проведен анализ и разработка решений, обуславливающих уменьшение времени расчета модели распространения электромагнитных колебаний в различных случаях с помощью метода конечных разностей во временной области. Для этого сначала в общих чертах предложено направление распараллеливания указанной задачи, а затем и более предметно указан алгоритм такого подхода.
Наконец, в третьей главе описана программная реализация средства для моделирования распространения электромагнитных колебаний по методу конечных разностей во временной области при различных условиях протекания данного процесса. Установлено, что программы написанные на языках Python и Java дают примерно одинаковую степень ускорения, и лишь небольшое преимущество Java вероятно обуславливается тем, что программа частично компилируется в байт-код, в отличие от полностью интерпретируемой программы на Python.
Проведено тестирование программ, которое показало соответствие разработок заданию на данную работу и их в целом правильное функционирование, что позволяет сделать положительный вывод о возможном практическом применении созданного программного обеспечения для дальнейших учебных (например, при изучении метода конечных разностей во временной области) и несложных исследовательских задач.
Фрагмент текста работы:
1 АНАЛИЗ ПРОБЛЕМЫ ПОВЫШЕНИЯ ЭФФЕКТИВНОСТИ РЕШЕНИЯ ЗАДАЧ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ НА МНОГОПРОЦЕССОРНЫХ СИСТЕМАХ
1.1 Суть и особенности задачи параллельного программирования
В современной науке существует огромное количество прикладных задач, требующих больших объемов вычислений. Это могут быть проблемы финансового и экономического прогнозирования и анализа, моделирования различных физических процессов и живых организмов, криптографические изыскания, и т.д.
Все эти задачи могут быть успешно запрограммированы для вычислений с помощью компьютеров, однако проблема состоит в том, что даже для современных персональных ЭВМ необходимые объемы вычислений лежат за гранью их возможностей. Действительно, если дать для выполнения обычному компьютеру программу, составленную для решения одной из таких задач, то на ее просчет могут уйти годы (и даже тысячелетия). Естественно такой подход неприемлем, поэтому необходимо искать какие-либо обходные пути.
Самый простой из них – задействовать для решения одной большой задачи N обычных компьютеров, распределяя вычисления между ними. Для этого следует разбить большую задачу на N подзадач, раздать задание для каждого из N компьютеров, а потом, когда все N задач будут решены, собрать воедино все N результатов. Такой подход соответствует парадигме распределенных вычислений.
Однако при таком подходе возрастают требования к программному обеспечению: ведь задачу необходимо распараллелить, «раздать» задания всем ЭВМ, а затем собрать воедино все результаты. Причем выполнять все это (кроме создания алгоритма, конечно) надо в автоматическом режиме.
Таким образом, от программиста требуется знание и понимание технологий распределенных вычислений, а также возможность реализации заданного алгоритма для распределенной системы.
Другим, более сложным подходом к решению указанных сложных задач, является использование специализированных ЭВМ – так называемых суперкомпьютеров (машин с параллельной архитектурой, многопроцессорных конфигураций, кластеров и т.д.). Такие системы обычно проектируются специально для решения одной указанной задачи, (хотя, в принципе, могут использоваться и для других целей). В таком случае обработка и расчет программы производятся в одном компьютере, но построенном по специальной архитектуре – обычно такие машин имеют много процессоров (от 16 до десятков тысяч). Смысл ускорения вычислений состоит в том, что их общий объем распределяется между всеми процессорами системы.
Такие «монстры» работают под управлением специализированного ПО, написанного специально для данной платформы под заказ. Поэтому написание таких приложений мало распространено, однако и в обычных ПК также возможна параллельная обработка данных.
Действительно, достаточно давно существуют двухпроцессорные конфигурации на базе процессоров Intel Pentium Xeon (а потом и процессоров AMD Athlon), которые довольно распространены. Кроме того, с внедрением технологии HyperThreading в процессорах Intel Pentium 4, параллельная обработка данных стала возможна и в однопроцессорных компьютерах (то есть в обычных ПК).
Такая «параллельность» на однопроцессорной машине стала возможна за счет одновременного использования различных блоков вычислений в самом процессоре. Таким образом, на таких процессорах существует вероятность более быстрого выполнения кода, написанного с распараллеливанием задачи, чем кода, решающего ту же задачу, но без распараллеливания.
Ну и наконец, наиболее доступная для рядовых пользователей технология многоядерности, представляющая собой фактическое объединение на одном устройстве (многоядерном процессоре) нескольких обычных процессоров в несколько усеченной конфигурации, стала на сегодняшний день истинно параллельным решением. Многоядерные системы позволяют выполнять в каждый конкретный момент времени одновременно несколько потоков команд (а не использовать параллелизм уровня микроопераций как в конвейерной обработке данных, или вытесняющую многозадачность как в ОС Windows), поэтому относятся к числу истинно параллельных систем. Вполне обоснованно многоядерные системы могут быть отнесены к классу MIMD по классификации Флинна (много одновременно выполняемых потоков команд, обрабатывающие много потоков данных).