GPU Programmierung in der Python3 Sprache wurde mit der Zeit immer gefragter, insbesondere im Zusammenhang mit maschinellem Lernen. Allerdings hat sich die Anzahl der Backends, die eine Schnittstelle für Array-Programmierung für GPUs zur Verfügung stellen, auch erhöht und Algorithmen, die unterschiedliche Schnittstellen verwenden, sind oft zueinander inkompatibel. torchquad ist ein Beispiel für ein Python3 Modul, das mehr-dimensionale numerische Integration auf GPUs implementiert und die Schnittstelle des PyTorch Backends verwendet. Es gibt kein Modul mit equivalenten Eigenschaften für andere Backends, wie z.B. JAX und TensorFlow.
Das autoray Modul implementiert eine Schnittstelle für Array-Programmierung, die automatisch für numerische Python3 Module funktioniert, welche in ihrer API NumPy ähneln. Da es Implementierungen von Algorithmen ermöglicht, die mehrere Backends gleichzeitig unterstützen, kann autoray das Kompatibilitätsproblem lösen.
Das Thema dieser Arbeit ist die Anpassung von torchquad’s Code, damit es autoray statt PyTorch verwendet und dadurch numerische Integration mit den Backends NumPy, JAX und TensorFlow zusätzlich zu PyTorch unterstützt. Zudem enthält diese Arbeit Untersuchungen über die Grenzen der Modularität zwischen Backends, Code Kompilierungen mit PyTorch, JAX und TensorFlow, und Performanzunterschiede zwischen Backends.
Vergleiche von Ausführungszeiten zeigen, dass die Parallelisierung auf der GPU mit PyTorch, JAX und TensorFlow gut funktioniert und dass ohne Kompilierung PyTorch oft mehr als doppelt so schnell wie JAX und TensorFlow ist. Des Weiteren hat sich die Code-Lesbarkeit in torchquad durch die Verwendung von autoray nicht verschlechtert und die Grenzen der Modularität werden hauptsächlich von Backend- spezifischen Unterschieden verursacht. Dadurch kann man schlussfolgern, dass autoray im Allgemeinen gut geeignet ist, um Berechnungen zu implementieren, die mehrere Backends unterstützen.
«
GPU Programmierung in der Python3 Sprache wurde mit der Zeit immer gefragter, insbesondere im Zusammenhang mit maschinellem Lernen. Allerdings hat sich die Anzahl der Backends, die eine Schnittstelle für Array-Programmierung für GPUs zur Verfügung stellen, auch erhöht und Algorithmen, die unterschiedliche Schnittstellen verwenden, sind oft zueinander inkompatibel. torchquad ist ein Beispiel für ein Python3 Modul, das mehr-dimensionale numerische Integration auf GPUs implementiert und die Schnitt...
»