Aceleración exponencial en memoria externa

15

Antecedentes

La memoria externa, o modelo DAM, define el costo de un algoritmo por el número de E / S que realiza (esencialmente, el número de errores de caché). Estos tiempos de ejecución generalmente se dan en términos de METRO , el tamaño de la memoria y si , el número de palabras que se pueden transferir a la memoria al mismo tiempo. A veces, L y Z se usan para si y METRO respectivamente.

Por ejemplo, la clasificación requiere un costo de Θ(norte/ /siIniciar sesiónMETRO/ /sinorte/ /si) y la multiplicación de matriz ingenua requiere . Θ(norte3/ /siMETRO)

Este modelo se utiliza para analizar "algoritmos de caché-ajeno", que no tienen conocimiento de o M . En general, el objetivo es que el algoritmo ajeno al caché funcione de manera óptima en el modelo de memoria externa; esto no siempre es posible, como en el problema de permutación, por ejemplo (se muestra en Brodal, Faderberg 2003 ). Consulte este artículo escrito por Erik Demaine para obtener una explicación más detallada de los algoritmos ajenos a la memoria caché, incluidas las discusiones sobre la clasificación y la multiplicación de matrices.siMETRO

Podemos ver que cambiar causa una aceleración logarítmica para la clasificación y una aceleración polinómica para la multiplicación de matrices. (Este resultado es originario de Hong, Kung 1981 y en realidad es anterior tanto al olvido de la memoria caché como a la formalización del modelo de memoria externa).METRO

Mi pregunta es esta:

¿Hay algún caso en el que la aceleración sea exponencial en ? El tiempo de ejecución sería algo así como f ( N , B ) / 2 O ( M ) . Estoy particularmente interesado en un algoritmo ajeno al caché o estructura de datos que se ajuste a esta descripción, pero estaría contento con un algoritmo / estructura de datos compatible con el caché o incluso un límite inferior más conocido.METROF(norte,si)/ /2O(METRO)

Generalmente se supone en la mayoría de los modelos que el tamaño de la palabra si N es el tamaño de entrada y claramente M > w . A continuación, un aumento de velocidad de 2 M da una aceleración polinomio en N . Esto me hace creer que si el problema que estoy buscando existe, no es polinómico. (De lo contrario, podemos cambiar el tamaño de la memoria caché por una constante para obtener un número constante de E / S, lo que parece poco probable).w=Ω(Iniciar sesiónnorte)norteMETRO>w2METROnorte

SamM
fuente
puede adivinar, pero ? encontró un caso dado como aceleración B p o l y l o g ( B ) , suficiente? N=Bpolylog(B)
vzn
Desafortunadamente, tiene que ser en términos de para mis propósitos. Sin embargo, me interesaría la referencia. METRO
SamM
Wikipedia en caché algoritmos ajenos . Para su información, hay cierta sutileza en esta notación de campos. La nota al pie de página p7 de Demaine dice en esta área, es el tamaño del problema y, a veces, n = N / B donde n es el número de bloques, "pero la notación en minúscula parece haber caído en desgracia". usa n arriba y, alternativamente, N aparentemente ambos como tamaño de entrada. cree que al menos debería estandarizar en su pregunta. Nn=N/Bnnnorte
vzn
Lo edité por coherencia. es el tamaño de la entrada, y n solo se usa para la multiplicación de matrices porque el tiempo de ejecución para ese problema generalmente se define en términos de una matriz n × n (es decir, N = n 2 )nortenortenorte×nortenorte=norte2
SamM
No veo casos de esto después de escanear la literatura. tal vez no hay tal referencia? ¿Tal vez exista algún caso de que cualquier algoritmo de este tipo pueda ser complejo y, por lo tanto, difícil de analizar teóricamente para obtener tal aceleración ...? o tal vez tendría que ser inventado ...? o tal vez no es posible? ¿Podría haber una idea de que el acceso aleatorio a la memoria es el peor de los casos posible? Parece que el aumento de velocidad es lineal en para ese caso ...? ¿O quizás algún patrón fractal de acceso a la memoria es el peor de los casos? esta línea de estudio es sólo un poco más de una década de antigüedad ....METRO
VZN

Respuestas:

3

