Accélération exponentielle dans la mémoire externe


15

Contexte

La mémoire externe, ou modèle DAM, définit le coût d'un algorithme par le nombre d'E / S qu'il exécute (essentiellement, le nombre d'échecs de cache). Ces temps d'exécution sont généralement donnés en termes de , la taille de la mémoire et , le nombre de mots qui peuvent être transférés en mémoire en même temps. Parfois, et sont utilisés pour et respectivement. B L Z B MMBLZBM

Par exemple, le tri nécessite un coût de et la multiplication de matrice naïve nécessite . Θ ( n 3 / B Θ(N/BlogM/BN/B)Θ(n3/BM)

Ce modèle est utilisé pour analyser « les algorithmes de cache-inconscients », qui n'ont pas connaissance de ou . Généralement, l'objectif est que l'algorithme sans cache fonctionne de manière optimale dans le modèle de mémoire externe; ce n'est pas toujours possible, comme dans le problème de permutation par exemple (montré dans Brodal, Faderberg 2003 ). Voir cet article écrit par Erik Demaine pour une explication supplémentaire des algorithmes sans cache, y compris des discussions sur le tri et la multiplication de matrice.MBM

Nous pouvons voir que le changement de provoque un accélération logarithmique pour le tri et un accélération polynomiale pour la multiplication matricielle. (Ce résultat est originaire de Hong, Kung 1981 et est antérieur à la fois à l'oubli du cache et à la formalisation du modèle de mémoire externe).M

Ma question est la suivante:

Y a-t-il un cas où l'accélération est exponentielle en ? Le temps d'exécution serait quelque chose comme . Je suis particulièrement intéressé par un algorithme ou une structure de données sans cache qui correspond à cette description, mais je serais heureux avec un algorithme / une structure de données sensible au cache ou même une borne inférieure la plus connue.f ( N , B ) / 2 O ( M )MF(N,B)/2O(M)

On suppose généralement dans la plupart des modèles que la taille du mot si est la taille d'entrée et clairement . Ensuite , un gain de vitesse de donne un polynôme en speedup . Cela me fait croire que si le problème que je recherche existe, il n'est pas polynomial. (Sinon, nous pouvons changer la taille du cache par une constante pour obtenir un nombre constant d'E / S, ce qui semble peu probable).N M > w 2 M Nw=Ω(JournalN)NM>w2MN


peut deviner, mais ? trouvé un cas donné comme accélération , suffisant? B p o l y l o g ( B )N=Bpolylog(B)
vzn

Ce doit être en termes de pour mes besoins, malheureusement. Je serais intéressé par la référence cependant. M
SamM

wikipedia sur les algorithmes inconscients du cache . fyi il y a une certaine subtilité dans cette notation des champs. p7 note de bas de page de Demaine dit dans ce domaine, est la taille du problème et parfois n = N / Bn est le nombre de blocs, "mais la notation minuscule semble être tombée en disgrâce". vous utilisez n ci-dessus et alternativement N apparemment les deux comme taille d'entrée. pensez que vous devriez au moins standardiser votre question. Nn=N/BnnN
vzn

Je l'ai édité pour plus de cohérence. est la taille de l'entrée, et n n'est utilisé que pour la multiplication matricielle car le temps d'exécution de ce problème est généralement défini en termes de matrice n × n (c'est-à-dire N = n 2 )Nnn×nN=n2
SamM

ne vois pas de cas de cela après avoir parcouru la littérature. peut-être qu'il n'y a pas une telle référence? peut-être y a-t-il lieu de penser qu'un tel algorithme pourrait être complexe et donc difficile à analyser théoriquement pour obtenir une telle accélération ...? ou peut-être faudrait-il inventer ...? ou peut-être que ce n'est pas possible? pourrait-on penser que l'accès aléatoire à la mémoire est le pire des cas? semble que l'augmentation de la vitesse est linéaire en pour ce cas ...? ou, peut-être qu'un modèle fractal d'accès à la mémoire est le pire des cas? cette ligne d'étude n'a qu'un peu plus d'une décennie ....M
vzn

Réponses:


3

Je ne suis pas sûr d'avoir compris la question. Mais il me semble que dans l'hypothèse où contient des problèmes nécessitant un temps exponentiel, ces problèmes satisferaient vos exigences, car si M est O ( log N ), vous auriez besoin d'un nombre exponentiel d'opérations d'E / S ( puisque vous ne pouvez pas "rester" dans le même bloc mémoire de taille O ( log N ) plus qu'un nombre polynomial d'étapes sans entrer dans un cycle) et si M = NPSPACEMO(logN)O(logN)M=Nvous n'auriez besoin que d'un nombre linéaire d'opérations d'E / S. De plus, concernant votre observation qu'un tel problème ne peut pas appartenir à , il est correct si l'accélération doit tenir pour des valeurs de M qui sont Ω ( N ) (car cela signifierait que nous avons un nombre exponentiel d'opérations). Mais si l'accélération ne s'applique qu'à des valeurs plus petites de M , je pense intuitivement que ce n'est pas vrai, car je pense qu'il devrait être possible de concevoir un problème qui est en fait la concaténation de petits problèmes de taille O ( log N ) nécessitant chacun une exponentielle temps dans sa propre taille, et un nombre exponentiel d'opérations d'E / S (c'est-à-dire, p oPMΩ(N)MO(JournalN) , puisque p o l y ( N ) est exponentielle en O ( log N ) ). Danspratiqueje crois P S P A C E problèmes COMPLETES tels que T Q B F remplir votre condition.poly(N)poly(N)O(JournalN)PSPUNECETQBF


J'ai bien peur de ne pas suivre certains de vos arguments. Si , tout problème dans la mémoire externe est trivial. Comme je l'ai mentionné, M = O ( log N ) est quelque peu stupide car cela signifie que la mémoire n'a qu'un nombre constant de mots (possible mais pas comment la mémoire externe est généralement examinée). Je vois ce que vous dites qu'il y a eu un gain exponentiel, mais cela ne dit rien sur les valeurs intermédiaires. Par exemple, la partition optimale dans la mémoire externe est le minimum de deux termes (essentiellement si tout tient dans la mémoire, nous faisons quelque chose de complètement différent que si ce n'est pas le cas). Pouvez-vous exclure cela? M=Ω(N)M=O(JournalN)
SamM

1
Je ne comprends pas pourquoi tout problème dans la mémoire externe est trivial si . Si M = N / 2 et que l'algorithme prend un temps exponentiel, vous pourriez être obligé d'échanger d'avant en arrière entre (pour ainsi dire) les deux moitiés de la mémoire un nombre exponentiel de fois. M=Ω(N)M=N/2
user8477

Ah, bien sûr, vous avez raison sur le fait que le facteur constant est important. Cela a du sens; c'est certainement un bon point de départ.
SamM

Je n'ai aucun argument pour les valeurs intermédiaires. À un niveau très superficiel, je suppose que certains algorithmes de retour en arrière auraient une dépendance exponentielle de la taille de la mémoire car des opérations d'E / S seraient nécessaires à des nœuds de profondeur inférieure dans l'arborescence de recherche. Cette dépendance s'appliquerait aux valeurs intermédiaires. Cela ne dit rien sur la complexité inhérente du problème, bien sûr. De plus, si vous avez , l'argument de pigeonhole (cycle) donné ci-dessus donnerait toujours un gain de T ( N ) / 2 MT ( N ) est la complexité temporelle du problème.M=ω(JournalN)T(N)/2MT(N)
user8477

-4

cette question semble virer vers la terra incognita, c'est-à-dire un territoire inexploré. après quelques réflexions et critiques, voici quelques réflexions / idées sur cette question apparemment très difficile / subtile qui, espérons-le, sera intelligente mais ne sont pas censées être définitives.

Demain qui vous citez écrit, "l'idée principale [des algorithmes de cache inconscients] est simple: concevoir des algorithmes de mémoire externe sans connaître et M. Mais cette idée simple a plusieurs conséquences étonnamment puissantes."BM

il semble également avoir des implications étonnamment subtiles. il semble difficile d'analyser ce modèle pour les comportements extrêmes et personne ne l'a fait jusqu'à présent. il y a quelques enquêtes et elles semblent pour l'instant étudier l'ensemble du domaine. ce n'est pas surprenant étant donné que le domaine n'a que ~ 1 décennie.

  • le modèle ne semble pas encore avoir été traduit sur les machines de Turing où une analyse plus stricte / formelle / théorique / générale / standard peut être possible. tout le concept de notation Big-Oh et ses implications et intuitions telles que la non-pertinence des constantes n'est pas nécessairement automatiquement transporté dans ce domaine des algorithmes inconscients du cache. par exemple, le modèle semble déjà fonctionner avec les constantes qui mesurent les tailles de mémoire exactes. il semble que le domaine ne dispose pas à ce jour d'un ensemble d'axiomes de base de sa dynamique.B,M

  • Les MT ont été inventés en 1936 par Turing et les théorèmes de la hiérarchie temps / espace de Hartmanis-Stearns (auxquels vous faites un peu allusion dans cette question) ont été découverts en 1965. C'est une remarquable ~ 3 décennies pourtant les théorèmes de la hiérarchie temps / espace sont maintenant considérés quelque peu élémentaire et enseigné dans les classes de premier cycle. il ne semble pas encore y avoir de théorèmes de hiérarchie correspondants établis dans ce modèle, et comment le faire n'est pas un problème trivial. ce modèle semble en fait avoir plus de "pièces mobiles" que la machine Turing standard (qui a déjà une dynamique assez diaboliquement complexe), c'est-à-dire comme une machine Turing augmentée.

  • une autre idée est de convertir ce modèle de mémoire externe en MT d'une manière ou d'une autre, ce qui ne semble pas apparaître à nouveau dans la littérature / les enquêtes sur les algorithmes inconscients du cache, et peut-être voir comment les théorèmes de la hiérarchie Hartmanis-Stearns pourraient se traduire. il semble se rapporter à une TM à deux bandes où une bande est de taille «M» et l'autre bande est infinie, et les blocs sont transférés vers «M» dans les tailles de «B». mais aussi, une difficulté ici est qu'il s'agit davantage d'un modèle RAM que du modèle Turing qui utilise un accès séquentiel à la bande. d'autre part, cela pourrait se heurter à des subtilités associées à des conversions entre des MT simples et multitapes .

  • suggèrent d'attaquer ce problème de manière empirique avec des simulations, ce sur quoi la littérature a tendance à se concentrer, par exemple, comme dans cette grande enquête de Kumar sur Cache algorithmes inconscients (2003). il existe de nombreux programmes et articles en ligne pour les simulations de cache et on pourrait éventuellement répondre à votre question sans une grande quantité de code, en utilisant quelques simplifications. une idée de base est de créer des algorithmes probabilistes qui accèdent aux zones de mémoire "proches" en fonction des probabilités. «à proximité» ici n'est pas nécessairement une mémoire contiguë, mais plutôt un algorithme qui sélectionne des pages de mémoire aléatoires (blocs) en fonction du suivi de ses propres pages les plus récemment consultées. suggérer d'utiliser des lois de puissancepour déterminer la probabilité de sélectionner des pages "proches" dans la liste "les plus récemment consultées". cela semble être l'aspect clé auquel les améliorations des performances basées sur le cache sont liées.

  • Voici un argument grossier basé sur «M» qui est fondamentalement une mesure de la «mémoire centrale» par rapport à la mémoire du disque. pour un algorithme, on s'attendrait à ce que la mémoire centrale augmente, on ne se rapproche [asymptotiquement] que d'une amélioration linéaire de la vitesse algorithmique, et l'ajout de "mémoire centrale" pour obtenir une augmentation super-linéaire de la vitesse de l'algorithme semble intuitivement presque comme dépasser la vitesse limite et "obtenir quelque chose pour rien". cependant, ne saisissez pas assez bien le modèle pour le prouver [mais apparemment personne d'autre non plus, y compris les autorités / fondateurs / experts].

  • cette littérature sur les algorithmes sans cache s'est concentrée sur les algorithmes P et n'a vu aucun cas d'analyse d'un algorithme non-P jusqu'à présent et peut-être aucun n'existe. cela pourrait être dû au fait que l'analyse est trop difficile! dans ce cas, les questions sur les comportements extrêmes peuvent rester sans réponse dans ce domaine à long terme.

  • il ne semble même pas intuitivement clair, ou peut-être encore du tout étudié, comment les "petits" algorithmes de complexité tels que dans L, ou les "gros" algorithmes tels que non-P (par exemple Expspace, etc.) se comportent dans ce modèle. le modèle mesure la localité de la mémoire, qui semble être fondamentalement différente, mais entrelacée avec les hiérarchies temporelles et spatiales.

  • il existe une mesure quelque peu obscure de la complexité de la machine de Turing appelée «complexité d'inversion» avec quelques études, résultats et articles qui pourraient être liés. Fondamentalement, le TM peut couvrir une certaine quantité de temps et d'espace, mais les inversions sont une mesure quelque peu indépendante de la tête de bande pendant le calcul. il semble que les «inversions élevées» pourraient être liées à la «localité à mémoire élevée» car dans les deux cas, la tête de bande a tendance à rester dans une région «plus petite» par rapport à se déplacer dans des régions plus grandes.

  • cette question et ce modèle me rappellent la loi d'Amdahls et soupçonnent qu'une sorte de loi similaire, encore inconnue, relative à la baisse des rendements ou des soldes / compromis pourrait être valable ou applicable dans ce domaine. raisonnement approximatif: la théorie des algorithmes inconscients du cache examine un équilibre / compromis entre une mémoire finie "locale" et un disque externe "infini" basé sur les coûts. il s'agit essentiellement de deux ressources qui se comportent "en parallèle" et il existe probablement une sorte de compromis optimal entre elles.


2
k

le modèle TM est le modèle de base du TCS et des "ponts thms" entre sa hiérarchie de complexité (temps / espace, classes de complexité de base telles que P / NP, etc.) avec des algorithmes de cache inconscients restant apparemment à cartographier. les modèles de mémoire externe et les modèles inconscients de cache associés tentent fondamentalement de modéliser les caractéristiques de performance du monde réel et la littérature ne s'intéresse pas jusqu'à présent à de plus grandes abstractions théoriques telles que posées par la question.
vzn
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.