ВВЕДЕНИЕ 3
ГЛАВА 1 ОБЗОР И АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ 5
1.1. Исследование существующих методов сортировки данных и их
классификация 5
1.2. Термин «Большие данные» 21
1.3. Технологии параллельного программирования 24
1.3.1.Основы технологии OpenMP 26
1.3.2. Основы технологи MPI 31
1.4. Сравнительный анализ сортировки данных 33
ГЛАВА 2 ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 42
2.1. Проектирование алгоритмов сортировки 42
2.2. Реализация алгоритма быстрой сортировки 45
2.3 Реализация алгоритма сортировки слиянием 50
ГЛАВА 3 ВЫЧИСЛИТЕЛЬНЫЙ ЭКСПЕРИМЕНТ 52
3.1. Быстрая сортировка данных 52
3.2. Сортировка слиянием 54
ЗАКЛЮЧЕНИЕ 57
ПРИЛОЖЕНИЯ
В настоящее время компьютерные системы имеют огромны вычислительные возможности. Эти системы моментально могут выполнить объемы вычислений, которые одному человеку потребовалось бы очень много времени. В связи с возрастанием производительности компьютерной техники, повышаются сложности решаемых задач, расширяются круги исследуемых проблем.
Алгоритмы сортировок — одна из самых популярных тем в программировании. Однако ее обсуждение обычно сводится к тому, что быстрее сортировки Хоара (или, как ее называют, быстрой сортировки) еще не придумано. Но в современном мире требования к точности и скорости решения таких задач постоянно возрастают.
Алгоритмы сортировки данных широко обсуждаю в литературе. Вычислительная трудоемкость процедуры упорядочивания является достаточно высокой, поэтому с каждым годом появляется необходимость все более усовершенствовать этот процесс. Особенно остро становится эта проблема при использовании Big Data или Большие Данные. Это понятие уже давно у всех на слуху. Но не каждый точно знает, что же представляет собой это понятие.
Появление «больших данных» и высокопроизводительных вычислений позволяют затрагивать тему повышения эффективности работы алгоритмов и делает тему магистратской работы актуальной.
Есть много тем для решения данной проблемы, которые еще не полностью изучены, но имеются уже другие подходы к разработке алгоритмов, например, параллельное программирование.
В данной магистерской диссертации будут изучаться различные алгоритмы сортировки данных. Излагаются как общие принципы, применяемые при распараллеливании, так и конкретные алгоритмы.
Были поставлены следующие конкретные цели: разработка и исследование алгоритмов сортировки данных большого размера с использованием параллельных технологий.
Для достижения поставленной цели решаются следующие задачи:
- изучение и исследование существующих методов сортировки данных;
- изучение и термина «BIG DATA»;
- изучение параллельных технологий;
- сравнительный анализ существующих алгоритмов сортировки данных для больших данных;
- разработка последовательного и параллельного алгоритмов сортировки данных;
-оптимизация алгоритмов сортировки для данных большого объема.
В ходе прохождения исследовательской работы была достигнута поставленная цель: исследование и реализация алгоритмов сортировки данных большого объема с использованием параллельных технологий.
При этом были решены следующие задачи:
- изучение и исследование существующих методов сортировки данных;
- изучение и термина «BIG DATA»;
- изучение параллельных технологий;
- сравнительный анализ существующих алгоритмов сортировки данных для больших данных;
- разработка последовательного и параллельного алгоритмов сортировки данных;
-оптимизация алгоритмов сортировки для данных большого объема.
Программы, надлежащее качество проектирования которых позволяет воспользоваться преимуществами параллелизма, могут выполняться быстрее, чем их последовательные эквиваленты, что повышает их рыночную стоимость. Иногда скорость может спасти жизнь. В таких случаях быстрее означает лучше.
Результаты вычислительных экспериментов показали высокую перспективность использования параллельных технологий для выполнения алгоритмов при больших размерностях массива.
1. Knuth, D. E. (1997). The Art of Computer Programming. Volume 3: Sorting and Searching, second edition. - Reading, MA: Addison-Wesley
2. Viktor Mayer-Schonberger. BIG DATA/ Viktor Mayer-Schonberger, Kenneth Cukier:, 2014 - 240с
3. Афанасьев К.Е. Многопроцессорные вычислительные системы и параллельное программирование / Афанасьев К.Е. - Кемерово: Кузбассвузиздат, 2003 - 268с
4. Антонов А.С. Технологии параллельного программирования MPI и OpenMP / Антонов А.С. - Москва: Издательство МГУ, 2012- 344 с.
5. Бобровский А.Н. Практическое программирование на C++ / Бобровский
А.Н. - СПб.: БХВ-Петербург, 2012. - 496 с.
6. Богачев К. Основы параллельного программирования / Богачев К - М.:БИНОМ. Лаборатория заданий, 2003,-342с.
7. Воеводин В.В. Параллельные вычисления / Воеводин В.В. - СПб.: БХВ- Петербург, 2002- 608 с.
8. Вирт Н. Алгоритмы и структуры данных / Вирт Н. - ИздательсвоМир, 1989, 360 стр.
9. Гергель В.П. Современные языки и технологии параллельного программирования / Гергель В.П. - Издательство Московского Университета,
2012. - 408 с.
10. Грегори Р. Э. Основы многопоточного, параллельного и распределенного программирования / Грегори Р. Э. - Москва, Изд.: Вильямс, 2003. — 512 с.
11. Есаулов А.О. Параллельные вычисления на многопроцессорных
вычислительных системах / Есаулов А.О, Старченко А.В - Томск: ТГУ, 2002 - 120
12. Деменев А.Г Параллельные и анализ / Кормен Т., Лейзерсон Ч., Ривест Р. - Москва: МЦНТО, 1999 - 863с
15. Касперски К. Техника оптимизации программ. Эффективное использование памяти. / Касперски К. - Спб.: БХВ-Петербург, 2003. - 464с
16. Кнут Д. Искусство программирования для ЭВМ/ Кнут Д. - Москва, изд.: Издательский дом "Вильямс", 2007 - 160c
17. Лабутина А.А. Учебный курс "Введение в методы параллельного программирования" / Лабутина А.А. - ННГУ, Нижний Новгород, 2007, 42 с.
18. Малышкин В.Э. Параллельное программирование мультикомпьютеров / Малышкин В.Э., Корнеев В.Д. - Изд-во НГТУ, 2011.
19. Немнюгин С.А. Параллельное программирование для многопроцессорных вычислительных систем / Немнюгин С.А., Стесик О.Л. - БХВ-Петербург, 2002 - 400 с.
20. Пышкин Е. В. Структуры данных и алгоритмы: реализация на С/С++ / Пышкин Е. В. - СПб.: ФТК СПБГПУ, 2009.- 200 с
21. Роберт Седжвик. Фундаментальные алгоритмы на C. Структуры данных / Роберт Седжвик - Санкт-Петербург, СПб.: ДиаСофтЮП, 2003, 672 с.
22. Скиена С. Алгоритмы. Руководство по разработке / Скиена С. — 2-е изд.,СПб.: БХВ-Петербург, 2011. — 720 с.
23. Якобовский М.В. Последовательности псевдослучайных чисел для многопроцессорных приложений / Якобовский М.В. - 2008-480с
24. Алгоритмы. Построение и анализ / Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест и др. - Москва: Изд-во МЦНМО, 2016 - 1328с
25. Анализ эффективности алгоритмов / [Электронный ресурс] / Режим доступа: https://www.slideshare.net/mkurnosov/dsa-spring2015lec1
26. Блог программиста / [Электронный ресурс] / Режим доступа:https://pro- prof.com/archives/1660
27. Большие данные (Big Data) / [Электронный ресурс] / Режим доступа: http: //www.tadviser.ru/index.php/Статья :Большие_данные_(Big_Data)
28. Википедия — свободная энциклопедия / [Электронный ресурс] / Режим доступа:https://en.wikipedia.Org/wiki/Sorting_algorithm#Comparison_of_algorithms
29. Википедия — свободная энциклопедия / [Электронный ресурс] / Режим доступа:https: //ru.wikipedia.org/wiki/Алгоритм_сортировки
30. Википедия — свободная энциклопедия / [Электронный ресурс] / Режим доступа: https: //ru.wikipedia.org/wiki/Большие_данные
31. Введение в технологии параллельного программирования (OpenMP) /
[Электронный ресурс] / Режим доступа:
http://www.intuit.ru/studies/courses/4447/983/lecture/14925
32. Интуит - Алгоритмы сортировки массивов/ [Электронный ресурс] / Режим доступа: /http://www.intuit.ru/studies/courses/648/504/lecture/11473
33. Интуит. Лекция по теме «Параллельные методы сортировки» /
[Электронный ресурс] / Режим доступа:
http://www.intuit.ru/studies/courses/1156/190/lecture/4958
34. Параллельные алгоритмы сортировки больших объемов данных/
[Электронный ресурс] / Режим доступа:
http://lira.imamod.ru/FondProgramm/Sort/ParallelSort.pdf
35. Сортировка массива / [Электронный ресурс] / Режим доступа:
http://edunow.su/site/content/algorithms/sortirovka_massiva
36. Сортировка данных / [Электронный ресурс] / Режим доступа:
http: //www.math.csu.ru/~rusear/DipKurs/ParMetSort.html
37. Сортировка целых чисел при нехватке памяти / [Электронный ресурс] / Режим доступа: https://habrahabr.ru/post/266557/
38. Что такое большие данные / [Электронный ресурс] / Режим доступа: https: //habrahabr.ru/post/305738/
39. Что такое Big Data? / [Электронный ресурс] / Режим доступа: https://postnauka.ru/faq/46974
40. Supercomputer Software Department/ [Электронный ресурс] / Режим доступа: ssd.sscc.ru/ru/content/параллельные-алгоритмы-сортировки