СОДЕРЖАНИЕ 3
ВЕДЕНИЕ 5
ГЛАВА 1. СИСТЕМЫ УСКОРЕНИЯ РАСЧЕТОВ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ 7
1.1 Применение численных методов при решении системы уравнений
Максвелла 7
1.2 Технологии GPGPU - программирования 10
1.3 NVIDIA CUDA 12
1.4 OpenCL 14
ГЛАВА 2. МЕТОД FDTD 17
2.1 Введение в алгоритм FDTD 17
2.2 Реализация базового алгоритма FDTD 22
2.3 Граничные условия 25
2.4 Простые граничные условия (ABC) 26
2.5 Граничные условия PML 29
ГЛАВА 3. РЕАЛИЗАЦИЯ МЕТОДА FDTD НА OPENCL 32
3.1 Написание Host - программы 32
3.2 Kernel - программа 40
3.3 Тестирование программы 43
Заключение 46
СПИСОК ЛИТЕРАТУРЫ 47
Приложение 1 49
Приложение 2 53
Приложение 3
В настоящее время существует большое количество задач, связанных с обработкой больших объемов информации. Они относятся к различным областям деятельности: экономические расчеты, моделирование физических законов, мультимедиа рендеринг и так далее. Для их выполнения требуется большое количество времени и вычислительных ресурсов. Одним из основных способов сократить время при решении подобных задач является метод параллелизма, когда одна большая задача разбивается на несколько подзадач, выполняющихся параллельно и независимо. Раньше такие ресурсы могли предоставить только большие кластеры в вычислительных центрах, однако, с развитием технологий, вычислительные ресурсы становились более доступными, появлялись новые способы создания высокопроизводительных вычислительных систем (НРС).
Увеличение тактовой частоты и степени интеграции аппаратных средств позволило создавать небольшие дешевые настольные системы. В настоящее время на персональном компьютере средней ценовой категории легко можно запустить и комфортно работать с серьезным пакетом программ для профессионального научного моделирования. В качестве вычислительного устройства для обработки данных может использоваться видеокарта. Графический процессор (GPU), в отличие от центрального процессора (CPU), изначально проектировался для обработки данных параллельно, так как его основная задача быстро визуализировать изображение на экране компьютера. Для этого GPU использует большое число потоковых процессоров, количество которых у производимых в настоящее время графических процессоров достигает нескольких сотен. Таким образом, GPU выгодно использовать для решения хорошо распараллеливаемых задач, однако он плохо справляется с потоками последовательных команд. CPU, наоборот, создан для выполнения команд по порядку. Процесс написания программ для GPU также отличается от программирования CPU ввиду архитектурных особенностей и организации работы с памятью. С появлением возможности полноценно программировать графический процессор стали появляться методы для выполнения на GPU неграфических вычислений. Эти методы нашли широкое применение в сфере физического моделирования, в частности в моделировании распространения электромагнитных волн. Это позволит выполнить обработку сигналов для обеспечения устойчивого соединения всех систем телекоммуникации таких, как Wi - Fi, Bluetooth, мобильный интернет, также актуальным будет разработка новых стандартов связи и оценка их применимости и безопасности в реальных условиях без создания прототипов.
В ходе выполнения работы были выполнены следующие задачи:
• изучен базовый алгоритм FDTD и граничные условия;
• изучена спецификацию OpenCL;
• освоены принципы работы планировщика OpenCL;
• написать Host - программу;
• написать Kernel.
Это позволило написать программу, используя технологию GPGPU - программирования. Данная технология позволила сократить время расчета алгоритма FDTD. Программа, написанная на OpenCL, практически в 60 раз быстрее чем аналогичная программа для процессора [Приложение З]. Время, затраченное видеокартой на выполнение алгоритма, составило 40 секунд. В то время как на центральном процессоре - 56 минут.