CUDA małe jądro 2d - jak to zrobić

Eksperymentowałem z jądrami CUDA od wielu dni, aby wykonać szybki splot 2D między obrazem 500x500 (ale mogłem również zmieniać wymiary) i bardzo małym jądrem 2D (jądro laplacian 2d, więc jest to jądro 3x3 .. zbyt małe wykorzystać przewagę wszystkich wątków cuda).

Stworzyłem klasyczną implementację procesora (dwie pętle, tak proste, jak można by pomyśleć), a następnie zacząłem tworzyć jądra CUDA.

Po kilku rozczarowujących próbach wykonania szybszego splotu skończyło się na tym kodzie:http://www.evl.uic.edu/sjames/cs525/final.html (patrz sekcja Pamięć współdzielona), zasadniczo umożliwia blokowi wątków 16x16 załadowanie wszystkich potrzebnych danych splotu w pamięci współdzielonej, a następnie wykonuje splot.

Nic, procesor jest jeszcze szybszy. Nie wypróbowałem podejścia FFT, ponieważ SDK CUDA stwierdza, że ​​jest wydajny przy dużych rozmiarach jądra.

Niezależnie od tego, czy przeczytałeś wszystko, co napisałem, moje pytanie brzmi:

jak mogę wykonać szybki splot 2D między stosunkowo dużym obrazem i bardzo małym jądrem (3x3) z CUDA?

questionAnswers(1)

yourAnswerToTheQuestion