2011-05-16 5 views

답변

8

"벡터화 된"코드는 대개 벡터화 된 버전이 C 또는 FORTRAN으로 작성된 사전 컴파일되고 최적화 된 코드를 실행하기 때문에 Matlab 및 numpy와 같은 해석 된 환경에서 더 빠릅니다. 병렬 실행은 이것에서 역할을 할 수도,하지 않을 수도 있습니다.

numpy에서 벡터화를 사용하면 일반적으로 이러한 이유로 성능이 향상됩니다. 종종 루틴은 인터프리터에서 실행해야하는 원시 파이썬 코드보다 훨씬 빠르게 실행되는 C 또는 FORTRAN으로 컴파일됩니다. 또한 numpy는 주로 C로 작성되어 파이썬 전역 인터프리터 잠금을 회피 할 수 있습니다.이 인터프리터 잠금은 스레드를 사용하는 파이썬 코드의 응답 성을 크게 향상시킬 수 있습니다.

+0

uBLAS를 사용하는 프로그램은 어떻습니까? 벡터화 된 버전과 일반 버전의 차이점은 무엇입니까? 아니면, 당신이 말하는 바에 따르면 uBLAS (C++)는 이미 벡터화없이 빠릅니다. – zhanwu

+0

죄송합니다. uBLAS에 대한 경험이 없습니다. Matlab이나 numpy와는 완전히 다른 방식으로 동작해야합니다. 그 중, 벡터화로부터의 큰 속도는 대부분 통역사를 우회하고 있습니다. uBLAS는 항상 포함 된 C++에서 실행 가능 코드로 컴파일되는 템플릿 라이브러리입니다. – talonmies

+4

uBLAS의 경우, "벡터화"라는 단어의 다른 의미는 MATLAB 또는 numpy의 코드를 벡터화하는 것의 의미를 나타내는 것이라고 생각합니다. uBLAS의 경우 벡터화 된 버전은 벡터 명령 인 CPU 명령을 사용하여 여러 데이터를 동시에 처리합니다. Intel 프로세서의 경우 SSE 지침입니다. –

2

필자는 벡터화를 더 빠르게 만드는 요인 중 일부는 여러 함수 호출과 관련된 오버 헤드를 줄인다 고 생각합니다. 함수에 벡터를 전달하는 것은 단일 호출에 해당하는 반면, 해당 벡터의 각 요소를 함수에 개별적으로 전달하면 여러 호출에 해당합니다.

+0

이것은 사실이지만, 아마도 가장 중요한 이유는 아닙니다. – Nzbuu

관련 문제