2010-12-10 9 views
1

Jetzt erlaubt CUDA dynamische Zuordnung auf dem globalen Speicher. Ich konnte jedoch keinen Hinweis auf die Skalierbarkeit dieser malloc-Funktion finden: ist es besser, als beispielsweise einen Speicherblock vorher zuzuweisen und dann den nächsten Speicherchip einem Thread zuzuweisen, indem eine globale ganze Zahl atomar inkrementiert wird? Diese letzte "hausgemachte" Lösung funktioniert, aber es gibt ein offensichtliches Problem mit der Skalierbarkeit, also frage ich mich, ob sich das irgendwie kümmert.Dynamische Zuordnung in CUDA - geringere Konkurrenz als handschriftliche Lösung?

+0

Warten - CUDA ermöglicht jetzt malloc von GPU-Code? – wump

+0

yep, CUDA Programmieranleitung 3.2, Seite 122 – GalicianMario

Antwort

0

Ich denke, während Ihre "hausgemachte" Lösung derzeit genauso gut sein könnte, obwohl gleichzeitige Aufrufe zu einer globalen Ganzzahl es verlangsamen könnten, würde Malloc meine Wahl sein.

Dies ist der Grund dafür, dass Nvidia mit den Problemen der Skalierbarkeit umgehen und Verbesserungen sowohl in der Hardware- als auch in der Software-Implementierung vornehmen kann, indem Sie den Code zu einem späteren Zeitpunkt erneut kompilieren.

+0

Sie haben recht, ich bin nur vorsichtig bei der Verwendung von malloc, da es ein bekannter Engpass für die Skalierbarkeit in der Multicore-Programmierung ist (also normalerweise Horten) - ich wünschte nur, dass es da wäre ein Papier/Studie über die Skalierbarkeit des CUDA malloc, so muss ich nicht auf handgemachte Lösungen zurückgreifen. – GalicianMario