Несколько пользователей задали вопрос о скорости или потреблении памяти для сверток изображений в numpy или scipy [1, 2, 3, 4]. Из ответов и моего опыта использования Numpy я считаю, что это может быть основным недостатком numpy по сравнению с Matlab или IDL.
До сих пор ни один из ответов не затронул общий вопрос, так вот вот: "Какой самый быстрый метод вычисления двумерной свертки в Python?" Общие модули python - это честная игра: numpy, scipy и PIL (другие?). Для сложного сравнения я хотел бы предложить следующие правила:
- Входные матрицы - 2048x2048 и 32x32 соответственно.
- Плавающая точка с одинарной или двойной точностью приемлема.
- Время, затрачиваемое на преобразование матрицы ввода в соответствующий формат, не учитывается - только шаг свертки.
- Замена входной матрицы на ваш выход приемлема (поддерживает ли какая-либо библиотека python?)
- Прямые вызовы DLL для общих библиотек C в порядке - lapack или scalapack
- PyCUDA сразу. Нечестно использовать ваше собственное оборудование графического процессора.