GPU Flashcards

1
Q

Co to jest ‘data-parallel computing’?

A

Równoległe przetwarzanie dużej ilości danych, przy pomocy wielu prostych, działających równolegle procesorów.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Co to jest ‘task-parallel computing’?

A

Równoległość zadań obliczeniowych.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Co to jest CUDA?

A

Compute Unified Device Architecture opracowana przez firmę NVIDIA, umożliwiająca wykorzystanie procesorów kart graficznych do obliczeń ogólnego przeznaczenia.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Jakie są najważniejsze cechy architektury CUDA?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Co to jest SIMT?

A

Model programowania architektury CUDA, w którym GPU jest koprocesorem przeznaczonym do wykonywania pewnych obliczeń, zarządzającym wieloma wątkami.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Jakie rodzaje pamięci są wykorzystywane w obliczeniach ogólnego przeznaczenia na GPU?

A

Pamięć globalna, lokalna i wspólna.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Jak działa łączony dostęp do pamięci globalnej na GPU?

A

Kolejne wątki powinny odwoływać się do kolejnych słów w pamięci karty.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Czym jest kernel w programowaniu GPU?

A

Kernel to kod pojedynczego wątku, musi być funkcją zwracającą void, nie jest dozwolona rekursja.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Jakie są specyfikatory kerneli w CUDA?

A

__global__, __device__, __host__.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Jak alokujemy pamięć na urządzeniu GPU?

A

Przy pomocy funkcji cudaMalloc.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Jak zwolnić pamięć na urządzeniu GPU?

A

Przy pomocy funkcji cudaFree.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Jakie są rodzaje kopiowania danych pomiędzy pamięcią hosta i urządzenia?

A

cudaMemcpyHostToHost, cudaMemcpyHostToDevice, cudaMemcpyDeviceToHost, cudaMemcpyDeviceToDevice.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Jak synchronizujemy wszystkie wątki na GPU?

A

Wywołanie cudaThreadSynchronize() powoduje wstrzymanie wykonania wątku hosta do czasu zakończenia działania wszystkich wątków.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Co to jest pamięć ‘przypinana’?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Co to jest Unified Virtual Address Space?

A

Aplikacje 64-bitowe dla urządzeń o compute capability 2.0 lub wyższych używają pojedynczej przestrzeni adresowej dla hosta i urządzeń.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Co to jest mechanizm Unified Memory w CUDA?

A

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.

17
Q

Co to jest strumień (stream) w CUDA?

A

Sekwencja wywołań kerneli, wykonywanych w takiej kolejności, w jakiej zostały dodawane do strumienia.

18
Q

Jakie funkcje służą do zarządzania strumieniami w CUDA?

A

cudaStreamCreate, cudaStreamDestroy, cudaStreamSynchronize, cudaStreamQuery, cudaStreamWaitEvent.

19
Q

Co to jest OpenCL?

A

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

20
Q

Jakie są podstawowe założenia standardu OpenCL?

A

Heterogeniczny system komputerowy składa się z hosta i pewnej liczby urządzeń obliczeniowych, które wykonują kernele napisane w języku OpenCL.