Skip to content

Compitini - Cholesky Factorization 🚀 #15

Draft
ncvescera wants to merge 81 commits intomainfrom
compitini/cholesky
Draft

Compitini - Cholesky Factorization 🚀 #15
ncvescera wants to merge 81 commits intomainfrom
compitini/cholesky

Conversation

@ncvescera
Copy link
Member

Terminato Compitino sull'implementazione della Fattorizzazione di Cholesky.

  • Implementate le varie versioni possibili della fattorizzazione di Cholesky:
    • per Colonne (con JIT)
    • per Righe (con JIT)
    • per Diagonali (con JIT)
  • Implementato algoritmo di Eliminazione Gaussiana
  • Implementati algoritmi per testare il corretto funzionamento dell'Eliminazione Gaussiana e Fattorizzazione di Cholesky
  • Implementati algoritmi per la risoluzioni di Sistemi Lineari utilizzando sia Gauss che Cholesky
  • Implementati algoritmi per la verifica della soluzione di un Sistema Lienare
  • Confrontati tempi di esecuzione di Cholesky e Gauss (con e senza JIT)

CristianCosci and others added 30 commits October 14, 2022 18:06
Creata cartella Compitini per tenere tutti gli esercizi assegnati
durante le lezioni di teoria.
Creata la cartella Laboratorio per contenere gli
esercizi e gli script delle lezioni di laboratorio.
Aggiunto .gitignore per ignorare file compilati di python.
Creato modulo per la decomposizione di cholesky.
Creato un modulo python per controllare la
durata di esecuzione di una funzione.
Aggiunta una funzione che genera una matrice
Quadrata, Simmetrica e Definita Positiva.
- Aggiunto il codice di @F-a-b-r-i-z-i-o per la
risoluzione dei sistemi lineari.

- Creato modulo per la risoluzione dei sistemi lineari.

- Creata una funzione per testare se il
sistema lineare è stato risolto correttamente.

- Risolto un problema con Cholesky:
arrotondare a 2 cifre decimali causava la perdita di precisione
ed impediva la corretta verifica della
risoluzione del sistema.

Co-authored-by: F-A-B-R-I-Z-I-O <fabriziofagiolo18@gmail.com>
Aggiunta la parte di codice di @CristianCosci
per verificare che la decomposizione LL* sia corretta.
Ora viene ricalcolata la matrice A partendo da L.

Co-authored-by: Cristian <CristianCosci@users.noreply.github.com>
Migliorati print.
Cambiato nome alla funzione che controlla il risultato del sistema lineare:
da `check_solution` a `is_correct_solution`.
Aggiunta una funzione per generare casualmente la matrice A
e il vettore dei termini noti b.
Rinominato file che gestisce il tempo di esecuzione.
Ora il seed viene settato solo una volta all'inizio del programma.
Creata una funzione per risolvere un dato sistema lineare
che astrae da tutta l'implementazione.
Creata una funzione che prova a risolvere sistemi lineari sempre più grandi.
Creata una classe in gradi di gestire il comportamento verbose.
Rimossi import inutili in main.py
Aggiunta una gestione basilare dei parametri.
Per ora esiste solo il parametro --find_limit
che avvia la procedura per testare matrici di dimensione sempre crescente.
Rimosso codice ormai inutile

Co-authored-by: Cristian <CristianCosci@users.noreply.github.com>
Miglirata la funzione di cholesky per le colonne utilizzando la funzione di numpy.sum.
Creata una seconda funzione che utilizza il modulo numba per migliorare le prestazioni della funzione di cholesky per le colonne.
- Riorganizzato file delle funzioni di Cholesky.
- Risolto TODO.
- Create 3 funzioni per le varie implementazioni.
- Sarà possibile cambiare metodo da riga di comando.
(È predisposto, va solo implementato)
ncvescera and others added 21 commits October 24, 2022 17:10
- Aggiunta implementazione di @F-a-b-r-i-z-i-o dell'eliminazione Gaussiana.
- Testato algoritmo 👍

Co-authored-by: F-A-B-R-I-Z-I-O <fabriziofagiolo18@gmail.com>
Camiato nome ad un file per rendere più chiaro il suo contenuto.

cost_tester ➡️ tests
- Aggiunta la possibilità di utilizzare Gauss in simple_test
- C'è una variabile globale che permette di scegliere quale algoritmo utilizzare
- Aggiunto parametro a lina di comando per scegliere l'algoritmo da utilizzare
- Modificata funzione per risolvere i sistemi.
Ora accetta vari parametri opzionali e in base a cosa gli viene passato
risolve il sistema in modo diverso.
Risolto un problema che causava il crash del programma.
La funzione per risolvere il sistema veniva invocata con parametri sbagliati.

Co-authored-by: Cristian <CristianCosci@users.noreply.github.com>
Co-authored-by: Zecown <NicoloPosta@users.noreply.github.com>
Applicato tqdm all'implementazione di Gauss.

Co-authored-by: Cristian <CristianCosci@users.noreply.github.com>
Applicato tqdm all'algoritmo di Cholesky.

Co-authored-by: Cristian <CristianCosci@users.noreply.github.com>
Aggiunto tqdm alla risoluzione dei sistemi lineari.

Co-authored-by: Cristian <CristianCosci@users.noreply.github.com>
Rimosso import inutile in cholesky.py
Rimosso codice vecchio.
Ora simple test genera in automatico lui i dati.
Codice più comprensibile.
Scritta funzione per testare le performance dei 2 algoritmi.
Rimosso file inutile in tester.
Aggiunta la modalità verbose per stampare più informazioni se richiesto.
Cambiato level di logging minimo da DEBUG a INFO.
Aggiunta la possibilità di saltare i controlli iniziali
di cholesky per risparmiare tempo.
Aggiunta una funzione per salvare il risultato del benchmark in json.
- Effettuati alcuni test e salvato i risultati
- Creato uno script in bash per ripordurre i test (più o meno)
- Modificata la funzione che salva i dati dei test, ora non vengono salvate
le matrici dato che pesano troppo
ncvescera and others added 5 commits October 28, 2022 16:16
Rimosso cast inutile a float.
Aggiunti commenti.
Trovata una possibile soluzione ai problemi di approssimazione.
Sembra funzionare ...
Possibile Soluzione ai problemi di Approssimazione 🤔
Scritto il README con la rielaborazione dei dati ottenuti durante i test.
Vanno ricontrollati, forse le percentuali sono sbagliate.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants