SlideShare a Scribd company logo
1 of 25
Download to read offline
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Implementazione di un vincolo table su un CSP
solver GPU-based
Tesi di Laurea
Tommaso Campari
27 Ottobre 2016 - A.A. 2015-2016
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Indice
Introduzione ai CSP
Introduzione a CUDA
Il solver iNVIDIOSO
Il Table Constraint
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
I CSP: Constraint Satisfaction Problem
Constraint:
Sia X una sequenza finita di variabili X = {x1, ..., xn} con
n > 0 con i rispettivi domini D = {d1, ..., dn}. Un constraint c
su X definito come c ⊆ d1 × ... × dn `e un sottoinsieme del
prodotto cartesiano dei domini.
CSP:
un CSP `e una tripla P = X, D, C dove:
X: rappresenta l’insieme delle variabili {x1, ..., xn}
D: rappresenta l’insieme dei domini necessariamente non
vuoti {d1, ..., dn} associati univocamente alle variabili.
C: rappresenta l’insieme dei vincoli sulle variabili X.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Risolvere un CSP
L’obbiettivo `e trovare una o pi`u soluzioni ammissibili.
Soluzione:
Una soluzione `e un’assegnamento delle variabili che soddisfa tutti i
vincoli del CSP.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Arc e Bound consistency
L’operazione di consistency rimuove dai domini delle variabili
associate ad un constraint valori che sicuramente non portano a
una soluzione.
Arc consistency
Analizza ogni valore del
dominio;
E’ pi`u costosa;
Elimina valori che non
portano a soluzione.
Bound consistency
Analizza solo i valori agli
estremi del dominio.
E’ meno costosa;
Elimina solo i valori agli
estremi del dominio che non
portano a soluzione.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Introduzione a CUDA
CUDA:
Architettura general purpose per il
parallel computing;
Sfrutta il motore di calcolo delle
GPU per risolvere problemi;
Utilizza blocchi e thread per il
parallelismo;
Le funzioni parallele sono
denominate Kernel.
Figura:
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Parallelismo dinamico
Parallelismo dinamico:
Estensione al modello di
programmazione CUDA:
Permette ai Kernel di essere
invocati direttamente della GPU;
Minor comunicazione CPU → GPU
e viceversa;
Maggior efficienza e flessibilit`a.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
iNVIDIOSO
Si tratta di un CSP solver:
Sperimentale;
Ancora in fase di sviluppo;
Con supporto all’architettura CUDA.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
La rappresentazione dei domini in iNVIDIOSO
I domini sono rappresentati secondo due modalit`a:
Bound rapresentation: le variabili i cui domini hanno una
differenza tra il minimo e il massimo elemento di almeno 256
sono implementati come una coppia di valori denominati
Bound;
Bitmask rapresentation: altrimenti sono implementati
mediante una bitmask composta da 8 interi a 32 bit, dove
ognuno di questi se impostato a 1 rappresenta un elemento
presente nel dominio.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Obiettivi della tesi
Ideare un algoritmo parallelo efficiente per il vincolo table;
Integrarlo sul solver;
Dimostrare l’effettiva possibilit`a di propagare i vincoli in
parallelo.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Il Table Constraint
Si tratta di un constraint estensionale definito elencando
esplicitamente una lista di n tuple di valori permessi per le variabili
nel suo scope.
Esempio: table([X1, X2, X3], [ 1, 2, 3 , 4, 5, 6 , 7, 8, 9 ]) con
D1, D2 e D3 fissati a [1, ..., 10]. La tabella associata al vincolo
pu`o quindi essere vista come:
X1 X2 X3
t1 1 2 3
t2 4 5 6
t3 7 8 9
Dopo il filtering: D1 = {1, 4, 7}, D2 = {2, 5, 8} e D3 = {3, 6, 9}
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
L’algoritmo di consistenza sequenziale
L’algoritmo di consistenza `e stato innanzitutto pensato per
un’esecuzione sequenziale su CPU e in particolare vuole sfruttare la
rappresentazione dei domini fornita dal solver.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Bound consistency sequenziale per una variabile
Nel caso di esecuzione su domini con rappresentazione tramite
coppia di bound viene eseguita la consistenza per la variabile dello
scope selezionata solo sul lower e sull’upper bound.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Arc consistency sequenziale per una variabile
Nel caso di esecuzione su domini con rappresentazione tramite
bitmask viene eseguita la consistenza per la variabile dello scope
selezionata su ogni elemento del dominio.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Schema di implementazione con multithreading su CUDA
La prima implementazione fa utilizzo di un solo blocco con 256
thread in esecuzione parallela.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Bound consistency con multithreading
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Arc consistency con multithreading
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Risultati ottenuti con il multithreading su CUDA(I)
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Risultati ottenuti con il multithreading su CUDA(II)
L’andamento dovrebbe essere a tempo costante parallelo;
Non accade perch`e un thread si occupa di un valore del
dominio, che pu`o essere associato a molte tuple;
Nel test il numero di queste tuple per`o era lineare rispetto alla
dimensione della table.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Schema dell’implementazione con il parallelismo dinamico
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Consistency con il parallelismo dinamico
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Confronto tra le due implementazioni parallele
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Lavori futuri
Integrazione dei vincoli estensionali sul parser di iNVIDIOSO;
Integrazione del parallelismo dinamico su iNVIDIOSO;
Modifica dell’algoritmo di ordinamento con un mergesort
parallelo;
Bilanciamento del lavoro tra i thread in caso di distribuzione
non uniforme dei valori nelle tuple.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Conclusioni
Gli obiettivi inizialmente proposti sono stati raggiunti ed in
particolare:
La propagazione dei vincoli su GPU `e possibile;
L’algoritmo implementato(specie nel caso del parallelismo
dinamico) `e efficiente e filtra correttamente le soluzioni.
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based
Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint
Grazie per l’attenzione!
Tommaso Campari
Implementazione di un vincolo table su un CSP solver GPU-based

