Używam CUDA/Thrust/CUDPP. Jak rozumiem, w kompresji Stream niektóre elementy w tablicy są oznaczone jako nieprawidłowe, a następnie "usunięte".Kompresja strumienia CUDA: zrozumienie pojęcia
Co tak naprawdę oznacza "usunięcie"? Załóżmy oryginalną tablicę A
i ma długość 6. Jeżeli 2 elementy są nieważne (przez co stan możemy dostarczyć), a następnie
Czy system tworzenia nowy tablicę o rozmiarze 4 w GPU-pamięci do zapamiętywania prawidłowe elementy, aby uzyskać końcowy wynik?
Czy fizycznie usuwa z pamięci nieprawidłowe elementy i zmniejsza oryginalną tablicę? A do rozmiaru 4 zachowującego tylko ważne elementy?
W obu przypadkach nie oznacza to, że dynamiczny przydział pamięci dzieje się pod maską? Ale słyszałem, że dynamiczne przydzielanie pamięci nie jest możliwe w świecie CUDA.
Jest jeszcze jedna możliwość, że rozmiar alokacji pamięci się nie zmienia, a pierwsze 4 elementy są poprawne, ostatnie 2 są niezdefiniowane. Ale tak naprawdę to pytanie dotyczy kwestii związanych z implementacją, a kto mówi, że CUDPP lub ciąg działa tak samo? – talonmies
ArrayFire to lepsza/łatwiejsza opcja niż Thrust, a także darmowa, przynajmniej dla pojedynczego użycia GPU. http://accelereyes.com/arrayfire – arrayfire