Изучение возможностей массивно-параллельных вычислений в применении к задачам математической физики

Задача о малых колебаниях. Вычисление коэффициентов с помощью быстрого преобразования Фурье. Дискретный подход к вычислению коэффициентов. Вычисление методом Лежандра-Гаусса. Расчет узлов и весовых коэффициентов. Массивно-параллельный расчёт амплитуд.

Рубрика Математика
Вид курсовая работа
Язык русский
Дата добавления 20.07.2015
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Далее предлагается описывать положение струны точками и рассчитывать их отклонения от положения равновесия в каждый момент времени, делая это с помощью массивно-параллельных вычислений. Итак, разобьем всю длину струны точками, тогда, если известен номер точки, то её координату можно выразить как Создадим процедуру, которая подготавливает запуск функции-ядра и осуществляет его:

В качестве аргументов она будет принимать указатель на массив, куда будут записываться рассчитанные амплитуды, указатель на массив коэффициентов, число коэффициентов, число точек и время, для которого необходимо выполнить расчёт. Листинг функции:

И, наконец, сама функция-ядро:

Осуществляя эти действия для случая, когда коэффициенты были получены быстрым преобразованием Фурье, нужно помнить, что результат должен быть удвоен, так как при изложении метода в пункте для простоты была опущена двойка.

По аналогии рассмотрим двумерную ситуацию:

Так как для мембраны были получены два набора коэффициентов по обоим измерениям, будем хранить их в двух массивах типа Предполагая, что мембрана разбивается точками по -измерению и - по , сформируем функцию подготовки и запуска ядра:

Здесь, как и в одномерном случае, константа была положена равной единице. Примечательно, что для построения двумерного алгоритма удобнее пользоваться двумерными блоками и сеткой.

Соответствующая функция-ядро будет выглядеть так:

*

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

6.3 Оценка выигрыша во времени

Для того чтобы в полной мере оценить преимущества технологии CUDA перед вычислениями на центральном процессоре, было сделано несколько простых сравнений. Сначала эксперимент был проведен при участии программы для нахождения значения интеграла методом прямоугольников, описанной в первой главе. Была создана абсолютно аналогичная, но непараллельная программа, которая выполнялась исключительно на CPU. Оценка времени выполнения производилась с помощью функций-расширений CUDA для программы, написанной на CUDA C, и стандартными средствами языка С - для обыкновенной. Как показало сравнение для одного миллиона разбиений интервала интегрирования, время, затраченное на вычисления CPU, в десять раз превосходило время, затраченное при расчете видеокартой (точные значения времени для разного числа разбиений находятся в приложении A).

Далее тестированию подверглось быстрое преобразование Фурье. Для чистоты эксперимента при создании последовательного кода была использована библиотека FFTW, именно та, на основе которой была написана CUFFT, описанная в четвёртой главе. Для входного вектора длиной в восемь тысяч сто девяносто два элемента CUDA сработала в восемь раз быстрее.

При наблюдении за временем вычисления четырёх тысяч девяносто шести интегралов методом Лежандра-Гаусса параллельные расчеты оказались выгоднее в тридцать один раз.

И, наконец, расчёт отклонений от положения равновесия тысячи двадцати четырёх точек струны при использовании CUDA выполнился в двадцать пять раз быстрее.

ЗАКЛЮЧЕНИЕ

В данной работе на примере одной из задач математической физики - задаче о малых колебаниях - были рассмотрены возможности технологии CUDA.

В соответствии с разработанным алгоритмом, решение задачи о малых колебаниях производилось в два этапа: сначала параллельно рассчитывались входящие в решение коэффициенты, а затем уже для всех точек струны или мембраны одновременно находились амплитуды. В качестве методов вычисления коэффициентов были использованы быстрое преобразование Фурье и квадратурные формулы Лежандра-Гаусса.

Для осуществления быстрого преобразования Фурье было предложено использовать библиотеку CUFFT, которая может производить расчеты параллельно. Также были проделаны некоторые математические преобразования, которые позволили использовать результат применительно к решению задачи.

В качестве альтернативы быстрому преобразованию Фурье был составлен алгоритм вычисления коэффициентов с помощью квадратур Лежандра-Гаусса. Получены узлы и весовые коэффициенты квадратурной формулы, которые затем использовались при параллельном расчете интегралов.

Наконец, был написан код, позволяющий одновременное вычисление отклонений для множества точек, что и являлось главной задачей работы.

Для наглядности результат был визуализирован с помощью графической библиотеки, и колебательный процесс выводится на экран динамически.

По результатам сравнения времени вычисления на GPU и на CPU можно заключить, что с применением массивно-параллельных архитектур скорость вычислений возрастает в десятки раз, из чего следует, что технологии, подобные CUDA, позволят существенно облегчить процесс расчетов в физике, что, в свою очередь, при массовом использовании скажется на организации процесса научных исследований и наверняка снизит их стоимость.

