Vectorization :
프로그램의 흐름제어중 반복 구조를 for-statement가 아닌 vector연산을 이용해서 최적화 하는 기법.
기존의 for-loop보다 훨씬 빠른속도로 연산이 가능하며, GPU는 물론 대부분의 CPU에서 SIMD 명령셋을
지원 하기 때문에 CPU에서도 For-loop에 비해 훨씬 빠른 속도로 연산이 가능 하다.
Basic Notation :
1 2 3 4 5 | for(i = 0 ; n ; i++){ fot (j = 0 ; m ; j++){ u[i] += A[i][j] * v[j] } } | cs |
-> A * v
위의 식은 일반적인 회귀식의 결과 z를 계산할때 스칼라 값인 b를 1 x m 벡터로 만들어서 기존의 for-loop을 벡터화. 사진 출처- Andrew ng ( cousera )
더많은 예제는 머신러닝 예제 코드에서 볼 수 있습니다.
참고자료 :
https://stonzeteam.github.io/SIMD-%EB%B3%91%EB%A0%AC-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/
'Optimization & Compiler' 카테고리의 다른 글
Python time library 성능 체크 (0) | 2019.06.18 |
---|---|
꼬리재귀 좋은 스레드 글 (0) | 2019.03.18 |
가장 간편한 shared pointer 사용법 예제 (0) | 2019.02.03 |
C 코드를 어셈블리로 보여주는 사이트 (0) | 2019.01.27 |
[ C++ ] chrono 개념 및 예제 (성능측정) (0) | 2019.01.27 |