[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]

Hello. I think Eigen to be really good library, but I've found some problem, which I can't to live with. :)
I employ x86 + SSE2 platform and Visual C++
When I use matrices with fixed sizes, which are not multiple of the packet size Eigen doesn't use vector instructions.
I tried to enforce it by using AutoAlign option, but it didn't worked.
for example for:
Matrix<float,5,1,AutoAlign | ColMajor> a;
Matrix<float,5,1,AutoAlign | ColMajor> b;
Matrix<float,5,1,AutoAlign | ColMajor> c = a.cwise() * b;
Visual C++ generates five mulss-instructions, but I want one mulps and one mulss.
So I've decided to round up first dimention to multiple of 4. And it worked. But in some cases, for example when we multiply 3x3 Matrix by 3x1 one this doesn't work, and we must round up second dimention either, but it's not on.
So I have two questions:
1. Do developers intend to reach behavior, which I've declared?
2. How can I myself change sources to reach this behavior?