2011-08-29 11 views
7

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

+2

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. –

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