[C++, Eigen] Eigen cast함수 SIMD로 벡터화하기
Eigen은 C++기반의 선형 대수 연산 라이브러리입니다. 이 라이브러리의 특징은 c++의 템플릿을 쥐어짜서 컴파일 시간에 행렬 간의 연산식을 분석하고 최적의 연산 순서를 결정해서 연산을 수행한다는 것입니다. 예를 들어 Eigen::MatrixXf a, b, c, d; a = b * c + d; 와 같은 식이 있다면, 일반적인 c++객체에서는 b*c를 연산한 뒤 그 리턴값으로 임시 객체가 생성이 되고, 이 임시객체와 d를 더한뒤 임시 객체를 생성하고, 최종적으로 이 임시객체가 a에 대입되는 식으로 연산이 진행될 겁니다. 하지만 Eigen에서는 Expression Template이라는 템플릿의 응용기법을 이용해 이런 불필요한 연산을 회피하고, b*c를 바로 a에 대입한뒤 거기에 d를 더 더해서 임시객체 생..
프로그래밍/테크닉
2019. 10. 13. 01:35