Guest User

Untitled

a guest
Feb 17th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include <eigen3/Eigen/Dense>
  2.  
  3. int main(int argc, char const *argv[]) {
  4. /* code */
  5. const int M = 320;
  6. const int N = 640;
  7. const int K = 320;
  8. const int alpha = 2;
  9. const int beta = 1;
  10. Eigen::Matrix<int32_t, Eigen::Dynamic,Eigen::Dynamic> A = Eigen::Matrix<int32_t, Eigen::Dynamic,Eigen::Dynamic>::Random(M,K);
  11. Eigen::Matrix<int32_t, Eigen::Dynamic,Eigen::Dynamic> B = Eigen::Matrix<int32_t, Eigen::Dynamic,Eigen::Dynamic>::Random(K,N);
  12. Eigen::Matrix<int32_t, Eigen::Dynamic,Eigen::Dynamic> C = Eigen::Matrix<int32_t, Eigen::Dynamic,Eigen::Dynamic>::Random(M,N);
  13.  
  14. //Following http://eigen.tuxfamily.org/dox/TopicWritingEfficientProductExpression.html
  15.  
  16. C.noalias() += (A*alpha)*(B*beta); //WORKS
  17.  
  18. C.noalias() += A*B;
  19.  
  20. Eigen::Map<Eigen::Matrix<int32_t, M, K, Eigen::ColMajor> > map_a(A.data());
  21. Eigen::Map<Eigen::Matrix<int32_t, K, N, Eigen::ColMajor> > map_b(B.data());
  22. Eigen::Map<Eigen::Matrix<int32_t, M, N, Eigen::ColMajor> > map_c(C.data());
  23.  
  24. map_c.noalias() += map_a*map_b; //WORKS
  25.  
  26. map_c.noalias() += (map_a*alpha)*(map_b*beta); //COMPILE ERROR HERE
  27.  
  28. return 0;
  29. }
Add Comment
Please, Sign In to add comment