Yilmaz, Tolga MatNr: 157317 Mesaud, Elias MatNr: 151386

1.

Aufbau und Funktionsweise einer Grafikkarte

2.

CPU vs. GPU

3.

Software

4.

Beispielprogramme ◦

Wo wird Cuda heutzutage verwendet

5.

◦ ◦ ◦ 6.

Kompilierung und Vorführung

Mehrere Beispiele Tesla Beispielprogramm: TotalMedia

Fazit

Yilmaz, Tolga

Mesaud, Elias

2

Yilmaz, Tolga

Mesaud, Elias

3

Aufbau und Funktion einer Grafikkarte • Onboard (IGP) • Bietet alle 2D2D-Funktion • Langsame oder veraltete 3D3D-Funktionalität • Erweiterungskarte • Low Low-Cost bis HighHigh-End Modelle • Dual GPU‘s auf einer Karte • SLI oder CrossfireCrossfire-Verbund

Yilmaz, Tolga

Mesaud, Elias

4

Aufgaben einer Grafikkarte • Die Grafikkarte soll die CPU entlasten • Auslagern komplexer Bildberechnungen auf die GPU • Datenübertragung geschieht über ein Bus vom Mainboard (AGP oder PCIPCI-Express) • Informationen werden in der GPU verarbeitet und im Videospeicher abgelegt. • RAMDAC ließt die digitalen Bildinformationen und übermittelt diese an den Monitor

Yilmaz, Tolga

Mesaud, Elias

5

Aufbau einer Grafikkarte

NVIDIA 8800 GTX

Yilmaz, Tolga

Mesaud, Elias

6

Aufbau einer Grafikkarte

Yilmaz, Tolga

Mesaud, Elias

7

Grafikprozessor (GPU)

• G80 ist der erste DirectX10 fähige Grafikchip • Komplett neue Architektur • Unified Shader Model • Keine Unterscheidung zwischen den unterschiedlichen ShaderShader -Modellen (Pixel, Vertex, Geometrie)

Yilmaz, Tolga

Mesaud, Elias

8

Grafikprozessor (GPU)

Yilmaz, Tolga

Mesaud, Elias

9

Grafikprozessor (GPU)

Yilmaz, Tolga

Mesaud, Elias

10

Grafikprozessor (GPU)

Yilmaz, Tolga

Mesaud, Elias

11

Grafikprozessor (GPU)

Yilmaz, Tolga

Mesaud, Elias

12

Grafikprozessor (GPU)

Neues bei DirectX 10: • Geometrie Geometrie-Shader • Stream Stream-Ausgabe • Geringere CPUCPU-Belastung bei CPUCPU-GPU Transaktionen

Yilmaz, Tolga

Mesaud, Elias

13

Yilmaz, Tolga

Mesaud, Elias

14

CPU vs. GPU

Die CPU • kann prinzipiell alles berechnen • zieht aus einem Befehlssatz die größtmögliche Leistung • ist in der Anzahl der parallelen Ausführungen beschränkt • Hälfte der Chipfläche wird für den Cache verwendet

Yilmaz, Tolga

Mesaud, Elias

15

CPU vs. GPU

Die GPU • ist auf 3D3D-Berechnungen spezialisiert • hohes Maß an Parallelisierung • erreicht ihre volle Effizienz bei ca. 1000 Threads • benötigt dank intelligenter Speicherorganisation nur geringen Cache

Yilmaz, Tolga

Mesaud, Elias

16

CPU vs. GPU

4 Cores

240 Cores

Yilmaz, Tolga

Mesaud, Elias

17

CPU vs. GPU

330 GFlops

48 GFlops

Yilmaz, Tolga

Mesaud, Elias

18

• CUDA bildet eine Erweiterung der C Sprache • Dennoch unterstützt es nicht alle Funktionen • Man benötigt keine Vorkenntnisse über die GPUGPUProgrammierung oder GrafikGrafik-APIs • Verfügbar für Windows und bekannte LinuxLinuxDistributionen

Yilmaz, Tolga

Mesaud, Elias

19

• __ __host host__: __: die Funktion ist nur vom Host aufrufbar und ausführbar.

• __ __device device__: __: die Funktion ist nur vom Device aufrufbar und ausführbar.

• __global__: die Funktion ist nur vom Host aufrufbar und wird vom Device ausgeführt.

Yilmaz, Tolga

Mesaud, Elias

20

• __ __constant constant__: __: Variable wird im constant memory abgelegt.

• __ __device device__: __: Variable wird im global memory gespeichert.

• __ __shared shared__: __: Variable wird im shared memory gespeichert.

Yilmaz, Tolga

Mesaud, Elias

21

// main routine that executes on the host #include

int main(void)

#include

{ float *a_h, *a_d; // Pointer to host & device arrays

// Kernel that executes on the CUDA device

const int N = 10; // Number of elements in arrays

__global__ void square_array(float *a, int N)

size_t size = N * sizeof(float);

{

a_h = (float *)malloc(size);

// Allocate array on host

int idx = blockIdx.x * blockDim.x + threadIdx.x;

cudaMalloc((void **) &a_d, size); // Allocate on device

if (idx