Фон
Внешняя память, или модель DAM, определяет стоимость алгоритма по количеству операций ввода-вывода, которые он выполняет (по сути, по числу пропущенных кешей). Эти времена выполнения обычно даются в терминах , размера памяти и B , количества слов, которые могут быть переданы в память за один раз. Иногда L и Z используются для B и M соответственно.
Например, для сортировки требуется стоимость а для умножения наивной матрицы требуется Θ ( n 3 / B √.
Эта модель используется для анализа «алгоритмов кэш-забывчивый», которые не имеют знаний или M . Как правило, цель состоит в том, чтобы алгоритм, не обращающий внимания на кэш, работал оптимально в модели внешней памяти; это не всегда возможно, как, например, в задаче о перестановках (показано в Brodal, Faderberg 2003 ). Посмотрите эту статью Эрика Демейна для более подробного объяснения алгоритмов, не обращающих внимания на кэш, включая обсуждение сортировки и умножения матриц.
Мы можем видеть, что изменение вызывает логарифмическое ускорение для сортировки и полиномиальное ускорение для умножения матриц. (Этот результат родом из Гонконга, Кунга, 1981 г. и фактически предшествует забвению кеша и формализации модели внешней памяти).
У меня вопрос такой:
Есть ли случай, когда ускорение экспоненциально в ? Время работы будет что-то вроде f ( N , B ) / 2 O ( M ) . Я особенно интересуюсь алгоритмом или структурой данных, не учитывающей кэш, который подходит под это описание, но был бы доволен алгоритмом / структурой данных с учетом кэша или даже самой известной нижней границей.
В большинстве моделей обычно предполагается, что размер слова если N - это размер входного файла и ясно, что M > w . Тогда убыстрение 2 M дает полиномиальное ускорение в N . Это заставляет меня поверить, что если проблема, которую я ищу, существует, она не является полиномиальной. (В противном случае мы можем изменить размер кэша на константу, чтобы получить постоянное количество операций ввода-вывода, что маловероятно).
Ответы:
Я не уверен, что понял вопрос. Но мне кажется, что в предположении, что содержит проблемы, требующие экспоненциального времени, такие проблемы будут соответствовать вашим требованиям, поскольку, если M равно O ( log N ), вам потребуется экспоненциальное число операций ввода-вывода ( поскольку вы не можете «оставаться» в одном и том же блоке памяти размером O ( log N ) больше, чем полиномиальное количество шагов, не входя в цикл), и если M = NPSPACE M O(logN) O(logN) M=N вам потребуется только линейное количество операций ввода-вывода. Кроме того, что касается вашего наблюдения, что такая проблема не может принадлежать , это правильно, если ускорение должно выполняться для значений M, которые являются Ω ( N ) (поскольку это будет означать, что у нас экспоненциальное число операций). Но если ускорение применимо только к меньшим значениям M , интуитивно я полагаю, что это не так, потому что я чувствую, что должна быть возможность разработать проблему, которая на самом деле является объединением меньших задач размера O ( log N ), каждая из которых требует экспоненциального время в его собственный размер, и экспоненциального числа операций ввода / вывода (то есть, р öP M Ω(N) M O(logN) , так как р о л у ( Н ) является экспоненциальной в O ( журнал N ) ). На практике я считаю, что P S P A C E -полные проблемы, такие как T Q B F, удовлетворяют вашему условию.poly(N) poly(N) O(logN) PSPACE TQBF
источник
этот вопрос, кажется, переходит в Terra Incognita, то есть неизведанную территорию. после некоторого размышления и обзора вот некоторые мысли / идеи по этому, по-видимому, очень сложному / тонкому вопросу, который, будем надеяться, будет разумным, но не должен быть окончательным.
Оставайтесь на том, кого вы цитируете, пишет: «Основная идея [алгоритмов, не обращающих внимания на кэш], проста: разрабатывать алгоритмы с внешней памятью, не зная и M. Но эта простая идея имеет несколько удивительно мощных последствий».B M
он также имеет удивительно тонкие последствия. Кажется, трудно проанализировать эту модель на предмет экстремального поведения, и, похоже, до сих пор никто этого не делал. Есть некоторые опросы, и они, кажется, до сих пор опрашивают все поле. это не удивительно, учитывая, что области всего ~ 1 десятилетие.
ТМ были изобретены в 1936 году Тьюрингом, и теоремы о пространственно - временной иерархии Хартманиса-Стернса (на которые вы несколько ссылаетесь в этом вопросе) были открыты в 1965 году. Это замечательные ~ 3 десятилетия, хотя теоремы о пространственно-временной иерархии теперь считаются несколько элементарный и преподавал в бакалавриате. похоже, что в этой модели еще не установлены соответствующие теоремы об иерархии, и то, как это сделать, не является тривиальной проблемой. эта модель на самом деле, кажется, имеет больше «движущихся частей», чем стандартная машина Тьюринга (которая уже обладает довольно дьявольски сложной динамикой), то есть похожа на расширенную машину Тьюринга.
другая идея заключается в том, чтобы каким-то образом преобразовать эту модель внешней памяти в ТМ, что опять же не отражено в литературе / обзорах по алгоритмам забытого кэша, и, возможно, посмотреть, как можно перевести теоремы иерархии Хартманиса-Стернса. похоже, это относится к двум лентам ТМ, где одна лента имеет размер «М», а другая лента бесконечна, а блоки передаются в «М» с размерами «В». но также трудность заключается в том, что это скорее модель ОЗУ, чем модель Тьюринга, которая использует последовательный доступ к ленте. с другой стороны, это может натолкнуться на тонкости, связанные с преобразованиями между одиночными и многолучевыми ТМ .
Предложите эмпирически рассмотреть эту проблему с помощью симуляций, на которых, как правило, фокусируется литература, как, например, в этом большом обзоре Кумара о забывающих алгоритмах Cache (2003). Есть много программ и статей в Интернете для моделирования кэша, и можно было бы ответить на ваш вопрос без большого количества кода, используя некоторые упрощения. одна из основных идей заключается в создании вероятностных алгоритмов, которые получают доступ к «близлежащим» областям памяти на основе вероятностей. «поблизости» здесь не обязательно непрерывная память, а алгоритм, который выбирает случайные страницы памяти (блоки) на основе отслеживания своих последних страниц, к которым недавно обращались. предложить использовать законы властиопределить вероятность выбора «ближайших» страниц в списке «последних посещений». похоже, это ключевой аспект, с которым связаны улучшения производительности на основе кэша.
Вот грубый аргумент, основанный на «М», который в основном является мерой «памяти ядра» по сравнению с памятью диска. для алгоритма можно ожидать, что при увеличении памяти ядра можно лишь [асимптотически] приблизиться к линейному улучшению скорости алгоритма, и добавление «памяти ядра» для получения любого суперлинейного увеличения скорости алгоритма кажется интуитивно почти равным превышению скорости ограничить и «получить что-то даром». однако, не достаточно хорошо понимайте модель, чтобы доказать это [но, очевидно, никто другой не имеет, включая власти / учредителей / экспертов].
Эта литература по кэш-памяти, не обращающая внимания на кэш-память, была сосредоточена на P-алгоритмах и до сих пор не видела ни одного случая анализа не-P-алгоритма и, возможно, такого не существует. это может быть потому, что анализ слишком сложен! в этом случае вопросы об экстремальном поведении могут остаться без ответа в этой области в долгосрочной перспективе.
он даже не кажется интуитивно понятным или, возможно, вообще изученным, о том, как ведут себя в этой модели «малые» алгоритмы сложности, такие как в L, или «большие» алгоритмы, такие как не P (например, Expspace и т. д.). модель измеряет локальность памяти, которая, по-видимому, принципиально отличается, но тесно связана с иерархией времени и пространства.
есть несколько неясное измерение сложности машины Тьюринга, называемое «сложностью обращения», с некоторыми исследованиями, результатами и работами, которые могут быть связаны. в основном ТМ может охватывать определенное количество времени и пространства, но реверсы являются несколько независимым измерением головки ленты во время вычислений. Похоже, что «большие изменения» могут быть связаны с «высокой локальностью памяти», потому что в обоих случаях головка ленты имеет тенденцию оставаться в «меньшей» области по сравнению с перемещением в более крупные области.
этот вопрос и модель напоминают мне о законе Амдала и подозревают, что какой-то еще не обнаруженный аналогичный закон, связанный с уменьшением прибыли или сальдо / компромиссов, может иметь место или быть применимым в этой области. Грубые рассуждения: теория алгоритмов, не обращающая внимания на кеш, ищет баланс / компромисс между конечной «локальной» памятью и стоимостным внешним «бесконечным» диском. это в основном два ресурса, которые ведут себя «параллельно», и между ними, вероятно, существует какой-то оптимальный компромисс.
источник