No estoy seguro de haber entendido la pregunta. Pero me parece que bajo el supuesto de que contiene problemas que requieren tiempo exponencial, dichos problemas cumplirían con sus requisitos, ya que si M es O ( log N ) necesitaría un número exponencial de operaciones de E / S ( ya que no puede "permanecer" en el mismo bloque de memoria de tamaño O ( log N ) más que un número polinómico de pasos sin entrar en un ciclo) y si M = NPAGSPAGUNCmiMETROO(Iniciar sesiónnorte)O(Iniciar sesiónnorte)METRO=nortesolo necesitaría un número lineal de operaciones de E / S. Además, con respecto a su observación de que dicho problema no puede pertenecer a , es correcto si la aceleración debe mantenerse para valores de M que son Ω ( N ) (ya que significaría que tenemos un número exponencial de operaciones). Pero si la aceleración solo se aplica a valores más pequeños de M , intuitivamente creo que esto no es cierto, porque creo que debería ser posible diseñar un problema que de hecho sea la concatenación de problemas más pequeños de tamaño O ( log N ), cada uno de los cuales requiere exponencial tiempo en su propio tamaño y un número exponencial de operaciones de E / S (es decir, p oPAGMETROΩ(norte)METROO(Iniciar sesiónnorte) , ya que p o l y ( N ) es exponencial en O ( log N ) ). En la práctica, creo que P S P A C E: problemas completos como T Q B F cumplen su condición.pagoly(norte)pagoly(norte)O(Iniciar sesiónnorte)PAGSPAGUNCmiTQsiF

usuario8477
fuente
Me temo que no sigo algunos de sus argumentos. Si , cualquier problema en la memoria externa es trivial. Como mencioné, M = O ( log N )M=Ω(N)M=O(logN) es algo tonto, ya que eso significa que la memoria solo tiene un número constante de palabras (posible pero no cómo se examina generalmente la memoria externa). Veo lo que está diciendo que hubo una ganancia exponencial, pero eso no dice nada sobre los valores intermedios. Por ejemplo, la Partición óptima en la memoria externa es el mínimo de dos términos (esencialmente, si todo encaja en la memoria, hacemos algo completamente diferente de si no lo hace). ¿Puedes descartar eso?
SamM
1
No entiendo por qué cualquier problema en la memoria externa es trivial si . Si M = N / 2 y el algoritmo toma tiempo exponencial, es posible que se vea obligado a intercambiar (por así decirlo) las dos mitades de la memoria un número exponencial de veces. M=Ω(N)M=N/2
user8477
Ah, por supuesto, tienes razón acerca de que el factor constante es importante. Eso tiene mucho sentido; Este es ciertamente un buen punto de partida.
SamM
No tengo ningún argumento para los valores intermedios. A un nivel muy superficial, supongo que algunos algoritmos de retroceso tendrían una dependencia exponencial en el tamaño de la memoria porque se requerirían operaciones de E / S en nodos de menor profundidad en el árbol de búsqueda. Esta dependencia se aplicaría a los valores intermedios. Esto no dice nada sobre la complejidad inherente del problema, por supuesto. Además, si tiene , el argumento de casillero (ciclismo) dado anteriormente aún generaría una ganancia de T ( N ) / 2 M donde T ( N ) es la complejidad temporal del problema.METRO=ω(Iniciar sesiónnorte)T(norte)/ /2METROT(norte)
user8477
-4

esta pregunta parece desviarse hacia terra incógnita, es decir, territorio inexplorado. Después de pensar y repasar aquí, hay algunos pensamientos / ideas sobre esta pregunta aparentemente muy difícil / sutil que con suerte será inteligente pero no está destinada a ser definitiva.

Demain a quien usted cita escribe, "la idea principal [de los algoritmos ajenos a la memoria caché] es simple: diseñar algoritmos de memoria externa sin conocer y M. Pero esta idea simple tiene varias consecuencias sorprendentemente poderosas".siMETRO

