Optimization & Compiler
Vectorization
hellobird
2019. 7. 28. 00:54
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/