sfondo
La memoria esterna, o modello DAM, definisce il costo di un algoritmo in base al numero di I / O che esegue (essenzialmente, il numero di errori nella cache). Questi tempi di esecuzione sono generalmente indicati in termini di , dimensione della memoria e , numero di parole che possono essere trasferite in memoria contemporaneamente. Talvolta e sono utilizzati per e rispettivamente.
Ad esempio, l'ordinamento richiede un costo di e la moltiplicazione della matrice ingenua richiede .
Questo modello è usato per analizzare "algoritmi di cache-oblivious", che non hanno la conoscenza di o . Generalmente l'obiettivo è che l'algoritmo ignaro della cache funzioni in modo ottimale nel modello di memoria esterna; questo non è sempre possibile, come ad esempio nel problema della permutazione (mostrato in Brodal, Faderberg 2003 ). Vedi questo articolo scritto da Erik Demaine per un'ulteriore spiegazione degli algoritmi ignari della cache, comprese le discussioni sull'ordinamento e sulla moltiplicazione delle matrici.M
Possiamo vedere che la modifica di provoca uno speedup logaritmico per l'ordinamento e uno speedup polinomiale per la moltiplicazione della matrice. (Questo risultato è originario di Hong, Kung 1981 e in realtà precede sia l'oblio della cache sia la formalizzazione del modello di memoria esterna).
La mia domanda è questa:
Esiste un caso in cui l'accelerazione è esponenziale in ? Il tempo di esecuzione sarebbe simile a . Sono particolarmente interessato a un algoritmo o a una struttura di dati ignari della cache che si adatta a questa descrizione, ma sarei felice con un algoritmo / struttura di dati consapevole della cache o anche un limite inferiore più noto.f ( N , B ) / 2 O ( M )
Nella maggior parte dei modelli si presume che la dimensione della parola se sia la dimensione di input e chiaramente . Poi un aumento di velocità di fornisce un aumento di velocità polinomio in . Questo mi fa credere che se il problema che sto cercando esiste, non è polinomiale. (Altrimenti possiamo modificare la dimensione della cache di una costante per ottenere un numero costante di I / O, il che sembra improbabile).N M > w 2 M N