Only the parallel sparse matrix code was updated. This is used by e.g. LSCM and ABF unwrap, and performance seems about the same or better. Parallel GEMM (dense matrix-matrix multiplication) is used by libmv, for example in libmv_keyframe_selection_test for a 54 x 54 matrix. However it appears to harm performance, removing parallelization makes that test run 5x faster on a Apple M3 Max. There has been no new Eigen release since 2021, however there is active development in master and it includes support for a C++ thread pool for GEMM. So we could upgrade, but the algorithm remains the same and looking at the implementation it just does not seem designed for modern many core CPUs. Unless the matrix is much larger, there's too much thread synchronization overhead. So it does not seem useful to enable that thread pool for us. Pull Request: https://projects.blender.org/blender/blender/pulls/136865
31 lines
436 B
CMake
31 lines
436 B
CMake
# SPDX-FileCopyrightText: 2015 Blender Authors
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
set(INC
|
|
.
|
|
)
|
|
|
|
set(INC_SYS
|
|
)
|
|
|
|
set(SRC
|
|
eigen_capi.h
|
|
|
|
intern/eigenvalues.cc
|
|
intern/linear_solver.cc
|
|
intern/matrix.cc
|
|
intern/svd.cc
|
|
|
|
intern/eigenvalues.h
|
|
intern/linear_solver.h
|
|
intern/matrix.h
|
|
intern/svd.h
|
|
)
|
|
|
|
set(LIB
|
|
PRIVATE bf::dependencies::eigen
|
|
)
|
|
|
|
blender_add_lib(bf_intern_eigen "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
|