Accelerazione esponenziale nella memoria esterna


15

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 M , dimensione della memoria e B , numero di parole che possono essere trasferite in memoria contemporaneamente. Talvolta L e Z sono utilizzati per B e M rispettivamente.

Ad esempio, l'ordinamento richiede un costo di Θ(N/BlogM/BN/B) e la moltiplicazione della matrice ingenua richiede . Θ(n3/BM)

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.MBM

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).M

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 )Mf(N,B)/2O(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 Nw=Ω(logN)NM>w2MN


posso indovinare, ma ? hai trovato un caso dato come speedup B p o l y l o g ( B ) , sufficiente? N=Bpolylog(B)
vzn

Deve essere in termini di per i miei scopi, sfortunatamente. Sarei interessato al riferimento però. M
SamM,

Wikipedia su algoritmi ignari della cache . a proposito c'è qualche sottigliezza in questa notazione di campi. p7 la nota a piè di pagina di Demaine dice in quest'area, è la dimensione del problema e talvolta n = N / B dove n è il numero di blocchi, "ma la notazione in lettere minuscole sembra essere caduta in disgrazia". usi n sopra e in alternativa N apparentemente entrambi come dimensione di input. pensa che dovresti almeno standardizzare la tua domanda. Nn=N/BnnN
vzn

L'ho modificato per coerenza. è la dimensione dell'input e n viene utilizzato solo per la moltiplicazione della matrice perché il tempo di esecuzione per quel problema è generalmente definito in termini di una matrice n × n (cioè N = n 2 )Nnn×nN=n2
SamM

non vedo casi di questo dopo aver scansionato la letteratura. forse non esiste tale riferimento? forse c'è qualche caso da fare che un tale algoritmo potrebbe essere complesso e quindi difficile da analizzare teoricamente per ottenere un tale aumento di velocità ...? o forse dovrebbe essere inventato ...? o forse non è possibile? potrebbe esserci un'idea che l'accesso casuale alla memoria sia il caso peggiore possibile? sembra che l'aumento della velocità sia lineare in per quel caso ...? o forse un modello frattale di accesso alla memoria è il caso peggiore? questa linea di studio ha poco più di un decennio ....M
vzn

Risposte:


3

Non sono sicuro di aver capito la domanda. Ma mi sembra che supponendo che contenga problemi che richiedono tempo esponenziale, tali problemi soddisferebbero i vostri requisiti, poiché se M è O ( log N ) avreste bisogno di un numero esponenziale di operazioni I / O ( poiché non è possibile "rimanere" nello stesso blocco di memoria di dimensione O ( registro N ) più di un numero polinomiale di passi senza entrare in un ciclo) e se M = NPSPACEMO(logN)O(logN)M=Nsarebbe necessario solo un numero lineare di operazioni I / O. Inoltre, riguardo alla tua osservazione che un tale problema non può appartenere a , è corretto se l'accelerazione debba valere per valori di M che sono Ω ( N ) (poiché ciò significherebbe che abbiamo un numero esponenziale di operazioni). Ma se l'accelerazione si applica solo a valori più piccoli di M , intuitivamente credo che ciò non sia vero, perché ritengo che dovrebbe essere possibile progettare un problema che è in effetti la concatenazione di problemi minori di dimensione O ( log N ) che richiedono ciascuno esponenziale tempo nella sua dimensione e un numero esponenziale di operazioni di I / O (cioè, p oPMΩ(N)MO(logN) , poiché p o l y ( N ) è esponenziale in O ( log N ) ). In pratica Credo P S P A C E problemi -Complete quali T Q B F soddisfano la vostra condizione.poly(N)poly(N)O(logN)PSPACETQBF


Temo di non seguire alcuni dei tuoi argomenti. Se , qualsiasi problema nella memoria esterna è banale. Come ho già detto, M = O ( log N ) è piuttosto sciocco in quanto ciò significa che la memoria ha solo un numero costante di parole (possibile ma non come la memoria esterna viene generalmente esaminata). Vedo cosa stai dicendo che c'è stato un guadagno esponenziale, ma questo non dice nulla sui valori intermedi. Ad esempio, la partizione ottimale nella memoria esterna è il minimo di due termini (essenzialmente se tutto si adatta alla memoria facciamo qualcosa di completamente diverso se non lo fa). Puoi escluderlo? M=Ω(N)M=O(logN)
SamM

1
Non capisco perché qualsiasi problema nella memoria esterna sia banale se . Se M = N / 2 e l'algoritmo impiega, tempo esponenziale, potresti essere costretto a scambiare avanti e indietro tra (per così dire) le due metà della memoria un numero esponenziale di volte. M=Ω(N)M=N/2
user8477

Ah, certo, hai ragione sul fatto che il fattore costante sia importante. Questo ha molto senso; questo è sicuramente un buon punto di partenza.
SamM,

Non ho alcun argomento per i valori intermedi. A un livello molto superficiale, immagino che alcuni algoritmi di backtracking avrebbero una dipendenza esponenziale dalla dimensione della memoria perché sarebbero necessarie operazioni di I / O su nodi di profondità inferiore nella struttura di ricerca. Questa dipendenza si applicherebbe ai valori intermedi. Questo non dice nulla sulla complessità intrinseca del problema, ovviamente. Inoltre, se si dispone di , l'argomento pigeonhole (ciclismo) indicato sopra produrrebbe comunque un guadagno di T ( N ) / 2 M dove T ( N ) è la complessità temporale del problema.M=ω(logN)T(N)/2MT(N)
user8477

-4

questa domanda sembra virare in terra incognita, cioè territorio inesplorato. dopo aver riflettuto e esaminato qui ci sono alcuni pensieri / idee su questa domanda apparentemente molto difficile / sottile che si spera sia intelligente ma non intendono essere definitiva.

Diminuisci chi scrivi, "l'idea principale [di algoritmi ignari della cache] è semplice: progettare algoritmi di memoria esterna senza conoscere e M. Ma questa semplice idea ha diverse conseguenze sorprendentemente potenti."BM

sembra anche avere implicazioni sorprendentemente sottili. sembra difficile analizzare questo modello per comportamenti estremi e sembra che nessuno lo abbia fatto finora. ci sono alcuni sondaggi e sembrano sondare l'intero campo finora. questo non è sorprendente dato che il campo ha solo ~ 1 decennio.

  • il modello non sembra essere stato tradotto in macchine di Turing, ma dove è possibile un'analisi più rigorosa / formale / teorica / generale / standard. l'intero concetto della notazione Big-Oh e le sue implicazioni e intuizioni come l'irrilevanza delle costanti non necessariamente porta automaticamente in questa area di algoritmi ignari della cache. ad esempio il modello sembra già funzionare con le costanti che misurano le dimensioni esatte della memoria. sembra che il campo non abbia finora un insieme di assiomi di base della sua dinamica.B,M

  • Le TM sono state inventate nel 1936 da Turing e i teoremi della gerarchia tempo / spazio di Hartmanis-Stearns (di cui in qualche modo alludi in questa domanda) sono stati scoperti nel 1965. sono circa 3 decenni notevoli, ma i teoremi della gerarchia tempo / spazio sono ora considerati in qualche modo elementare e insegnato in classi universitarie. sembra che non ci siano ancora teoremi di gerarchia corrispondenti stabiliti in questo modello e come farlo non è un problema banale. questo modello sembra in realtà avere più "parti mobili" rispetto alla normale macchina di Turing (che ha già una dinamica piuttosto diabolicamente complessa), cioè è come una macchina di Turing aumentata.

  • un'altra idea è quella di convertire in qualche modo questo modello di memoria esterna in TM, che di nuovo non sembra comparire nella letteratura / sondaggi sugli algoritmi ignari della cache, e forse vedere come i teoremi della gerarchia di Hartmanis-Stearns potrebbero tradurre. sembra correlarsi a una TM a due nastri in cui un nastro ha la dimensione "M" e l'altro è infinito, e i blocchi vengono trasferiti a "M" nelle dimensioni di "B". ma anche qui una difficoltà è che si tratta più di un modello RAM che del modello Turing che utilizza l'accesso sequenziale al nastro. d'altro canto, ciò potrebbe tradursi in sottigliezze associate alle conversioni tra TM singole e multitape .

  • suggerisce di attaccare empiricamente questo problema con simulazioni su cui la letteratura tende a concentrarsi, ad esempio come in questo grande sondaggio di Kumar sugli algoritmi ignari della cache (2003). ci sono molti programmi e documenti online per simulazioni di cache e si potrebbe eventualmente rispondere alla tua domanda senza una grande quantità di codice, usando alcune semplificazioni. un'idea di base è quella di creare algoritmi probabilistici che accedano ad aree di memoria "vicine" in base alle probabilità. "vicino" qui non è necessariamente memoria contigua, ma invece un algoritmo che seleziona pagine di memoria casuali (blocchi) basate sul tenere traccia delle proprie pagine a cui si è avuto accesso più di recente. suggerire di utilizzare le leggi sul potereper determinare la probabilità di selezionare le pagine "vicine" nell'elenco "accesso più recente". questo sembra essere l'aspetto chiave a cui sono correlati i miglioramenti delle prestazioni basati sulla cache.

  • ecco un argomento approssimativo basato su 'M' che è fondamentalmente una misura della "memoria principale" rispetto alla memoria del disco. per un algoritmo, ci si aspetterebbe che all'aumentare della memoria del core, ci si avvicina [asintoticamente] a un miglioramento lineare della velocità algoritmica e l'aggiunta di "memoria del core" per ottenere un aumento super-lineare della velocità dell'algoritmo sembra intuitivamente quasi come superare la velocità limite e "ottenere qualcosa per niente". tuttavia, non afferrare il modello abbastanza bene per dimostrarlo [ma apparentemente nessun altro ha, comprese le autorità / i fondatori / gli esperti].

  • questa letteratura sull'algoritmo ignaro della cache si è concentrata sugli algoritmi P e finora non ha visto alcun caso di analisi di un algoritmo non-P e forse non esiste nessuno. questo potrebbe essere dovuto al fatto che l'analisi è troppo difficile! nel qual caso, le domande sul comportamento estremo potrebbero rimanere senza risposta in questo campo a lungo termine.

  • non sembra nemmeno intuitivamente chiaro, o forse ancora studiato, su come gli algoritmi di "piccola" complessità come in L, o algoritmi "grandi" come non-P (es. Expspace ecc.) si comportano in questo modello. il modello sta misurando la località della memoria, che sembra essere fondamentalmente diversa, ma intrecciata con le gerarchie temporali e spaziali.

  • esiste una misurazione alquanto oscura della complessità della macchina di Turing chiamata "complessità di inversione" con alcuni studi, risultati e documenti che potrebbero essere correlati. fondamentalmente il TM può coprire una certa quantità di tempo e spazio, ma le inversioni sono una misura in qualche modo indipendente della testina del nastro durante il calcolo. sembra che "inversioni elevate" potrebbero essere correlate a "località ad alta memoria" perché in entrambi i casi la testina del nastro tende a rimanere in una regione "più piccola" invece di spostarsi in regioni più grandi.

  • questa domanda e questo modello mi ricordano la legge di Amdahls e sospetto che una sorta di legge simile ancora sconosciuta relativa a rendimenti decrescenti o saldi / compromessi potrebbe essere o essere applicabile in questo settore. ragionamento approssimativo: la cache della teoria dell'algoritmo ignaro sta osservando un equilibrio / compromesso tra una memoria "locale" finita e un disco "infinito" esterno basato sui costi. si tratta fondamentalmente di due risorse che si comportano "in parallelo" e c'è probabilmente una sorta di compromesso ottimale tra di loro.


2
k

il modello TM è il modello base di TCS e "bridge thms" tra la sua gerarchia di complessità (tempo / spazio, classi di complessità di base come P / NP ecc.) con algoritmi ignari della cache che sembrano rimanere da mappare. i modelli di memoria esterna e i relativi modelli ignari della cache stanno sostanzialmente tentando di modellare le caratteristiche prestazionali del mondo reale e la letteratura non è finora interessata a maggiori astrazioni teoriche come quella posta dalla domanda.
dal
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.