Ich habe viel über die Vorteile der Organisation von Daten in "Structs of Arrays" (SoA) anstelle des typischen "Array of Structs" (AoS) gelesen, um einen besseren Durchsatz bei Verwendung von SIMD- Anweisungen zu erzielen . Obwohl das Warum für mich absolut sinnvoll ist, bin ich mir nicht sicher, wie viel ich tun soll, wenn ich mit Dingen wie Vektoren arbeite.
Vektoren selbst können als Struktur eines Datenarrays (fester Größe) verstanden werden, sodass Sie ein Array davon in eine Struktur von X-, Y- und Z-Arrays konvertieren können. Auf diese Weise können Sie 4 Vektoren gleichzeitig bearbeiten und nicht jeweils einen.
Aus dem speziellen Grund poste ich dies auf GameDev:
Ist dies sinnvoll für die Arbeit mit Vektoren auf der SPU? Ist es insbesondere sinnvoll, mehrere Arrays nur für einen einzelnen Vektor zu dMA? Oder wäre es besser, beim DMAing des Vektorarrays zu bleiben und es in die verschiedenen Komponenten abzuwickeln, mit denen gearbeitet werden soll?
Ich konnte den Vorteil des Ausschaltens des Abrollens erkennen (wenn Sie es 'AoS' gemacht haben), aber es scheint, als könnten Ihnen schnell die DMA-Kanäle ausgehen, wenn Sie diesen Weg einschlagen und mit mehreren Vektorsätzen gleichzeitig arbeiten würden.
(Hinweis: Noch keine Berufserfahrung mit Cell, aber ich habe eine Weile in OtherOS herumgespielt.)