Изучение возможностей массивно-параллельных вычислений в применении к задачам математической физики
Задача о малых колебаниях. Вычисление коэффициентов с помощью быстрого преобразования Фурье. Дискретный подход к вычислению коэффициентов. Вычисление методом Лежандра-Гаусса. Расчет узлов и весовых коэффициентов. Массивно-параллельный расчёт амплитуд.
Рубрика | Математика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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.2014Medsmooth и 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