Eigen, here. This might have a vectorized exp(), log(), and sqrt() without needing MKL and ICC. Trying it out, it is remarkable that these folks with Eigen and then with Blaze figured out how to use C++ templates and access the the SSE/AVX code generation. See for example this Eigen discussion, here, on the code generation for vector addition. This was not always the case. I can see why some folks might get excited about this. Eigen documentation seems to be very SSE based so I get the idea that it hasn’t been meticulously updated for Haswell, for example. I see Blaze documentation as being a little more up to date, but Blaze doesn’t have as many features as Eigen. Eigen reportedly will turn on MPI internally so you code can run against all the cores in your server, for example. I have not seen Blaze claim to do that.
This is a very short guide on how to get started with Eigen. It has a dual purpose. It serves as a minimal introduction to the Eigen library for people who want to start coding as soon as possible. You can also read this page as the first part of the Tutorial, which explains the library in more detail; in this case you will continue with The Matrix class.