Come progetto di tesi ho implementato un table constraint su un CSP solver, basato sull'architettura parallela CUDA, ancora in fase sperimentale.
As a thesis project I implemented a table constraint on a CSP solver, still experimental, based on a parallel CUDA architecture.
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