Введение 5
Конструкторская часть 6
1 Статистический анализ быстродействия программ 6
1.1 Технологии компиляторов 6
1.2 Сложность разработки компиляторов 7
1.3 Подходы к решению проблемы сложности эвристик ... 8
1.4 Итеративная компиляция 8
1.5 Машинное обучение 9
1.6 Коллективная оптимизация 9
1.7 Выводы 10
2 Методология моделирования, применяемая в системе Adaptor . 11
2.1 Статистические методы обработки информации 11
2.1.1 Регрессионный анализ 11
2.1.2 Перекрёстная проверка 13
2.2 Метод моделирования эффективности исполнения
программ Velocitas 14
2.3 Выводы 14
Технологическая часть 16
3 Программная реализация инструментария Adaptor 16
3.1 Выбор языка программирования 16
3.1.1 Рассмотрение альтернатив 16
3.1.2 Итоговое решение 17
3.2 Репозиторий исходных кодов экспериментальных
программ 17
3.2.1 Рассмотрение альтернатив 18
3.2.2 Итоговое решение 18
3.3 База данных экспериментов 18
3.3.1 Рассмотрение альтернатив 19
3.3.2 Итоговое решение 19
3.4 Установка инструментария Adaptorна компьютер
пользователя 20
3.5 Расширяемость инструментария Adaptor 20
3.6 Платформа для использования инструментария Adaptor21
3.7 Архитектура инструметария Adaptor 21
3.8 Эксперимент по оптимизации программы 22
3.8.1 Время исполнения программы 23
3.8.2 Калибровка времени исполнения программы . . 24
3.8.3 Интерактивное окружение проведения
экспериментов 25
3.9 Конвейер обработки данных в системе Orange 25
3.10 Выводы 39
Исследовательская часть 40
4 Оценка эффективности инструментария Adaptor 40
4.1 Проверка точности измерения времени 41
4.2 Сравнение компиляторов GCC и LLVM на тестовом
наборе Polybench 41
4.3 Моделирование и предсказание производительности
программы из набора Polybench на различном аппаратном обеспечении 46
4.3.1 Серия экспериментов 1 47
4.3.2 Серия экспериментов 2 49
4.3.3 Серия экспериментов 3 54
4.4 Выводы 57
Организационно-экономическая часть 58
5 Введение 58
6 Основные этапы проекта разработки нового изделия 58
7 Расчёт трудоёмкости разработки программного продукта .... 59
8 Календарный план-график проекта 63
9 Затраты на разработку программного продукта 63
9.1 Расчёт материальных затрат 64
9.1.1 Расчёт затрат на оборудование 64
9.2 Расчёт амортизационных отчислений 65
9.3 Расчёт заработной платы 65
9.4 Расчёт отчислений в социальные фонды 66
9.5 Прочие затраты 67
10 Определение цены программного продукта 67
11 Выводы по организационно-экономической части дипломного
проекта 68
Охрана труда и экология 69
12 Проектирование рабочего места оператора ПЭВМ 69
12.1 Требования к рабочим помещениям 69
12.2 Требования к освещению 69
12.3 Расчёт системы освещения в помещении 71
12.4 Требования к микроклимату 73
13 Расчёт системы вентиляции 73
13.1 Выбор вентилятора 75
13.2 Требования к размещению оборудования 78
13.3 Требования к мониторам 81
13.4 Требования по электробезопасности 83
14 Выводы 84
Список использованных источников
Приложение
Разработка современного математического обеспечения САПР — сложная задача, требующая больших вложений материальных и временных ресурсов. Зачастую для достижения оптимальности по таким критериям, как производительность, объём занимаемой памяти, и энергопотребление требуется ручная настройка компилятора — выбор вариантов тонких настроек оптимизации под определённую программно-аппаратную платформу с учётом особенностей решаемой задачи. Это плохо формализованная задача, которая часто решается разработчиками МО методом проб и ошибок. В результате этого оптимальность часто не достигается ни по одному из выбранных критериев.
Распространённой проблемой для исследователей и инженеров является то, что параметры компиляции подбираются под конкретный набор входных данных, на конкретной программно-аппаратной платформе [1,2]. При этом для набора данных, встречающегося в реальных задачах (а не используемого во время подбора оптимальных параметров), оптимальные параметры могут оказаться иными.
Для увеличения возможностей по тонкой оптимизации математического программного обеспечения для рабочих станций и суперкомпьютеров необходима формализация поисковой области. С помощью построения модели производительности программ возможно достичь лучшего понимания воздействия оптимизаций компилятора на интересующие разработчика критерии эффективности программы. Таким образом можно сделать поиск оптимальных настроек более направленным и локализованным, сокращая цикл разработки математического обеспечения, стоимость разработки и поддержки.
Цель — разработать систему сбора, систематизации, формализации данных о производительности компилируемых программ в зависимости от настроек компилятора и программно-аппаратной платформы, а также выполняющую функции поддержки базы знаний и обучения с целью моделирования и предсказания эффективности программ.
Примером критерия эффективности является производительность программы на данной программно-аппаратной платформе.
1. Predictive Runtime Code Scheduling for Heterogeneous Architectures / Victor J. Jimenez, Lluls Vilanova, Isaac Gelado et al. // Proceedings of the 4th International Conference on High Performance Embedded Architectures and Compilers. — HiPEAC ’09. — Berlin, Heidelberg : Springer-Verlag, 2009. — P. 19-33. —URL: http://dx.doi.org/10.1007/978-3-540-92990-1_4.
2. Finding representative sets of optimizations for adaptive multiversioning applications / Lianjie Luo, Yang Chen, Chengyong Wu et al. // International Workshop on Statistical and Machine learning approaches to ARchitectures and compilaTion. — Paphos, Chypre, 2009.— Январь. — URL: http://hal. inria.fr/inria-00436034.
3. Compilers: Principles, Techniques, and Tools (2nd Edition) / Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman. — Boston, MA, USA : Addison- Wesley Longman Publishing Co., Inc., 2006. — ISBN: 0321486811.
4. Muchnick Steven S., Gibbons Phillip B. Efficient instruction scheduling for a pipelined architecture // SIGPLAN Not. — 2004. — Апрель. — Vol. 39, no. 4. — P. 167-174.—URL: http://doi.acm.org/10.1145/989393.989413.
5. The Importance of Prepass Code Scheduling for Superscalar and Superpipelined Processors / Daniel M. Lavery, Pohua P. Chang, Scott A. Mahlke et al. // IEEE Trans. Comput. — 1995. —Март. — Vol. 44, no. 3. — P. 353-370. — URL: http://dx.doi.org/10.1109/12.372029.
6. Abraham Santosh G., Kathail Vinod, Deitrich Brian L. Meld scheduling: relaxing scheduling constraints across region boundaries // Proceedings of the 29th annual ACM/IEEE international symposium on Microarchitecture. — MICRO 29.— Washington, DC, USA : IEEE Computer Society, 1996.— P. 308-321.— URL: http://dl.acm.org/citation.cfm?id= 243846.243903.
7. Stephenson Mark W. Automating the construction of compiler heuristics using machine learning : Ph. D. thesis / Mark W. Stephenson. — Cambridge, MA, USA : Massachusetts Institute of Technology, 2006. — AAI0810106.
8. Meta optimization: improving compiler heuristics with machine learning / Mark Stephenson, Saman Amarasinghe, Martin Martin, Una-May O’Reilly // SIGPLAN Not. — 2003. —Май. — Vol. 38, no. 5.— P. 77-90.— URL: http: //doi.acm.org/10.1145/780822.781141.
9. Using Machine Learning to Focus Iterative Optimization / F. Agakov, E. Bonilla, J. Cavazos et al. // Proceedings of the International Symposium on Code Generation and Optimization. — CGO ’06.— Washington, DC, USA : IEEE Computer Society, 2006.— P. 295-305.— URL: http://dx.doi.org/10. 1109/CGO.2006.37.
10. Bodin F., Kisuki T., Knijnenburg P. M. W. et al. Iterative Compilation in a Non-Linear Optimisation Space. — 1998.
11. Rapidly Selecting Good Compiler Optimizations using Performance Counters / J. Cavazos, G. Fursin, F. Agakov et al. // ACM International Conference on Code Generation and Optimization (CGO’07).— San Jose, California, 2007. — Март. — P. 185-197.
12. ACME: adaptive compilation made efficient / Keith D. Cooper, Alexander Grosul, Timothy J. Harvey et al. // Proceedings of the 2005 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems. — LCTES ’05.— New York, NY, USA : ACM, 2005.— P. 69-77. — URL: http://doi.acm.org/10.1145/1065910.1065921.
13. A Feasibility Study in Iterative Compilation / Toru Kisuki, Peter M. W. Knijnenburg, Michael F. P. O’Boyle et al. // Proceedings of the Second International Symposium on High Performance Computing. — ISHPC ’99.— London, UK, UK : Springer-Verlag, 1999.— P. 121-132.— URL: http://dl.acm.org/citation.cfm?id=646347.690219.
14. Portable compiler optimisation across embedded programs and microarchitectures using machine learning / Christophe Dubach, Timothy M. Jones, Edwin V. Bonilla et al. // Proceedings of the 42nd Annual IEEE/ACM International Symposium on Microarchitecture. — MICRO 42. — New York, NY, USA : ACM, 2009.— P. 78-88.— URL: http://doi.acm.org/10.1145/1669112. 1669124.
15. Dubach Christophe, Jones Timothy M., O’Boyle Michael F.P. Exploring and predicting the architecture/optimising compiler co-design space // Proceedings of the 2008 international conference on Compilers, architectures and synthesis for embedded systems. — CASES ’08. — New York, NY, USA : ACM, 2008. — P. 31-40. —URL: http://doi.acm.org/10.1145/1450095.1450103.
16. Fursin Grigori. Collective Tuning Initiative: automating and accelerating development and optimization of computing systems // Proceedings of the GCC Developers’ Summit. — MICRO 42.— New York, NY, USA : ACM, 2009.— P. 78-88.— URL: http://doi.acm.org/10.1145/1669112.1669124.
17. The LLVM Compiler Infrastructure // http://llvm.org/.
18. Fursin G., O’Boyle M., Knijnenburg P. Evaluating Iterative Compilation // Languages and Compilers for Parallel Computing / Ed. by Bill Pugh, Chau- Wen Tseng. — Springer Berlin / Heidelberg, 2005. — Vol. 2481 of Lecture Notes in Computer Science. — P. 362-376.— 10.1007/11596110:24. URL: http:// dx.doi.org/10.1007/11596110:24.
19. М.Б.Лагутин. Наглядная математическая статистика : учебное пособие — 2-е изд., испр. — М.: БИНОМ. Лаборатория знаний, 2012.— 472 с. : ил.
20. Норман Дрейпер Гарри Смит. Прикладной регрессионный анализ — 3-е изд. — М.: «Диалектика», 2007.— 912 c.
21. Станислав Радченко. Методология регрессионного анализа: Монография. — К.: «Корнийчук», 2011.— 376 с.
22. Станислав Радченко. Устойчивые методы оценивания статистических моделей: Монография. — К.: ПП «Санспарель», 2005.— 504 с.
23. Перекрестная проверка. Статья в словаре BaseGroup Labs (электронный ресурс).— (Дата обращения: 17 марта 2013). URL: http://www. basegroup.ru/glossary/definitions/cross_validation/.
24. Variable importance (электронный ресурс). — (Дата обращения: 03 июня 2013). URL: http://caret.r-forge.r-project.org/varimp.html.
25. Grid Search: setting estimator parameters (электронный ресурс). — (Дата обращения: 19 марта 2013). URL: http://scikit-learn.org/0.13/ modules/grid_search.html.
26. Test-driven development (электронный ресурс). — Материал из Википедии - Свободной Энциклопедии. (Дата обращения: 03 января 2013). URL: http://en.wikipedia.org/wiki/Test-driven_development.
27. Python Programming Language (электронный ресурс).— Официальный веб-сайт. (Дата обращения: 03 января 2013). URL: http://www.python. org/.
28. TIOBE Programming Community Index for December 2012 (электронный
ресурс).— Официальный веб-сайт. (Дата обращения: 04 января 2013). URL: http://www.tiobe.com/index.php/content/paperinfo/tpci/
index.html.
29. PyPy (электронный ресурс). — Официальный веб-сайт. (Дата обращения: 03 января 2013). URL: http://pypy.org/.
30. Scientific Tools for Python (электронный ресурс).— Официальный веб¬сайт. (Дата обращения: 04 января 2013). URL: http://www.scipy.org/.
31. Matplotlib (электронный ресурс). — Официальный веб-сайт. (Дата обращения: 03 января 2013). URL: http://matplotlib.org/.
32. Orange. Open source data visualization and analysis for novice and experts (электронный ресурс). — (Дата обращения: 19 марта 2013). URL: http: //orange.biolab.si/.
33. scikit-learn: machine learning in Python (электронный ресурс). — (Дата обращения: 19 марта 2013). URL: http://scikit-learn.org/stable/.
34. Distributed revision control (электронный ресурс).— Материал из Википедии - Свободной Энциклопедии. (Дата обращения: 03 января 2013). URL: http://en.wikipedia.org/wiki/Distributed_revision_ control.
35. Github — Powerful collaboration, review, and code management for open source and private development projects (электронный ресурс). — Веб-сайт. (Дата обращения: 04 января 2013). URL: https://github.com/.
36. Bitbucket — Unlimited private repositories to collaborate on your code - Git or Mercurial (электронный ресурс). — Веб-сайт. (Дата обращения: 04 января 2013). URL: https://bitbucket.org/.
37. Analysis of Git and Mercurial (электронный ресурс).— Веб-сайт. (Дата обращения: 04 января 2013). URL: http://code.google.com/p/support/ wiki/DVCSAnalysis.
38. JSON (электронный ресурс). — Официальный веб-сайт. (Дата обращения: 04 января 2013). URL: http://www.json.org/.
39. Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vs Neo4j vs Hypertable vs ElasticSearch vs Accumulo vs VoltDB vs Scalaris comparison (электронный ресурс).— Статья. (Дата обращения: 04 января 2013). URL: http://kkovacs.eu/ cassandra-vs-mongodb-vs-couchdb-vs-redis.
40. MapReduce (электронный ресурс).— Материал из Википедии — свободной энциклопедии. (Дата обращения: 04 января 2013). URL: http: //ru.wikipedia.org/wiki/MapReduce.
41. CouchApp.org: Simple JavaScript Applications with CouchDB (электронный ресурс). — Официальный сайт. (Дата обращения: 04 января 2013). URL: http://couchapp.org/page/index.
42. GCC — Option Summary (электронный ресурс).— Официальный веб¬сайт. (Дата обращения: 04 января 2013). URL: http://gcc.gnu.org/ onlinedocs/gcc/Option-Summary.html.
43. Breecher Jerry. Operating Systems Scheduling (электронный ресурс).— Лекция №5 из курса Operating Systems. (Дата обращения: 04 января 2013). URL: http://web.cs.wpi.edu/~cs3013/c07/lectures/ Section05-Scheduling.pdf.
44. PolyBench/C the Polyhedral Benchmark suite (электронный ресурс). — Официальный сайт. (Дата обращения: 04 января 2013). URL: http:// www.cse.ohio-state.edu/~pouchet/software/polybench/.
45. IPython (электронный ресурс). — Официальный сайт. (Дата обращения: 04 января 2013). URL: http://ipython.org/.
46. Ю.Б.Сажин С.В.Самохин. Методическое пособие по выполнению организационно-экономической части дипломных проектов по разработке и использованию программных продуктов. — Москва : Издательство МГТУ, 2004.