Почему векторизация полезна для программ Matlab? Это то же самое для NumPy и Boost (uBLAS)? - PullRequest
5 голосов
/ 16 мая 2011

Использование векторизации для замены циклов for может значительно увеличить скорость программ Matlab.Это потому, что векторизованные коды выполняются параллельно?

Является ли векторизация также полезной для программ, использующих NumPy или uBLAS?

Ответы [ 2 ]

8 голосов
/ 16 мая 2011

«Векторизованный» код обычно быстрее в интерпретируемых средах, таких как Matlab и numpy, потому что в векторизованных версиях часто (но не всегда) выполняется предварительно скомпилированный и оптимизированный код, написанный на C или FORTRAN.Параллельное выполнение может или не может играть роль в этом.

Использование векторизации в numpy обычно приводит к улучшению производительности по этой причине - часто подпрограммы компилируются в C или FORTRAN, которые работают намного быстрее, чем собственный код Python, которыйдолжен быть запущен на переводчике.Кроме того, numpy, написанный в основном на C, может обойти блокировку глобального интерпретатора python, что может значительно улучшить отзывчивость в коде python, использующем потоки.

2 голосов
/ 16 мая 2011

Я думаю, что часть того, что делает векторизацию быстрее, это то, что она уменьшает накладные расходы, связанные с несколькими вызовами функций.Передача вектора в функцию соответствует одному вызову, тогда как индивидуальная передача каждого элемента этого вектора в функцию соответствует нескольким вызовам.

...