Основная проблема заключается в том, что алгоритмы сортировки (1) нуждаются в большой гибкости, и (2) было бы очень сложно ускорить использование аппаратного обеспечения в любом случае.
Одна вещь состоит в том, что алгоритмы сортировки уже достаточно быстры, чтобы опередить пропускную способность памяти процессора - процессор уже потратит большую часть своего времени в ожидании перемещения данных назад и вперед в основную память. Аппаратно-ускоренный сопроцессор сортировки или специальная инструкция сортировки будут иметь ту же проблему.
Способ решения проблемы пропускной способности памяти заключается в использовании более совершенных алгоритмов и структур данных, которые имеют лучшую «локальность», и в этой области еще предстоит проделать значительную работу, в частности «алгоритмы кеширования без учета» (они не обращают внимания в том смысле, что работают хорошо независимо от деталей кеширования, тогда как алгоритмы «кеширования» настроены на определенный размер страницы кеша и т. д.).
В отличие от этого, мультимедийные приложения (аудио и графика, особенно 3D-графика) используют некоторые очень повторяющиеся структуры - конечно, есть гибкость, но она построена на основе большого и очень хорошо структурированного фундамента. Это позволило графическому ускорению начать с простых вещей, таких как Blitting (настраиваемая, но все еще очень структурированная операция копирования блоков) и рисование линий / полигонов. Это означало, что по мере усложнения обработки графики и звука векторные операции стали очевидной целью оптимизации - сначала MMX (векторы целых чисел), а затем SSE (векторы чисел с плавающей точкой). Это означало, что была довольно четко определенная структура для работы механизма трехмерной графики, когда старый конвейер трехмерной графики с фиксированной функцией был перенесен на аппаратное обеспечение трехмерной графики.
Тем не менее, с трехмерной графикой то, что когда-то было сделано на аппаратном уровне, теперь делается на программном обеспечении для гибкости - например, шейдеры - это программное обеспечение, и именно поэтому мы получаем широкий спектр различных шейдеров, создающих вид различных материалов. Однако это программное обеспечение по-прежнему работает гораздо более структурированным образом, чем обычное программное обеспечение, и, следовательно, все еще может использовать гораздо более специализированную аппаратную платформу. Вот почему ваша видеокарта теперь может ускорить все - от физики до взлома паролей - приложений, которые также соответствуют той же модели и могут быть эффективно реализованы с использованием наборов инструкций, которые предоставляют современные графические процессоры.
Графические процессоры в настоящее время являются духовными или фактическими потомками цифровых сигнальных процессоров, которые были (и, вероятно, все еще) являются своего рода специализированным процессором для обработки цифровых сигналов (например, аудио).
Что приводит к конечной точке - алгоритмы сортировки могут быть ускорены аппаратно. В зависимости от ваших данных, сортировка может выполняться с использованием инструкций MMX или SSE (одна инструкция-несколько данных) на вашем процессоре, но, вероятно, нет особого смысла из-за проблемы с пропускной способностью памяти - возможно, вы можете быть немного более энергоэффективными таким образом, хотя. Тем не менее, вы также можете использовать графическое оборудование. Таким образом, вы можете получить выгоду от часто гораздо лучшей пропускной способности памяти для видеокарт. Вы не сможете заменить все виды таким образом, но это, безусловно, возможно и, вероятно, делается там, где это необходимо.
IOW из-за различных экономических и практических вопросов, разработка оборудования специально для ускорения относительно узкой задачи, такой как сортировка, на самом деле не имеет смысла. Функция, ускоряющая более широкий круг задач или делающая существующее аппаратное ускорение применимым к более широкому кругу задач, часто имеет гораздо больший смысл.