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