Приложения параллельной обработки на GPU требуют от вас выполнения 10000 * точно такой же операции сотни раз. Более того, вы ограничены в том, какие операции вы можете выполнять - ветки, как правило, не являются опцией и не проходят цепочки указателей.
Большинство операций ядра не вписываются в эту модель; большая часть того, что делает ядро - это управление ресурсами с помощью указателей, включая блокировку. Это совсем не вписывается в модель GPU. Что касается других операций, которые вы цитируете:
- Криптография: графические процессоры отлично подходят для попытки взломать криптографических шифров, но это не работа ядра. Обычно он выполняет криптографическую операцию один раз . В этом случае процессор намного быстрее, так как он должен сделать это только один раз.
- Обработка сетевого трафика: пакеты приходят в разное время и должны обрабатываться с низкой задержкой. Графический процессор может быть в состоянии выполнять обработку межсетевого экрана без сохранения состояния, но вам нужно будет пакетировать пакеты и работать на нескольких сотнях за раз, чтобы иметь преимущество - это вредит задержке и дрожанию, и поэтому работа остается за процессором. Кроме того, для отслеживания состояния требуется общий заблокированный доступ к таблицам отслеживания подключений, чего не позволяет графический процессор.
- Управление памятью: это сложная операция с большим количеством блокировок, поэтому GPU даже для удаленно не подходит. Более того, задержка имеет решающее значение, и отправка задания на графический процессор подразумевает большую задержку.
- Поиск: современные ядра ОС не выполняют поиск. Это работа для пространства пользователя - и опять же, это очень тяжелая работа.
Графические процессоры хорошо подходят для математических ядер, где пропускная способность имеет первостепенное значение, а задержка является второстепенной проблемой - численное моделирование и тому подобное. Они, как правило, не очень подходят для управления данными, или там, где латентность имеет решающее значение - это именно то, что делают ядра ОС. Вот почему операционные системы обычно не используют ускорение графического процессора.
Существуют и другие типы аппаратного ускорения, которые ядра ОС могут использовать и используют - на некоторых машинах есть специальные криптографические аппаратные ядра, специально предназначенные для быстрого выполнения одноразовых криптографических вычислений. Они могут быть эффективно использованы ядром, поскольку они лучше подходят для конкретных проблем, с которыми сталкивается ядро.