CUDA-MTL4

Die Entwicklung der CUDA-MTL4 hat zum Ziel, der wissenschaftlichen Gemeinschaft den maximalen Nutzen zu bieten. Dafür haben wir mit Operationen auf Vektoren und dünn besetzten Matrizen, welche überwiegend in Simulationssoftware verwendet werden, begonnen.  Dichte Matrizen haben wir auf später verschoben, obwohl sich mit diesen eine wesentlich höhere Performance hätte zeigen können. Die "sparse" Operationen erlauben keine Annäherung an die Peak-Performance. Unser Maßstab war vielmehr die maximale Speicherbandbreite. Mehrere Operationen, z.B. Skalarprodukt, erreichen etwa 70 Prozent der maximalen Speicherbandbreite, was vergleichbar ist mit Nvidias eigenen Implementierungen.

Ein weiteres wichtiges Kriterium ist, dass das Design der CUDA-MTL4 voll kompatibel mit der Open-Source-Version ist. Dies bedeutet, dass alle MTL4-Anwendungen sofort mit der CUDA-MTL4 kompiliert werden können (sofern die Anwendungen keine C++11-Features verwendeten, die vom verwendeten nvcc nicht unterstützt werden). Nicht alle Operationen in der Open-Source-Version haben GPU-Beschleunigung und einige werden sie vielleicht nie haben (z.B. Vorkonditionierer). CUDA-MTL4 wird intern über Meta-Programming-Mechanismen gesteuert, die wissen, welche Typen und Operationen unterstützt werden. Wenn keine CUDA-Unterstützung verfügbar ist, werden die Berechnungen auf der CPU ausgeführt. Anwendungen mit teilweiser GPU-Unterstützung könnten in manchen Fällen sogar noch langsamer als reine CPU-Berechnungen sein, wenn es zu  häufigem Datentransfer zwischen CPU- und GPU-Speicher kommt. Wir werden das im Tutorial auf der Seite über dynamische Speicherverwaltung (eng) im Detail erklären.

Wie bei den zuvor veröffentlichten MTL4-Editionen zielt die CUDA-MTL4 auf ein Gleichgewicht von Produktivität und Leistung ab. Benutzer der bestehenden Versionen werden es einfach finden zu wechseln und neue CMTL4-Anwender einen einfachen Einstieg in CUDA-Programmierung finden. Um die Entwicklung wirklich produktiv zu gestalten, bieten wir Debugger-Unterstützung, die unsere Container in einer lesbaren Weise darstellt.

© 2017 SimuNova UG