Core Concepts
Die Studie bietet eine umfassende empirische Bewertung und einen direkten Vergleich von sechs portablen GPU-Programmiermodellen hinsichtlich ihrer Fähigkeit, Leistungsportabilität über die schnellsten Supercomputer der Welt hinweg zu ermöglichen.
Abstract
Die Studie untersucht die Leistungsportabilität von sieben verschiedenen GPU-Programmiermodellen (CUDA, HIP, Kokkos, RAJA, OpenMP, OpenACC, SYCL) unter Verwendung einer vielfältigen Reihe von Proxy-Anwendungen, die auf Hochleistungsrechner-Plattformen von NVIDIA und AMD getestet wurden.
Die Ergebnisse zeigen, dass SYCL, RAJA und Kokkos vielversprechende Fähigkeiten zur Ermöglichung von Leistungsportabilität aufweisen und in einigen Fällen sogar native Ports übertreffen können. Zwischen RAJA und Kokkos lässt sich feststellen, dass Kokkos tendenziell bessere Leistung auf AMD-Systemen erzielt, während RAJA auf NVIDIA-Systemen überlegen ist. SYCL schneidet oft konsistenter ab, insbesondere bei Codes mit Reduktionen und rechenintensiveren Codes.
OpenMP und OpenACC bieten zwar eine einfachere Portierungserfahrung, konnten in mehreren Fällen jedoch nicht das gleiche Maß an Leistungsportabilität wie andere Modelle erreichen. OpenMP erzielt die beste Leistung über Plattformen hinweg für XSBench, kämpft aber mit Reduktionen, insbesondere auf AMD-GPUs. OpenACC bietet relativ starke Portabilität für reduktionsbasierte Codes und rechenintensive Codes auf NVIDIA-GPUs sowie dort, wo es von der starken Leistung des LLVM-Offloading-Backends über den Clacc-Compiler auf AMD-Systemen profitieren kann.
Stats
Die Studie zeigt, dass die Zeit für den Datentransfer zwischen Host und Gerät in allen getesteten Fällen vernachlässigbar gering (weniger als 2%) im Vergleich zur Ausführungszeit der GPU-Kernel ist.
Quotes
"SYCL, RAJA und Kokkos zeigen signifikantes Potenzial, Leistungsportabilität zu ermöglichen, und können in einigen Fällen sogar native Ports übertreffen."
"Zwischen RAJA und Kokkos lässt sich feststellen, dass Kokkos tendenziell bessere Leistung auf AMD-Systemen erzielt, während RAJA auf NVIDIA-Systemen überlegen ist."
"SYCL schneidet oft konsistenter ab, insbesondere bei Codes mit Reduktionen und rechenintensiveren Codes."