More Related Content

Viewers also liked

Leveraging social relevance: Using social networks to enhance literature acce...
Leveraging social relevance: Using social networks to enhance literature acce...Leveraging social relevance: Using social networks to enhance literature acce...
Leveraging social relevance: Using social networks to enhance literature acce...
Lamjed Ben Jabeur
 

Viewers also liked (9)

Parallel Implementation of K Means Clustering on CUDA
Parallel Implementation of K Means Clustering on CUDAParallel Implementation of K Means Clustering on CUDA
Parallel Implementation of K Means Clustering on CUDA
 
ICISA 2010 Conference Presentation
ICISA 2010 Conference PresentationICISA 2010 Conference Presentation
ICISA 2010 Conference Presentation
 
GPGPU programming with CUDA
GPGPU programming with CUDAGPGPU programming with CUDA
GPGPU programming with CUDA
 
Classroom scheduler update
Classroom scheduler updateClassroom scheduler update
Classroom scheduler update
 
Thanatos
ThanatosThanatos
Thanatos
 
Leveraging social relevance: Using social networks to enhance literature acce...
Leveraging social relevance: Using social networks to enhance literature acce...Leveraging social relevance: Using social networks to enhance literature acce...
Leveraging social relevance: Using social networks to enhance literature acce...
 
Programmation par contraintes
Programmation par contraintesProgrammation par contraintes
Programmation par contraintes
 
Gpu with cuda architecture
Gpu with cuda architectureGpu with cuda architecture
Gpu with cuda architecture
 
La programmation par contraintes avec Choco3 (Java)
La programmation par contraintes avec Choco3 (Java)La programmation par contraintes avec Choco3 (Java)
La programmation par contraintes avec Choco3 (Java)
 