Календарный график подготовки к защите ВКР

студента-выпускника гр. Ф - 71. Кальницкой Татьяны Борисовны.

На тему: Применение технологии CUDA в решении задач математической физики

Этапы работы

Выполнение

планируемый период

(дата контроля)

по факту

1.

Закрепление за руководителем, выдача задания на практику

09. 09. 2011

2.

Сдача отчета по научно-производственной практике

09. 01. 2012

3.

Утверждение темы ВКР, подготовка приказа

01. 03. 2012

4.

Составление плана ВКР, совместно с руководителем

09. 03. 2012

5.

Готовность к 1-му этапу контроля ВКР = выполнение 30 % (минимум: 20-30 стр.)

31. 03. 2012

1300

6.

Готовность ко 2-му этапу контроля ВКР = выполнение 70 % (минимум: 40-50 стр.)

30. 04. 2012

1300

7.

Готовность к 3-му этапу контроля ВКР = выполнение 95 % (минимум: 55-75 стр.)

19. 05. 2012

1300

8.

Утверждение и подписание разделов ВКР у консультантов

21 - 29. 05. 2012

9.

Утверждение и подписание ВКР у руководителя (получение отзыва)

= выполнение 100%

(минимум: 60-80 стр.)

24 - 31. 05. 2012

10.

Прохождение нормоконтроля, получение подписи Пагубко А.Б.

(выполнение ВКР - 100% )

24 - 31. 05. 2012

11.

Получение рецензии на ВКР

25 - 30. 05. 2012

12.

Предварительное заслушивание докладов по ВКР на кафедре

30 - 31. 05. 2012

13.

Получение подписи зав. кафедрой

30 - 31. 05. 2012

14.

Сдача готового комплекта ВКР секретарю ГАК

30.05 - 01. 06. 2012

15.

Защита ВКР

14 - 15. 06. 2012

Руководитель ВКР / / . Подпись Фамилия, инициалы Дата

cтудент-выпускник ВКР / / . Подпись Фамилия, инициалы Дата

ПРИЛОЖЕНИЕ А

Время вычислений на CPU и на GPU

Вычисление определённого интеграла методом прямоугольников

Количество разбиений

Время CPU, мс

Время GPU, мс

10000

0.280701

0.048032

50000

0.543859

0.106976

100000

1.105263

0.194208

500000

5.736842

0.876561

1000000

10.684210

1.757601

Быстрое преобразование Фурье

Длина входного вектора

Время CPU, мс

Время GPU, мс

8

0.027480

0.023072

32

0.035407

0.026144

128

0.096631

0.034561

512

0.380318

0.036384

2048

0.463209

0.050624

4096

0.864361

0.110688

8192

1.839091

0.228481

Расчет коэффициентов с помощью квадратур Лежандра-Гаусса

Кол-во коэффициентов

Время CPU, мс

Время GPU, мс

8

0.280713

0.226272

32

1.912281

0.233504

128

7.385964

0.299296

512

29.543859

0.972000

2048

121.526315

3.811360

4096

236.192982

7.621276

8192

474.561403

16.063521

Параллельный расчет амплитуд

Число точек

Время CPU, мс

Время GPU, мс

256

0.625792

15.714285

512

1.235568

31.142857

1024

2.457760

62.434581

2048

4.898496

118.139178

4096

9.777280

236.284141

8192

19.567682

464.154172

ПРИЛОЖЕНИЕ Б

Визуализация результата

Время, мс

0

2

4

6

8

Время, мс

0

2

4

6

8

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Беляев, Н. Введение в теорию приближённых вычислений. Конспект лекций / Н.Р. Беляев, И. В. Танатаров. - Харьков: ФТФ ХНУ им. В.Н. Каразина, 2011. - 215 с.

2. Боресков, А. Основы работы с технологией CUDA / А.В Боресков, А.А. Харламов. - М.: ДМК ПРЕСС, 2010. - 232 с.

3. Брейсуэлл, Р. Преобразование Фурье / Р.Н. Брейсуэлл // Scientific American. - 1989. - №8. - C. 48-56.

4. Владимиров, В. Уравнения математической физики / B.C. Владимиров. - 4-е изд. - М.: Наука, 1981. - 512 с.

5. Гергель, В. Теория и практика параллельных вычислений / В.П. Гергель. - М.: Бином. Лаборатория знаний, 2007. - 424 с.

6. Мухин, О. Моделирование систем. Конспект лекций / О.И. Мухин. - Пермь: РЦИ ПГТУ, 1999.

7. Хамахер, К. Организация ЭВМ / К. Хамахер, З. Враншевич, С. Заки. - 5-е изд. - СПб.: Питер, 2003. - 848 с.

