Oblicz jądro - Compute kernel

W obliczeniowej , A jądra obliczeniowa jest rutynową zestawiane wysokowydajnego przyspieszacze (np przetwarzania grafiki jednostek (GPU), procesorów sygnałowych (DSP), lub w terenie programowalnych macierzy bramek (FPGA)), oddzielonych od, ale wykorzystywane przez program główny ( zazwyczaj działa na centralnej jednostce przetwarzania ). Czasami nazywane są one modułami cieniującymi obliczeniowymi , które współużytkują jednostki wykonawcze z modułami cieniującymi wierzchołków i modułami cieniującymi pikseli na procesorach graficznych, ale nie ograniczają się do wykonywania na jednej klasie urządzeń lub graficznych interfejsach API .

Opis

Jądra obliczeniowe z grubsza odpowiadają pętlom wewnętrznym podczas implementowania algorytmów w językach tradycyjnych (z wyjątkiem braku niejawnych operacji sekwencyjnych) lub kodowi przekazywanemu do wewnętrznych iteratorów .

Mogą być określone przez oddzielny język programowania, taki jak „ OpenCL C ” (zarządzany przez OpenCL API), jako „moduły cieniujące obliczeniowe ” napisane w języku cieniowania (zarządzane przez graficzny interfejs API, taki jak OpenGL ) lub osadzone bezpośrednio w kodzie aplikacji napisane w języku wysokiego poziomu , jak w przypadku C ++ AMP .

Przetwarzanie wektorowe

Ten paradygmat programowania dobrze odwzorowuje procesory wektorowe : zakłada się, że każde wywołanie jądra w partii jest niezależne, co pozwala na równoległe wykonywanie danych . Jednak w niektórych scenariuszach do synchronizacji między elementami (do pracy współzależnej) mogą być czasami używane niepodzielne operacje . Poszczególne wywołania otrzymują indeksy (w 1 lub więcej wymiarach), z których można wykonać dowolne adresowanie danych bufora (w tym operacje gromadzenia rozproszonego ), o ile przestrzegane jest założenie o nienakładaniu.

Vulkan API

Vulkan API zapewnia pośredni SPIR-V reprezentacji opisu zarówno graficzny Shaders i Oblicz jąder, w niezależnie języka i urządzenia niezależny sposób. Celem jest ułatwienie ewolucji języka i zapewnienie bardziej naturalnej możliwości wykorzystania możliwości obliczeniowych GPU, zgodnie z rozwojem sprzętu, takim jak ujednolicona architektura pamięci i heterogeniczna architektura systemu . Pozwala to na bliższą współpracę między CPU i GPU.

Zobacz też

Bibliografia