From Eigen
Revision as of 00:24, 11 November 2018 by Ggael (Talk | contribs)

Jump to: navigation, search

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() and reshaped(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" through Eigen::fix<N>(n). See the respective doc for the details.
  • 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.