Prevedere i tempi di autonomia per una densa algebra lineare


9

Vorrei prevedere i tempi di autonomia per operazioni di algebra lineare densa su un'architettura specifica utilizzando una libreria specifica. Vorrei imparare un modello che approssima la funzione

Fop::dimensioni di input runtime

per operazioni come moltiplicare matrice, aggiungere elementi, risolvere triangolare, ecc.

Ho il sospetto che questi runtime siano principalmente prevedibili a causa della regolarità delle operazioni una volta superate le dimensioni del problema che si adattano comodamente alla cache.

Domande:

  1. Questa ipotesi è realistica? È probabile che la funzione di runtime sia quasi deterministica?
  2. Posso presumere che questa funzione sarà polinomiale nelle dimensioni degli ingressi? (cioè mi aspetto che la matrice densa si moltiplichi per assomigliare a per e un coefficiente scalare)αn×k×mAnk×Bkmα
  3. Esiste un lavoro preesistente su questo da qualche parte?
  4. Il mio piano attuale è di fare la regressione dei minimi quadrati con un regolarizzatore . Altri suggerimenti?L1

Modifica: per essere chiari, cerco runtime, non FLOP o qualsiasi altra metrica delle prestazioni comune. Sono disposto a limitarmi a una particolare architettura.

Risposte:


10

Di recente ho lavorato esattamente su questo argomento. Potresti dare un'occhiata al nostro documento: http://arxiv.org/abs/1209.2364 .

Perché sei interessato alla previsione di runtime delle routine di algebra lineare? Intendi utilizzare il modello per un determinato scopo?


Grazie per il link Darò un'occhiata. Sono interessato a questo perché sospetto lo stesso motivo per cui lo sei. Selezione e programmazione automatizzata dell'algoritmo per le espressioni di matrice. In questo dominio altamente regolare e prevedibile dovrebbero essere possibili molti problemi altrimenti impossibili.
MRocklin,

6

C'è un sacco di lavoro preesistente. La maggior parte degli sviluppatori di librerie di algebra lineari pubblica risultati in termini di prestazioni in virgola mobile che possono essere convertiti in tempi di esecuzione.

Googling per "prestazioni DGEMM", ad esempio, produce quanto segue: http://math-atlas.sourceforge.net/timing/3_5_10/index.html .

In generale, puoi aspettarti che le risposte non siano fluide. Ci saranno salti o picchi nelle vicinanze di determinate dimensioni del problema (che si riferiscono alle dimensioni della cache). Dovresti anche aspettarti altipiani nelle tariffe e, quindi, regioni lineari per una vasta gamma di dimensioni del problema. Non mi aspetto che gli adattamenti polinomiali siano molto utili.

Dato un ampio sforzo di benchmarking, potrebbe essere più facile tabulare i risultati e interpolare se necessario. Qual è il tuo obiettivo?


1
Un plateau flop / s DGEMMindica una regione perché è la velocità con cui i flop aumentano con la dimensione del problema. Concordo sul fatto che un adattamento a tratti dovrebbe essere molto meglio del tentativo di adattare un singolo polinomio. n3
Jed Brown,

La conversione dei flop in runtime è, secondo la mia esperienza, difficile. Nel mio caso mi interessa davvero solo l'autonomia. Sto testando la fattibilità della pianificazione statica.
MRocklin,

Nella mia esperienza, picchi / plateau si verificano solo per problemi di piccole dimensioni. Una volta usciti oltre la cache, le cose sono abbastanza lisce. Concordo sul fatto che l'aggiunta di funzioni a tratti probabilmente migliorerebbe l'adattamento.
MRocklin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.