Я только что прочитал веб-определения об этих тестах, но, если я правильно понял, они могут быть должным образом ускорены с помощью параллелизма, выраженного SIMD (в частности, как реализовано в CUDA).
В тесте KSнужно вычислить разницу между функцией и оценкой по N выборкам, а затем взять максимальную разницу.Другими словами, необходимо выполнить одну и ту же операцию с N различными значениями, что в точности равно SIMD (одна инструкция, несколько данных).
В тесте Левена снова есть та же самая разница, квадрат и умножение по Nразные значения.
То, что может сделать SIMD, является своего рода оператором FOR для N наборов значений при условии, что итерации не зависят друг от друга.Таким образом, например, в CUDA компилятор может распределять итерации элементам обработки графического устройства, так что при параллельном выполнении цикл FOR выполняется для всех данных во время одной итерации.
Инструментарий CUDA предоставляет специальный компилятор C / C ++ (NVCC), в котором специальные инструкции отправляются в GPGPU, а не в CPU, поэтому распределяются по его параллельным элементам обработки.