Große, Peter:
A rapid prototyping framework connecting C++ and Python for signal processing in non-destructive testing
Ilmenau, 2020
2020Diplomarbeit
Technische Universität Ilmenau (1992-) » Fakultät für Elektrotechnik und Informationstechnik (1992-) » Institut für Informationstechnik (2004-) » Fachgebiet Elektronische Messtechnik und Signalverarbeitung (2018-)
Titel:
A rapid prototyping framework connecting C++ and Python for signal processing in non-destructive testing
Autor*in:
Große, Peter
Akademische*r Betreuer*in:
Del Galdo, GiovanniTU
GND
136084575
ORCID
0000-0002-7195-4253ORCID iD
ResearcherID
M-8079-2013
SCOPUS
55665924300
SCOPUS
57191348264
SCOPUS
57192427884
SCOPUS
57200087717
Sonstiges
der Hochschule zugeordnet
;
Groß, Daniel;Ihlow, AlexanderTU
GND
131979590
ORCID
0000-0002-9714-4881ORCID iD
SCOPUS
12646156400
Sonstiges
der Hochschule zugeordnet
Erscheinungsort:
Ilmenau
Erscheinungsjahr:
2020
Umfang:
77 Seiten
PPN:
Sprache des Textes:
Englisch
Ressourcentyp:
Text
Teil der Statistik:
Nein

Abstract in Deutsch:

In dieser Arbeit wird untersucht, wie sich Python-Module in C++-Anwendungen einbinden lassen. Während Python in Forschung und Entwicklung für Rapid Prototyping weit verbreitet ist, ist C++ die De-facto-Standardsprache für einsetzbare, kundenspezifische Software. Beide Sprachen haben ihre Vor- und Nachteile, daher ist die Integration beider sinnvoll, z.B. um Kunden schnell neuentwickelte Signalverarbeitungsalgorithmen zur Verfügung zu stellen, ohne dass diese vorher in C++ neu implementiert werden müssen. Umgekehrt kann das Verhalten solcher Algorithmen im Kontext der Kundenanwendung untersucht werden, unter Verwendung aller vorhandener Funktionen, die im Rapid-Prototyping-Framework eventuell nicht existieren. Als Grundlagen des Frameworks werden die technischen Aspekte der Ausführung von Python-Code und das Design des CPython-Interpreters im Besonderen vorgestellt. Es werden verfügbare Python-Implementierungen evaluiert, wobei CPython als am besten geeignet erachtet wird; seine umfangreiche Programmierschnittstelle (API) erweist sich als besonders vorteilhaft. Zur Verwendung der C-API in C++ werden API-Frameworks wie pybind11 als hilfreich angesehen, da sie C++-Funktionen wie implizite Datentypkonvertierung nutzen. Von den unterstützten Arten von Python-Code erfüllen Binärmodule durch Verwendung der C-API weitere wichtige Anforderungen: Durch vorherige Übersetzung in Maschinencode erlauben sie höchste Rechengeschwindigkeiten, zeitgleich ein hohes Maß an Schutz von geistigem Eigentum (IP). Um eine Neuimplementierung in C zu vermeiden, werden Werkzeuge zur Generierung von Modulcode aus Python-Quellcode untersucht, von denen Nuitka die komfortabelsten Funktionen bietet. Das vorgestellte Framework-Konzept PyUnion umfasst Softwarekomponenten, welche für Rapid Prototyping die Ausführung Python-Module jeglicher Art aus C++-Anwendungen heraus, sowie die Nutzung gemeinsamer Datenstrukturen für den Austausch zwischen beiden Umgebungen ermöglichen. Zur Unterstützung langlaufender Prozesse wird die Verwendung von im Hintergrund laufenden Threads vorgesehen, sowohl für die Ausführung der Python-Module als auch für Steuerungs- und Überwachungszwecke. Weitere wichtige Designaspekte sind der Einsatz von pybind11 zur Interaktion mit Python und Einbettung des CPython-Interpreters, sowie Nuitka zur Kompilierung von Python-Quellcode zu Binärmodulen.