3.4
From Eigen
Raw dump of the main novelties and improvements that will be part of the 3.4 release compared to the 3.3 branch:
- New features
- New versatile API for sub-matrices, slices, and indexed views. It basically extends
operator()(?,?)
to let it accept anything that looks-like a sequence of indices with random access. To make it usable this new feature comes with new symbols:Eigen::all
,Eigen::last
, and functions generating arithmetic sequences:Eigen::seq(first,last[,incr])
,Eigen::seqN(first,size[,incr])
,Eigen::lastN(size[,incr])
. Check the doc for the details. - Reshaped views through the new members
reshaped()
andreshaped(rows,cols)
. This feature also comes with new symbols:Eigen::AutoOrder
,Eigen::AutoSize
. Check the doc for the details. - A new helper
Eigen::fix<N>
to pass compile-time integer values to Eigen's functions. It is currently supported to pass compile-time sizes to.block(...)
,.segment(...)
, and all variants as well as the first, size and increment parameters of the seq, seqN, and lastN functions. You can also pass "possibly compile-time values" throughEigen::fix<N>(n)
. See the respective doc for the details.
- New versatile API for sub-matrices, slices, and indexed views. It basically extends
- Performance optimizations
- Vectorization of partial-reductions along outer-dimension, e.g.: colmajor.rowwise().mean()
- Speed up evaluation of HouseholderSequence to a dense matrix, e.g.,
MatrixXd Q = A.qr().householderQ();
- Hardware supports
- Generalization of the CUDA support to CUDA/HIP for AMD GPUs.
- Add explicit support for MSA vectorization engine (MIPS).
- AVX512 is enabled by default when enabled on compiler side.