Implementazione di un vincolo table su un CSP solver GPU-based

  • 1. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Implementazione di un vincolo table su un CSP solver GPU-based Tesi di Laurea Tommaso Campari 27 Ottobre 2016 - A.A. 2015-2016 Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 2. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Indice Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 3. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint I CSP: Constraint Satisfaction Problem Constraint: Sia X una sequenza finita di variabili X = {x1, ..., xn} con n > 0 con i rispettivi domini D = {d1, ..., dn}. Un constraint c su X definito come c ⊆ d1 × ... × dn `e un sottoinsieme del prodotto cartesiano dei domini. CSP: un CSP `e una tripla P = X, D, C dove: X: rappresenta l’insieme delle variabili {x1, ..., xn} D: rappresenta l’insieme dei domini necessariamente non vuoti {d1, ..., dn} associati univocamente alle variabili. C: rappresenta l’insieme dei vincoli sulle variabili X. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 4. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Risolvere un CSP L’obbiettivo `e trovare una o pi`u soluzioni ammissibili. Soluzione: Una soluzione `e un’assegnamento delle variabili che soddisfa tutti i vincoli del CSP. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 5. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Arc e Bound consistency L’operazione di consistency rimuove dai domini delle variabili associate ad un constraint valori che sicuramente non portano a una soluzione. Arc consistency Analizza ogni valore del dominio; E’ pi`u costosa; Elimina valori che non portano a soluzione. Bound consistency Analizza solo i valori agli estremi del dominio. E’ meno costosa; Elimina solo i valori agli estremi del dominio che non portano a soluzione. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 6. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Introduzione a CUDA CUDA: Architettura general purpose per il parallel computing; Sfrutta il motore di calcolo delle GPU per risolvere problemi; Utilizza blocchi e thread per il parallelismo; Le funzioni parallele sono denominate Kernel. Figura: Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 7. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Parallelismo dinamico Parallelismo dinamico: Estensione al modello di programmazione CUDA: Permette ai Kernel di essere invocati direttamente della GPU; Minor comunicazione CPU → GPU e viceversa; Maggior efficienza e flessibilit`a. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 8. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint iNVIDIOSO Si tratta di un CSP solver: Sperimentale; Ancora in fase di sviluppo; Con supporto all’architettura CUDA. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 9. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint La rappresentazione dei domini in iNVIDIOSO I domini sono rappresentati secondo due modalit`a: Bound rapresentation: le variabili i cui domini hanno una differenza tra il minimo e il massimo elemento di almeno 256 sono implementati come una coppia di valori denominati Bound; Bitmask rapresentation: altrimenti sono implementati mediante una bitmask composta da 8 interi a 32 bit, dove ognuno di questi se impostato a 1 rappresenta un elemento presente nel dominio. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 10. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Obiettivi della tesi Ideare un algoritmo parallelo efficiente per il vincolo table; Integrarlo sul solver; Dimostrare l’effettiva possibilit`a di propagare i vincoli in parallelo. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 11. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Il Table Constraint Si tratta di un constraint estensionale definito elencando esplicitamente una lista di n tuple di valori permessi per le variabili nel suo scope. Esempio: table([X1, X2, X3], [ 1, 2, 3 , 4, 5, 6 , 7, 8, 9 ]) con D1, D2 e D3 fissati a [1, ..., 10]. La tabella associata al vincolo pu`o quindi essere vista come: X1 X2 X3 t1 1 2 3 t2 4 5 6 t3 7 8 9 Dopo il filtering: D1 = {1, 4, 7}, D2 = {2, 5, 8} e D3 = {3, 6, 9} Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 12. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint L’algoritmo di consistenza sequenziale L’algoritmo di consistenza `e stato innanzitutto pensato per un’esecuzione sequenziale su CPU e in particolare vuole sfruttare la rappresentazione dei domini fornita dal solver. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 13. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Bound consistency sequenziale per una variabile Nel caso di esecuzione su domini con rappresentazione tramite coppia di bound viene eseguita la consistenza per la variabile dello scope selezionata solo sul lower e sull’upper bound. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 14. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Arc consistency sequenziale per una variabile Nel caso di esecuzione su domini con rappresentazione tramite bitmask viene eseguita la consistenza per la variabile dello scope selezionata su ogni elemento del dominio. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 15. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Schema di implementazione con multithreading su CUDA La prima implementazione fa utilizzo di un solo blocco con 256 thread in esecuzione parallela. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 16. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Bound consistency con multithreading Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 17. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Arc consistency con multithreading Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 18. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Risultati ottenuti con il multithreading su CUDA(I) Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 19. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Risultati ottenuti con il multithreading su CUDA(II) L’andamento dovrebbe essere a tempo costante parallelo; Non accade perch`e un thread si occupa di un valore del dominio, che pu`o essere associato a molte tuple; Nel test il numero di queste tuple per`o era lineare rispetto alla dimensione della table. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 20. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Schema dell’implementazione con il parallelismo dinamico Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 21. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Consistency con il parallelismo dinamico Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 22. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Confronto tra le due implementazioni parallele Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 23. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Lavori futuri Integrazione dei vincoli estensionali sul parser di iNVIDIOSO; Integrazione del parallelismo dinamico su iNVIDIOSO; Modifica dell’algoritmo di ordinamento con un mergesort parallelo; Bilanciamento del lavoro tra i thread in caso di distribuzione non uniforme dei valori nelle tuple. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 24. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Conclusioni Gli obiettivi inizialmente proposti sono stati raggiunti ed in particolare: La propagazione dei vincoli su GPU `e possibile; L’algoritmo implementato(specie nel caso del parallelismo dinamico) `e efficiente e filtra correttamente le soluzioni. Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based
  • 25. Introduzione ai CSP Introduzione a CUDA Il solver iNVIDIOSO Il Table Constraint Grazie per l’attenzione! Tommaso Campari Implementazione di un vincolo table su un CSP solver GPU-based