Evaluiere: Scattern auf dem Device mit Synchronisation
Closed nach Zwischenvortrag, wir wollen uns auf PALMA-Benchmarks konzentrieren. Außerdem scheinen die Mutexe sowieso nicht zu funktionieren
In #47 (closed) sollte das scattern erstmal mit Atomics realisiert werden, aber es stellte sich heraus das Atomics für floating-point daten nicht implementiert sind. Stattdessen wurde dann versucht das Scattern durch einen selbstgebauten globalen mutex wenn schon nicht performant dann doch zumindest korrekt zu machen. Dies scheiterte an noch nicht ganz geklärten Problemen zur Laufzeit (https://zivgitlab.uni-muenster.de/jfahl_01/pacxx-projectseminar-2019/issues/47#note_45211).
In diesem Milestone wird die Idee des synchronisierten Scatterns weiterverfolgt. Allen Ansätzen gemein ist daß das Scattern auf dem Device in Compute-Kernel erfolgt (und nicht etwa in einem seperaten Kernelaufruf wie in jfahl_01/pacxx-projectseminar-2019%"Evaluiere: Scattern in seperatem Durchlauf")
Mögliche Ansätze wären:
- Global: Ein globaler Mutex (nein, wir erwarten nicht daß das effizient ist...)
- Full: Ein Mutex pro vertex (was Speicherintensiv wäre)
- Sparse: Mehrere Vertices teilen sich einen Mutex, die Zuordnung passiert über eine Art hash-funktion