También parece tener implicaciones sorprendentemente sutiles. Parece difícil analizar este modelo para el comportamiento extremo y parece que nadie ha hecho esto hasta ahora. hay algunas encuestas y hasta ahora parecen encuestar todo el campo. Esto no es sorprendente dado que el campo tiene solo ~ 1 década de antigüedad.

  • El modelo no parece haber sido traducido a las máquinas de Turing aún donde es posible un análisis más estricto / formal / teórico / general / estándar. Todo el concepto de notación Big-Oh y sus implicaciones e intuiciones, como la irrelevancia de las constantes, no necesariamente se lleva automáticamente en esta área de algoritmos ajenos a la memoria caché. por ejemplo, el modelo ya parece estar funcionando con las constantes que miden tamaños de memoria exactos. parece que el campo no tiene un conjunto de axiomas básicos de su dinámica hasta el momento.si,METRO

  • Las TM fueron inventadas en 1936 por Turing y los teoremas de la jerarquía de tiempo / espacio de Hartmanis-Stearns (a los que alude en cierta medida en esta pregunta) fueron descubiertos en 1965. Eso es un notable ~ 3 décadas, pero los teoremas de la jerarquía de tiempo / espacio ahora se consideran algo primaria y enseñada en clases de pregrado. todavía no parece haber teoremas de jerarquía correspondientes establecidos en este modelo, y cómo hacerlo no es un problema trivial. Este modelo en realidad parece tener más "partes móviles" que la máquina estándar de Turing (que ya tiene una dinámica bastante compleja), es decir, es como una máquina de Turing aumentada.

  • Otra idea es convertir este modelo de memoria externa en TM de alguna manera, lo que de nuevo no parece aparecer en la literatura / encuestas sobre algoritmos ajenos a la memoria caché, y tal vez ver cómo se podrían traducir los teoremas de la jerarquía de Hartmanis-Stearns. parece relacionarse con una TM de dos cintas donde una cinta tiene el tamaño 'M' y la otra cinta es infinita, y los bloques se transfieren a 'M' en tamaños de 'B'. pero también, una dificultad aquí es que se trata más de un modelo de RAM que del modelo de Turing que usa acceso secuencial a la cinta. Por otro lado, esto podría toparse con sutilezas asociadas con conversiones entre TM simples y multitapas .

  • sugiero atacar este problema empíricamente con simulaciones, que es donde la literatura tiende a centrarse, por ejemplo, como en esta gran encuesta de Kumar sobre algoritmos ajenos a la caché (2003). Hay muchos programas y documentos en línea para simulaciones de caché y uno podría responder a su pregunta sin una gran cantidad de código, utilizando algunas simplificaciones. Una idea básica es crear algoritmos probabilísticos que accedan a áreas "cercanas" de memoria basadas en probabilidades. "cerca" aquí no es necesariamente una memoria contigua, sino un algoritmo que selecciona páginas (bloques) de memoria aleatorias basadas en el seguimiento de sus propias páginas a las que se accedió más recientemente. sugiero usar leyes de poderpara determinar la probabilidad de seleccionar páginas "cercanas" en la lista de "acceso más reciente". Este parece ser el aspecto clave con el que están relacionadas las mejoras de rendimiento basadas en caché.

  • Aquí hay un argumento aproximado basado en 'M' que es básicamente una medida de "memoria central" versus memoria de disco. para un algoritmo, uno esperaría que a medida que aumenta la memoria central, uno solo se acerque [asintóticamente] a una mejora lineal en la velocidad algorítmica, y agregar "memoria central" para obtener cualquier aumento superlineal en la velocidad del algoritmo parece intuitivamente casi como exceder la velocidad límite y "conseguir algo por nada". sin embargo, no comprenda el modelo lo suficientemente bien como para probar esto [pero aparentemente nadie más lo ha hecho, incluidas las autoridades / fundadores / expertos].

  • Esta literatura sobre algoritmos ajenos a la memoria caché se ha centrado en los algoritmos P y no ha visto ningún caso en absoluto de un análisis de un algoritmo no P hasta ahora y tal vez no exista ninguno. ¡Esto podría deberse a que el análisis es demasiado difícil! en cuyo caso, las preguntas sobre el comportamiento extremo pueden quedar sin respuesta en este campo a largo plazo.

  • ni siquiera parece intuitivamente claro, o posiblemente estudiado todavía, acerca de cómo se comportan en este modelo los algoritmos de complejidad "pequeños" como en L, o los algoritmos "grandes" como no P (por ejemplo, Expspace, etc.). El modelo mide la localidad de la memoria, que parece ser fundamentalmente diferente, pero entrelazada con las jerarquías de tiempo y espacio.

  • Hay una medida algo oscura de la complejidad de la máquina de Turing llamada "complejidad de inversión" con algunos estudios, resultados y documentos que podrían estar relacionados. Básicamente, el TM puede cubrir una cierta cantidad de tiempo y espacio, pero las reversiones son una medida algo independiente del cabezal de la cinta durante el cálculo. parece que las "altas reversiones" podrían estar relacionadas con la "localidad de alta memoria" porque en ambos casos el cabezal de la cinta tiende a permanecer en una región "más pequeña" en lugar de moverse a regiones más grandes.

  • Esta pregunta y modelo me recuerdan la ley de Amdahls y sospecho que algún tipo de ley similar aún no descubierta relacionada con la disminución de los rendimientos o saldos / compensaciones podría ser válida o aplicable en esta área. razonamiento aproximado: la teoría del algoritmo ajeno a la memoria caché está buscando un equilibrio / compensación entre una memoria "local" finita y un disco "infinito" externo basado en el costo. Estos son básicamente dos recursos que se comportan "en paralelo" y es probable que exista algún tipo de compensación óptima entre ellos.

vzn
fuente
2
k
El modelo TM es el modelo básico de TCS y "puente thms" entre su jerarquía de complejidad (tiempo / espacio, clases de complejidad básica como P / NP, etc.) con algoritmos ajenos a la memoria caché que aparentemente no se han mapeado. Los modelos de memoria externa y los modelos olvidados de caché relacionados están básicamente intentando modelar características de rendimiento del mundo real y la literatura no está tan interesada en mayores abstracciones teóricas como las formuladas por la pregunta.
vzn