Mam obecnie duży zestaw elementów pływających, które przetwarzam w jądrze OpenCL Zastanawiam się, czy podzielę tę tablicę i użyję tablicy typów OpenCL zamiast tego, jeśli przyspieszy to proces. Zasadniczo, gdybym miał tablicę 4 800 pływaków, podzieliłbym ją na tablicę 300 wektorów float16. Czy to skorzysta z SIMD?Czy typy wektorów OpenCL używają SIMD
7
A
Odpowiedz
7
Intel faktycznie opisuje, co robi zestaw OpenCL SDK: patrz: Writing Optimal OpenCL™ Code with Intel® OpenCL SDK. Możesz to sprawdzić, jako dodatek do testów porównawczych. Ciekawa część zaczyna się od rozdziału 2.3.
Aby odpowiedzieć na pytanie: tak, skorzysta z SIMD. Ale aby "maksymalizować wykorzystanie jednostek wektorowych CPU za pomocą wektorowych typów danych", powinieneś naprawdę przeczytać ten dokument.
0
Może, a może nie. Zależy to od implementacji OpenCL i sprzętu, na którym uruchamiany jest twój program.
Jedynym sposobem sprawdzenia, czy zapewnia on poprawę, jest porównanie z platformami i implementacjami zainteresowań - dla zakresu rozmiarów wektorów (np. Porównaj 1 (skalarny), 2, 4, 8 i 16).
Powiązane problemy
- 1. Niestandardowe typy w jądrze OpenCL
- 2. Jak przekazywać i uzyskiwać dostęp wektorów C++ do jądra OpenCL?
- 3. Czy typy generyczne maszynopisu używają typu wymazywania do implementacji generycznych?
- 4. Dlaczego są różne typy ciągów i wektorów?
- 5. SIMD kontra architektury wektorowe
- 6. Czy Android obsługuje OpenCL?
- 7. Czy abstrakcyjne fabryki używają "nowego"?
- 8. Przepustowość SIMD
- 9. Metody refaktoryzacji, które używają tego samego kodu, ale różne typy
- 10. Dlaczego typy Rusta `Atomic *` używają niemodulujących funkcji do mutowania wartości?
- 11. Czy jest jeszcze jakiś rozwój SIMD w Mono?
- 12. (rozszerzenia SIMD) SSE wsparcie w gcc
- 13. Czy opencl obsługuje zmienne boolean?
- 14. Czy opencl obsługuje wskaźniki funkcji?
- 15. Ładowanie danych do wektorów rozszerzeń GCC
- 16. Czy Haskell perfom SIMD optimizations automatycznie?
- 17. Stałe pływaki z kartą SIMD
- 18. SSE (SIMD): pomnóż wektor przez skalarną
- 19. Wywołanie kernela OpenCL z innego kernela OpenCL
- 20. C++ SSE SIMD framework
- 21. Języki programowania SIMD
- 22. SIMD (AVX) porównaj
- 23. SIMD o następującym kodzie:
- 24. Czy należy używać rozszerzeń SIMD lub wektorowych lub czegoś innego?
- 25. Przykłady OpenCL z testami porównawczymi
- 26. Czy istnieje dobre opakowanie openCL dla Ruby?
- 27. Czy OpenCL zawsze zeruje inicjowanie pamięci urządzenia?
- 28. Dodawanie tablicy SIMD dla dowolnych długości tablic
- 29. Dlaczego biblioteki C++ często definiują własne typy pierwotne?
- 30. Wersje SIMD instrukcji SHLD/SHRD
OpenCL powinien już korzystać z funkcji SIMD bazowego sprzętu lub byłby zupełnie bezużyteczny do programowania GPU. Nie jestem pewien, co robi to na procesorze, mimo że procesor nie jest idealną domeną OpenCL, by grać swoje mocne strony. –