GPU Flashcards
Co to jest ‘data-parallel computing’?
Równoległe przetwarzanie dużej ilości danych, przy pomocy wielu prostych, działających równolegle procesorów.
Co to jest ‘task-parallel computing’?
Równoległość zadań obliczeniowych.
Co to jest CUDA?
Compute Unified Device Architecture opracowana przez firmę NVIDIA, umożliwiająca wykorzystanie procesorów kart graficznych do obliczeń ogólnego przeznaczenia.
Jakie są najważniejsze cechy architektury CUDA?
Procesory GPU są wielordzeniowymi układami obliczeniowymi, które zarządzają pracą wielu tysięcy wątków, GPU mają większą moc obliczeniową niż CPU, są relatywnie tanie, zużywają mało energii i umożliwiają realizację obliczeń heterogenicznych CPU + GPU.
Co to jest SIMT?
Model programowania architektury CUDA, w którym GPU jest koprocesorem przeznaczonym do wykonywania pewnych obliczeń, zarządzającym wieloma wątkami.
Jakie rodzaje pamięci są wykorzystywane w obliczeniach ogólnego przeznaczenia na GPU?
Pamięć globalna, lokalna i wspólna.
Jak działa łączony dostęp do pamięci globalnej na GPU?
Kolejne wątki powinny odwoływać się do kolejnych słów w pamięci karty.
Czym jest kernel w programowaniu GPU?
Kernel to kod pojedynczego wątku, musi być funkcją zwracającą void, nie jest dozwolona rekursja.
Jakie są specyfikatory kerneli w CUDA?
__global__, __device__, __host__.
Jak alokujemy pamięć na urządzeniu GPU?
Przy pomocy funkcji cudaMalloc.
Jak zwolnić pamięć na urządzeniu GPU?
Przy pomocy funkcji cudaFree.
Jakie są rodzaje kopiowania danych pomiędzy pamięcią hosta i urządzenia?
cudaMemcpyHostToHost, cudaMemcpyHostToDevice, cudaMemcpyDeviceToHost, cudaMemcpyDeviceToDevice.
Jak synchronizujemy wszystkie wątki na GPU?
Wywołanie cudaThreadSynchronize() powoduje wstrzymanie wykonania wątku hosta do czasu zakończenia działania wszystkich wątków.
Co to jest pamięć ‘przypinana’?
Pamięć przypinana (pinned memory, page-locked host memory) to pamięć alokowana na hoście z możliwością mapowania na pamięć urządzenia w celu uzyskania szybkiego dostępu przez GPU.
Co to jest Unified Virtual Address Space?
Aplikacje 64-bitowe dla urządzeń o compute capability 2.0 lub wyższych używają pojedynczej przestrzeni adresowej dla hosta i urządzeń.
Co to jest mechanizm Unified Memory w CUDA?
Wprowadzony w CUDA 6.0 mechanizm, w którym istnieje zunifikowana, zarządzana przestrzeń pamięci dostępna dla wszystkich urządzeń CPU i GPU.
Co to jest strumień (stream) w CUDA?
Sekwencja wywołań kerneli, wykonywanych w takiej kolejności, w jakiej zostały dodawane do strumienia.
Jakie funkcje służą do zarządzania strumieniami w CUDA?
cudaStreamCreate, cudaStreamDestroy, cudaStreamSynchronize, cudaStreamQuery, cudaStreamWaitEvent.
Co to jest OpenCL?
OpenCL (Open Computing Language) to standard programowania równoległego komputerowych systemów heterogenicznych wyposażonych w różne rodzaje procesorów oraz innych ‘urządzeń liczących’.
Jakie są podstawowe założenia standardu OpenCL?
Heterogeniczny system komputerowy składa się z hosta i pewnej liczby urządzeń obliczeniowych, które wykonują kernele napisane w języku OpenCL.