Аноним

Разработка высокоэффективных алгоритмов для крупномасштабных задач: различия между версиями

Материал из WEGA
м
Строка 40: Строка 40:


== Открытые вопросы ==
== Открытые вопросы ==
Все инструменты и техники разработки алгоритмов, созданные в последние годы, применимы к разработке высокоэффективных алгоритмов. Однако многие из этих инструментов требуют дальнейшей доработки. К примеру, техники программирования, обеспечивающие высокую эффективность использования кэша, являются ключом к высокой производительности, однако конкретные пути реализации пока не вполне ясны – главным образом из-за сложных машинно-зависимых проблем, таких как ограниченная ассоциативность, преобразование виртуальных адресов и все более многоуровневые иерархии высокопроизводительных компьютеров. основной вопрос заключается в том, можно ли найти простые модели в качестве основы для разработки алгоритмов. К примеру, в теории алгоритмы без явного задания параметров кэша [ ] эффективны на всех уровнях иерархии памяти, но на практике лишь немногие из них работают хорошо. Или, скажем, профилирование уже выполняемой программы представляет серьезную проблему в последовательной среде (любой инструмент профилирования меняет поведение наблюдаемого процесса), однако эти проблемы меркнут в сравнении с аналогичными проблемами, возникающими в параллельной или распределенной среде (к примеру, для измерения аппаратного ограничения пропускной способности может потребоваться участие оборудования в виде сетевых переключателей или по меньшей мере их перепрограммирование, что, безусловно, изменит их поведение). Разработка эффективных и переносимых алгоритмов для серийно выпускаемых многоядерных и многократноядерных процессоров представляет собой нерешенную проблему.
Все инструменты и техники разработки алгоритмов, созданные в последние годы, применимы к разработке высокоэффективных алгоритмов. Однако многие из этих инструментов требуют дальнейшей доработки. К примеру, техники программирования, обеспечивающие высокую эффективность использования кэша, являются ключом к высокой производительности, однако конкретные пути реализации пока не вполне ясны – главным образом из-за сложных машинно-зависимых проблем, таких как ограниченная ассоциативность, преобразование виртуальных адресов и все более многоуровневые иерархии высокопроизводительных компьютеров. Основной вопрос заключается в том, можно ли найти простые модели в качестве основы для разработки алгоритмов. К примеру, в теории алгоритмы без явного задания параметров кэша [7] эффективны на всех уровнях иерархии памяти, но на практике лишь немногие из них работают хорошо. Или, скажем, профилирование уже выполняемой программы представляет серьезную проблему в последовательной среде (любой инструмент профилирования меняет поведение наблюдаемого процесса), однако эти проблемы меркнут в сравнении с аналогичными проблемами, возникающими в параллельной или распределенной среде (к примеру, измерение аппаратных ограничений пропускной способности может потребовать обратной связи от сетевых переключателей или по меньшей мере их перепрограммирования, что, безусловно, изменит их поведение). Разработка эффективных и переносимых алгоритмов для серийно выпускаемых многоядерных и многократноядерных процессоров представляет собой нерешенную проблему.


==  См. также ==
==  См. также ==
4430

правок