Метод динамічної компіляції Python програм, що орієнтовані на обробку масивів

dc.contributor.advisorТерейковский, Ігор Анатолійович
dc.contributor.authorКривомаз, Максим Євгенович
dc.date.accessioned2018-06-01T11:15:20Z
dc.date.available2018-06-01T11:15:20Z
dc.date.issued2018-05
dc.description.abstractenRelevance of the topic. The Python programming language has become a popular platform for data analysis and scientific computing. Python translates the instructions of the program code into an intermediate representation, known as a bytecode, and then interprets this bytecode. Bytecode ensures portability of programs, because it is platform-independent format. However, because Python does not create binary machine code (for example, machine instructions for the Intel processor), some Python programs can run slower than their counterparts written in languages that are compiled into machine code, such as C. To solve the problem of low performance of the standard Python interpreter, mathematically intensive computations are usually carried over to library functions that are written in high-performance programming languages. If such a library does not exist for executing a certain algorithm, the programmer must accept low performance or switch to a low-level language for effective implementation of the task. Thus, the process of project development includes the stage of prototyping algorithms into low-level programming languages, and then the process of transferring partitions with low performance in a language such as Python into a low-level language takes place directly. This stage can take a lot of time, lead to errors and draws the attention of the developer from the initial task, so in this paper we propose a method of dynamical compiling of Python array-oriented programs, which, thanks to high-level optimization, determining the types of input data and taking advantage of parallel code execution significantly speeds up the execution time of programs that perform operations on arrays. The object of research is the method of dynamic compilation of Python programs, oriented to the processing of arrays. The subject of the study are methods and algorithms for the principles of translating and executing program code, optimizing the intermediate representation of code, and optimizing the compilation of programs oriented to array processing. The purpose and objectives of the study: to create a method for dynamic compilation of Python array oriented programs to solve the problem of low performance of mathematically intensive computations over arrays in Python and avoid prototyping algorithms to low-level languages and transfer sections with low performance to such languages. The proposed method will combine the convenience of using the Python language and ensure the speed of code execution in both effective programming languages. Perform experiments comparing the execution time of a number of algorithms on various hardware.uk
dc.description.abstractruАктуальность темы. Язык программирования Python стал популярной платформой для анализа данных и научных вычислений. Python транслирует инструкции програмного кода в промежуточное представление, известное как байт-код, и затем интерпретирует этот байт-код. Байт-код обеспечивает переносимость программ, поскольку это платформо-независимый формат. Однако из-за того, что Python не создает двоичный машинный код (например, машинные инструкции для процессора Intel), некоторые программы на языке Python могут работать медленнее своих аналогов, написанных на языках которые компилируются в машинный код, таких как С. Для решения проблемы низкой производительности стандартного интерпретатора языка Python, математически интенсивные вычисления, как правило, переносятся на библиотечные функции, которые написаны на высокопроизводительных языках программирования. Если такая библиотека для выполнения определенного алгоритма отсутствует, программисту приходится принять низкую производительность или перейти на язык низкого уровня для эффективной реализации поставленной задачи. Таким образом, в процесс разработки проекта входит этап прототипирования алгоритмов на языки программирования низкого уровня, а затем непосредственно происходит процесс переноса разделов с низкой производительностью в таком языке как Python, на язык низкого уровня. Этот этап может занимать много времени, приводить к появлению ошибок и отводит внимание разработчика от начальной задачи, поэтому в данной работе предложен метод динамической компиляции Python программ ориентированных на обработку массивов, который благодаря оптимизации высокого уровня, определению типов входных данных и использованию преимуществ параллельного выполнения кода оказывает существенное ускорение времени выполнения программ, которые выполняют операции над массивами. Объектом исследования является метод динамической компиляции Python программ, ориентированных на обработку массивов. Предметом исследования являются методы и алгоритмы принципов трансляции и выполнения программного кода, оптимизации промежуточного представления кода и оптимизации компиляции программ, ориентированных на обработку массивов. Цель и задачи исследования: создать метод динамической компиляции Python программ, ориентированных на обработку массивов, для решения проблемы низкой производительности математически интенсивных вычислений над массивами в языке Python и избежания прототипирования алгоритмов на языки низкого уровня и переноса разделов с низкой производительностью на такие языки. Предложенный метод позволит совместить удобство использования языка Python и обеспечит скорость выполнения кода как на эффективных языках программирования. Провести эксперименты сравнения времени выполнения ряда алгоритмов на различных аппаратных средствах.uk
dc.description.abstractukАктуальність теми. Мова програмування Python стала популярною платформою для аналізу даних і наукових обчислень. Python транслює інструкції вихідного програмного коду в проміжне представлення, відоме як байт-код, і потім інтерпретує цей байт-код. Байт-код забезпечує переносимість програм, оскільки це платформо-незалежний формат. Однак через те, що Python не створює двійковий машинний код (наприклад, машинні інструкції для мікропроцесора Intel), деякі програми на мові Python можуть працювати повільніше своїх аналогів, написаних на мовах що компілюються у машинний код, таких як С. Для вирішення проблеми низької продуктивності стандартного інтерпретатора мови Python, математично інтенсивні обчислення, як правило, переносяться на бібліотечні функції, які написані на високопродуктивних мовах програмування. Якщо така бібліотека для виконання певного алгоритму відсутня, програмісту доводиться прийняти низьку продуктивність або перейти на мову нижчого рівня для ефективної реалізації поставленої задачі. Таким чином, у процес розробки проекту входить етап прототипування алгоритмів на мови програмування нижчого рівня, а потім безпосередньо відбувається процес переносу розділів з низькою продуктивністю у такій мові як Python, на мову нижчого рівня. Цей етап може займати багато часу, призводити до появи помилок і відводить увагу розробника від початкової задачі, тому в даній роботі запропоновано метод динамічної компіляції Python програм орієнтованих на обробку масивів, який завдяки оптимизаціям високого рівня, визначенню типів вхідних даних та використанню переваг паралельного виконання коду надає значне прискорення часу виконання програм, які виконують операції над масивами. Об’єктом дослідження є метод динамічної компіляції Python програм, що орієнтовані на обробку масивів. Предметом дослідження є методи і алгоритми принципів трансляції та виконання програмного коду, оптимізації проміжного представлення програмного коду та оптимізації компіляції програм, що орієнтовані на обробку масивів. Мета і задачі дослідження: створити метод динамічної компіляції Python програм, що орієнтовані на обробку масивів, для вирішення проблеми низької продуктивності математично інтенсивних обчислень над масивами у мові Python та уникнення прототипування алгоритмів на мови нижчого рівня та переносу розділів з низькою продуктивністю на такі мови. Запропонований метод надасть можливість поєднати зручність використання мови Python та забезпечить швидкість виконання коду як на ефективних мовах програмування. Провести експерименти порівняння часу виконання ряду алгоритмів на різних апаратних засобах.uk
dc.format.page118 с.uk
dc.identifier.citationКривомаз, М. Є. Метод динамічної компіляції python програм, що орієнтовані на обробку масивів : магістерська дис. : 123 Комп‘ютерна інженерія («Системне програмування») / Кривомаз Максим Євгенович. – Київ, 2018. – 118 с.uk
dc.identifier.urihttps://ela.kpi.ua/handle/123456789/23172
dc.language.isoukuk
dc.publisher.placeКиївuk
dc.subjectдинамічна компіляціяuk
dc.subjectпаралелізм данихuk
dc.subjectмасивно-орієнтоване програмуванняuk
dc.subjectPythonuk
dc.subjectdynamic compilationuk
dc.subjectdata parallelismuk
dc.subjectmassively-oriented programminguk
dc.subjectPythonuk
dc.subjectдинамическая компиляцияuk
dc.subjectпараллелизм данныхuk
dc.subjectмассивно-ориентированное программированиеuk
dc.subjectPythonuk
dc.titleМетод динамічної компіляції Python програм, що орієнтовані на обробку масивівuk
dc.typeMaster Thesisuk

Файли

Контейнер файлів
Зараз показуємо 1 - 1 з 1
Вантажиться...
Ескіз
Назва:
Kryvomaz_magistr.pdf
Розмір:
4.35 MB
Формат:
Adobe Portable Document Format
Опис:
Ліцензійна угода
Зараз показуємо 1 - 1 з 1
Ескіз недоступний
Назва:
license.txt
Розмір:
7.74 KB
Формат:
Item-specific license agreed upon to submission
Опис: