[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libsuitesparse-dev and libcholmod4



There are two issues related to CHOLMOD.

The first issue is that the libsuitesparse-dev package includes the headers in the /usr/include/suitesparse/ rather than the /usr/include/ directory which is not what SutieSparse does by default and it is not what other package managers do (e.g. Homebrew and Conda), creating an heterogeneous set of environments that complicates the situation for developers.

Since SuiteSparse has recently consolidated many of its header files with the latest release, I do wonder whether it would be a good time to revisit the decision to keep the headers in /usr/include/suitesparse/ as this could create a uniform environment across distributions. If having all headers in /usr/include/ is still considered too much, could a soft link to /usr/include/suitesparse/cholmod.h be present in /usr/include/? This would allow code calling this header with the command:
#include "cholmod.h"
To work without issues across different environments.

The other issue is that CHOLMOD performance is significantly degraded by libopenblas0-pthread, one of the packages that provides libblas.so.3. As CHOLMOD is based on OpenMP, using a multi-threaded version of BLAS causes significant cache issues when running multi-threaded functions. I have observed CHOLMOD running twice as fast when using libopenblas0-openmp instead of libopenblas0-pthread. Although it would not solve all configurations, could the libcholmod4 debian package recommend the installation of libopenblas0-openmp? This would not guarantee that users would use the OpenMP version of OpenBLAS when running CHOLMOD for users that have already a non-OpenMP version installed, but it would at least default to this version for users that don't have OpenBLAS installed to begin with.

There might be other workarounds that I have not thought of so I am open to alternative suggestions.

Thank you for your attention

Reply to: