Slides

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Slides as PDF for free.

More details

  • Words: 2,852
  • Pages: 44
Le schede grafiche

CUDA

Implementazione

Risultati

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture) Stefano Brilli Universit` a degli studi di Firenze

Ottobre 2008

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

CUDA

CUDA `e una tecnologia di NVIDIA Corporation che permette di sfruttare l’architettura parallela delle moderne schede grafiche, per sviluppare algoritmi di calcolo altamente efficienti.

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Argomenti trattati

1

Le schede grafiche

2

CUDA

3

Implementazione

4

Risultati

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Argomenti trattati

1

Le schede grafiche

2

CUDA

3

Implementazione

4

Risultati

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Eseguono il rendering di scene tridimensionali, per applicazioni e giochi per computers. Sono dotate di una propria memoria ed una propria unit`a di elaborazione: la Graphics Processing Unit (GPU). Le GPU si sono evolute fino a diventare potenti processori paralleli multicore

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Eseguono il rendering di scene tridimensionali, per applicazioni e giochi per computers. Sono dotate di una propria memoria ed una propria unit`a di elaborazione: la Graphics Processing Unit (GPU). Le GPU si sono evolute fino a diventare potenti processori paralleli multicore

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Eseguono il rendering di scene tridimensionali, per applicazioni e giochi per computers. Sono dotate di una propria memoria ed una propria unit`a di elaborazione: la Graphics Processing Unit (GPU). Le GPU si sono evolute fino a diventare potenti processori paralleli multicore

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

La maggior parte della loro superficie `e dedicata ad unit`a di calcolo, pittusto che al data caching e al controllo di flusso.

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Argomenti trattati

1

Le schede grafiche

2

CUDA

3

Implementazione

4

Risultati

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

CUDA

CUDA `e un ambiente di sviluppo che estende il linguaggio C. Permette di definire dei kernel. Ovvero particolari funzioni che verranno eseguite dalla GPU. Offre un modello di programmazione basato su: 1 2 3

Stefano Brilli

Gerarchia dei thread Memoria condivisa Sincronizzazione a barriera

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

CUDA

CUDA `e un ambiente di sviluppo che estende il linguaggio C. Permette di definire dei kernel. Ovvero particolari funzioni che verranno eseguite dalla GPU. Offre un modello di programmazione basato su: 1 2 3

Stefano Brilli

Gerarchia dei thread Memoria condivisa Sincronizzazione a barriera

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

CUDA

CUDA `e un ambiente di sviluppo che estende il linguaggio C. Permette di definire dei kernel. Ovvero particolari funzioni che verranno eseguite dalla GPU. Offre un modello di programmazione basato su: 1 2 3

Stefano Brilli

Gerarchia dei thread Memoria condivisa Sincronizzazione a barriera

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Gerarchia dei Thread

Multithreading Ogni kernel viene eseguito da migliaia di thread contemporaneamente. Gerarchia I Thread sono raggruppati in blocchi. L’insieme di tutti i blocchi forma la griglia di esecuzione.

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Memoria condivisa I thread hanno accesso a diversi spazi di memoria Lettura/Scrittura Memoria Locale Memoria Condivisa Memoria Globale

Sola Lettura Memoria Costante Memoria delle Texture

. Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Memoria condivisa I thread hanno accesso a diversi spazi di memoria Lettura/Scrittura Memoria Locale Memoria Condivisa Memoria Globale

Sola Lettura Memoria Costante Memoria delle Texture

. Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Memoria condivisa I thread hanno accesso a diversi spazi di memoria Lettura/Scrittura Memoria Locale Memoria Condivisa Memoria Globale

Sola Lettura Memoria Costante Memoria delle Texture

. Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Sincronizzazione a barriera CUDA fornisce una primitiva di sincronizzazione a barriera: syncthreads() Ferma il thread che l’ha invocata, finch`e tutti gli altri thread dello stesso blocco non l’hanno invocata a loro volta. Problema Non esiste una primitiva di sincronizzazione globale! Soluzione Si attende il ritorno dalla chiamata ad un kernel: A questo punto tutti i thread hanno svolto il proprio compito.

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Sincronizzazione a barriera CUDA fornisce una primitiva di sincronizzazione a barriera: syncthreads() Ferma il thread che l’ha invocata, finch`e tutti gli altri thread dello stesso blocco non l’hanno invocata a loro volta. Problema Non esiste una primitiva di sincronizzazione globale! Soluzione Si attende il ritorno dalla chiamata ad un kernel: A questo punto tutti i thread hanno svolto il proprio compito.

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Sincronizzazione a barriera CUDA fornisce una primitiva di sincronizzazione a barriera: syncthreads() Ferma il thread che l’ha invocata, finch`e tutti gli altri thread dello stesso blocco non l’hanno invocata a loro volta. Problema Non esiste una primitiva di sincronizzazione globale! Soluzione Si attende il ritorno dalla chiamata ad un kernel: A questo punto tutti i thread hanno svolto il proprio compito.

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in C Ambiente C void vecAdd(float* A, float* B, float* C){ int i; for(i=0;i
A:

Stefano Brilli

a1 ↑

a2 ↑

a3 ↑

a4 ↑

a5 ↑

a6 ↑

...

alen ↑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in C Ambiente C void vecAdd(float* A, float* B, float* C){ int i; for(i=0;i
A:

Stefano Brilli

a1 ↑

a2 ↑

a3 ↑

a4 ↑

a5 ↑

a6 ↑

...

alen ↑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in C Ambiente C void vecAdd(float* A, float* B, float* C){ int i; for(i=0;i
A:

Stefano Brilli

a1 ↑

a2 ↑

a3 ↑

a4 ↑

a5 ↑

a6 ↑

...

alen ↑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in C Ambiente C void vecAdd(float* A, float* B, float* C){ int i; for(i=0;i
A:

Stefano Brilli

a1 ↑

a2 ↑

a3 ↑

a4 ↑

a5 ↑

a6 ↑

...

alen ↑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in C Ambiente C void vecAdd(float* A, float* B, float* C){ int i; for(i=0;i
A:

Stefano Brilli

a1 ↑

a2 ↑

a3 ↑

a4 ↑

a5 ↑

a6 ↑

...

alen ↑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in C Ambiente C void vecAdd(float* A, float* B, float* C){ int i; for(i=0;i
A:

Stefano Brilli

a1 ↑

a2 ↑

a3 ↑

a4 ↑

a5 ↑

a6 ↑

...

alen ↑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in C Ambiente C void vecAdd(float* A, float* B, float* C){ int i; for(i=0;i
A:

Stefano Brilli

a1 ↑

a2 ↑

a3 ↑

a4 ↑

a5 ↑

a6 ↑

...

alen ↑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in C Ambiente C void vecAdd(float* A, float* B, float* C){ int i; for(i=0;i
A:

Stefano Brilli

a1 ↑

a2 ↑

a3 ↑

a4 ↑

a5 ↑

a6 ↑

...

alen ↑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in CUDA Ambiente CUDA __global__ void vecAdd(float* A, float* B, float* C){ int i = blockDim.x*blockIdx.x+threadIdx.x; for(;i>>(A, B, C); }

A:

Stefano Brilli

a1 ⇑

a2 ⇑

... ···

ak ⇑

ak+1 ⇑

ak+2 ⇑

. . . a2k ··· ⇑

... ⇑

alen ⇑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in CUDA Ambiente CUDA __global__ void vecAdd(float* A, float* B, float* C){ int i = blockDim.x*blockIdx.x+threadIdx.x; for(;i>>(A, B, C); } k = numero di thread totali. A:

Stefano Brilli

a1 ⇑

a2 ⇑

... ···

ak ⇑

ak+1 ⇑

ak+2 ⇑

. . . a2k ··· ⇑

... ⇑

alen ⇑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in CUDA Ambiente CUDA __global__ void vecAdd(float* A, float* B, float* C){ int i = blockDim.x*blockIdx.x+threadIdx.x; for(;i>>(A, B, C); } k = numero di thread totali. A:

Stefano Brilli

a1 ⇑

a2 ⇑

... ···

ak ⇑

ak+1 ⇑

ak+2 ⇑

... ···

a2k ⇑

... ⇑

alen ⇑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Somma membro a membro di due vettori in CUDA Ambiente CUDA __global__ void vecAdd(float* A, float* B, float* C){ int i = blockDim.x*blockIdx.x+threadIdx.x; for(;i>>(A, B, C); } k = numero di thread totali. A:

Stefano Brilli

a1 ⇑

a2 ⇑

... ···

ak ⇑

ak+1 ⇑

ak+2 ⇑

. . . a2k ··· ⇑

... ⇑

alen ⇑

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Argomenti trattati

1

Le schede grafiche

2

CUDA

3

Implementazione

4

Risultati

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Il Metodo dei Gradienti Coniugati Cos’`e Il metodo dei gradienti coniugati `e un metodo iterativo per la risoluzione di sistemi lineari. L’algoritmo d0 = b − Qx0 αk =

gkT dk dT k Qdk

xk+1 = xk + αk dk βk =

T gk+1 Qdk T dk Qdk

dk+1 = −gk+1 + βk dk Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Le implementazioni ccgmamma.c Implementazione C

−→ cgmamma.m Implementazione Matlab

−→

nvcgmamma.cu Implementazione CUDA

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Fasi dello sviluppo

1 2

Implementazione del prodotto matrice-vettore. Tecniche di ottimizzazione. Allineamento conveniente dei dati. Uso della memoria condivisa per lo scambio dei risultati intermedi.

3

Stefano Brilli

Implementazione delle restanti operazioni.

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Fasi dello sviluppo

1 2

Implementazione del prodotto matrice-vettore. Tecniche di ottimizzazione. Allineamento conveniente dei dati. Uso della memoria condivisa per lo scambio dei risultati intermedi.

3

Stefano Brilli

Implementazione delle restanti operazioni.

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Fasi dello sviluppo

1 2

Implementazione del prodotto matrice-vettore. Tecniche di ottimizzazione. Allineamento conveniente dei dati. Uso della memoria condivisa per lo scambio dei risultati intermedi.

3

Stefano Brilli

Implementazione delle restanti operazioni.

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Fasi dello sviluppo

1 2

Implementazione del prodotto matrice-vettore. Tecniche di ottimizzazione. Allineamento conveniente dei dati. Uso della memoria condivisa per lo scambio dei risultati intermedi.

3

Stefano Brilli

Implementazione delle restanti operazioni.

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Fasi dello sviluppo

1 2

Implementazione del prodotto matrice-vettore. Tecniche di ottimizzazione. Allineamento conveniente dei dati. Uso della memoria condivisa per lo scambio dei risultati intermedi.

3

Stefano Brilli

Implementazione delle restanti operazioni.

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Argomenti trattati

1

Le schede grafiche

2

CUDA

3

Implementazione

4

Risultati

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Performance

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Performance

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Rapporto prestazioni/prezzo

CPU Intel Core 2 Duo 2,66 GHz Costo: 150 e

GPU NVIDIA GeForce 8800 GTS 512 MHz

Costo:110 e

Risultati Prestazioni 20 volte superiori e costi inferiori rendono la GPU di NVIDIA 27 volte pi` u conveniente della CPU di Intel.

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Le schede grafiche

CUDA

Implementazione

Risultati

Rapporto prestazioni/prezzo

CPU Intel Core 2 Duo 2,66 GHz Costo: 150 e

GPU NVIDIA GeForce 8800 GTS 512 MHz

Costo:110 e

Risultati Prestazioni 20 volte superiori e costi inferiori rendono la GPU di NVIDIA 27 volte pi` u conveniente della CPU di Intel.

Stefano Brilli

Universit` a degli studi di Firenze

Implementazione efficiente del Metodo dei Gradienti Coniugati in ambiente CUDA (Compute Unified Device Architecture)

Related Documents

Slides
May 2020 55
Slides
May 2020 34
Slides
June 2020 35
Slides
July 2020 36
Slides
August 2019 53
Slides
November 2019 42