Saya telah membaca banyak tentang manfaat pengorganisasian data ke dalam 'Structs of Arrays' (SoA) alih-alih 'Array of Structs' (AoS) untuk mendapatkan hasil yang lebih baik saat menggunakan instruksi SIMD . Sementara 'mengapa' masuk akal bagi saya, saya tidak yakin berapa banyak yang harus dilakukan ketika bekerja dengan hal-hal seperti vektor.
Vektor sendiri dapat dianggap sebagai struct dari array (ukuran tetap) data, sehingga Anda dapat mengkonversi array ini menjadi struct dari array X, Y dan Z. Melalui ini, Anda dapat bekerja pada 4 vektor sekaligus sebagai lawan satu pada satu waktu.
Sekarang, untuk alasan spesifik saya memposting ini di GameDev:
Apakah ini masuk akal untuk bekerja dengan vektor di SPU? Lebih khusus, apakah masuk akal untuk beberapa array DMA hanya untuk satu vektor? Atau lebih baik tetap menggunakan DMA array array dan membuka gulungannya ke komponen yang berbeda untuk bekerja dengan?
Saya bisa melihat manfaat dari memotong membuka gulungan (jika Anda melakukannya 'AoS'), tetapi sepertinya Anda bisa dengan cepat kehabisan saluran DMA jika Anda mengambil rute ini dan sedang bekerja dengan beberapa set vektor sekaligus.
(Catatan: belum ada pengalaman profesional dengan Cell, tetapi telah bermain-main di OtherOS untuk sementara waktu)