LordOfRings

LordOfRings

Trovare gli anelli in una matrice sparsa, usando la GPU.

Il problema

In una matrice quasi vuota, dove il valore 1 disegna degli anelli, bisogna ricavare raggio e centro di ciascun anello e capire a quale appartiene ogni punto. Con tanti punti, farlo in modo ingenuo è lento.

Anelli individuati in una matrice sparsa

Cosa ho costruito

  1. 01

    Adattamento del cerchio

    Un algoritmo di Taubin semi-parallelo per stimare raggio e centro di ogni anello.

  2. 02

    Separare gli anelli

    Il teorema di Tolomeo sui quadrilateri inscritti in una circonferenza serve a distinguere i punti di anelli diversi.

  3. 03

    Calcolo su GPU

    Il modulo valuta raggio e centro di ogni anello con l'accelerazione della GPU; esiste anche una versione senza GPU.

  4. 04

    Documentazione

    Il progetto ha una documentazione con tutorial.

  • Il mio ruolo

    Progetto universitario sviluppato in collaborazione: il repository è pubblicato sul profilo GitHub di Sara-a-r.

  • Tecnologie

    Python · CUDA · GPU · documentazione online

Portare un algoritmo sulla GPU obbliga a pensarlo in modo diverso, in parallelo fin dall'inizio. Ho imparato a misurare prima di ottimizzare e a tenere una versione semplice di riferimento con cui confrontare i risultati.

Cosa ho imparato

Un calcolo numerico lento

Scrivimi il problema: spesso conviene cambiare l'algoritmo prima dell'hardware.

Scrivimi