8. Хорошевский, В. Архитектура вычислительных систем / В.Г. Хорошевский. - М.: МГТУ им. Баумана, 2008. - 520 с.

9. Kirk, D. Programming Massively Parallel Processors / D.B. Kirk, Wen-Mei Hwu. - USA: Elsevier Inc., 2010. - 255 c.

10. Sanders, J. CUDA by Example: an introduction to general-purpose GPU programming / J. Sanders, E. Kandrot. - USA: NVIDIA Corporation, 2011. - 311 c.

11. Whitehead, N. Precision & Performance: Floating Point and IEEE 754 Compliance for NVIDIA GPUs / N.Whitehead, A. Fit-Florea. - USA: NVIDIA Corporation, 2011. - 7 c.

12. CUDA C Best Practices Guide. - USA: NVIDIA Corporation, 2010. - 63 c.

13. CUDA C Programming Guide. - USA: NVIDIA Corporation, 2010. - 154 c.

14. CUDA Toolkit Performance Report. - USA: NVIDIA Corporation, 2011. - 17 c.

15. CUDA: Getting Started Guide. - USA: NVIDIA Corporation, 2012. - 15 c.

16. CUDA API Referenced Manual. - USA: NVIDIA Corporation, 2012. - 593 c.

17. CUDA Toolkit 4.1 CUFFT Library. - USA: NVIDIA Corporation, 2012. - 33 c.

18. CUDA C SDK 4.2 Release Notes. - USA: NVIDIA Corporation 2012.

19. Официальный сайт компании NVIDIA: http://www.nvidia.com/

20. Сайт разработчиков NVIDIA: http://www.developer.nvidia.com/

21. Использование видеокарт для вычислений, статьи разработчиков: http://www.gpgpu.ru/

Размещено на Allbest.ru


Подобные документы

  • Свойства дискретного преобразования Фурье, представленные в виде математических формул, которые наиболее адекватно соответствуют цифровой технике обработки информации. Алгоритм быстрого преобразования Фурье (БПФ), его значение для программирования.

    учебное пособие [223,6 K], добавлен 11.02.2014

  • Medsmooth и supsmooth, линейное сглаживание данных по трем, пяти и семи точкам. Численное дифференцирование исходных и сглаженных данных с помощью второй формулы Гаусса и Бесселя, первая и вторая производная. Вычисление коэффициентов обусловленности.

    лабораторная работа [205,8 K], добавлен 16.06.2014

  • Геометрический смысл решений неравенств, уравнений и их систем. Определение понятия двойственности с помощью преобразования Лежандра. Разбор примеров нахождения переменных или коэффициентов при неизвестных в целевой функции двойственной задачи.

    дипломная работа [2,6 M], добавлен 30.04.2011

  • Способы решения системы линейных алгебраических уравнений: по правилу Крамера, методом матричным и Жордана-Гаусса. Анализ решения задачи методом искусственного базиса. Характеристика основной матрицы, составленной из коэффициентов системы при переменных.

    контрольная работа [951,8 K], добавлен 16.02.2012

  • Условия разложения функций для тригонометрического ряда. Определение коэффициентов разложения с помощью ортогональности систем тригонометрических функций. Понятие периодического продолжения функции, заданной на отрезке. Ряд Фурье функции у=f(x).

    презентация [30,4 K], добавлен 18.09.2013

  • Аппроксимация функции y = f(x) линейной функцией y = a1 + a2x. Логарифмирование заданных значений. Расчет коэффициентов корреляции и детерминированности. Построение графика зависимости и линии тренда. Числовые характеристики коэффициентов уравнения.

    курсовая работа [954,7 K], добавлен 10.01.2015

  • Нахождение производных заданной функции. Частные производные первого и второго порядка. Вычисление неопределенных интегралов. Решение задачи комбинаторики. Расчет коэффициентов прямых материальных затрат с помощью межотраслевого балансового метода.

    контрольная работа [359,1 K], добавлен 15.04.2013

  • Изучение способов работы с файлами с помощью автоматического преобразования данных. Решение иррациональных уравнений методами хорд и половинного деления. Вычисление определенного интеграла. Решение систем линейных алгебраических уравнений. Ряды Фурье.

    курсовая работа [759,3 K], добавлен 16.08.2012

  • Разложение функции в ряд Фурье, поиск коэффициентов. Изменение порядка интегрирования, его предел. Расчет площади фигуры, ограниченной графиками функций, с помощью двойного интеграла, объема тела, ограниченного поверхностями, с помощью тройного интеграла.

    контрольная работа [111,8 K], добавлен 28.03.2014

  • Вычисление интеграла, выполнение интегрирования по частям. Применение метода неопределенных коэффициентов, приведение уравнения к системе. Введение вспомогательных функций в процессе поиска решения уравнения и вычисления интеграла, разделение переменных.

    контрольная работа [617,2 K], добавлен 08.07.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.