Using METIS with SuiteSparse; Make.user


#1

Hi.

I was studying the Julia build system, specially SuiteSparse. Is there any reason for Julia not using METIS ? Also, is there some document describing the allowed options in the Make.user file ?

Thank you very much.


#2

What METIS are you referring to and what would you expect Julia to use it for?


#3

Hi
I was referring to METIS in the context of Suitesparse. The reference to METIS in this context can be found in https://github.com/PetterS/SuiteSparse/tree/master/CHOLMOD

“CHOLMOD relies on several other packages: AMD, CAMD, COLAMD, CCOLAMD,
SuiteSparse_config, METIS, the BLAS, and LAPACK. All but METIS, the BLAS, and
LAPACK are part of SuiteSparse.”

and

“METIS is authored by George Karypis, Univ. of Minnesota. Its use in CHOLMOD
is optional. See http://www-users.cs.umn.edu/~karypis/metis.
Place a copy of the metis-4.0 directory in the same directory that
contains the CHOLMOD, AMD, COLAMD, and CCOLAMD directories prior to compiling
with “make”.”

As I am working with the solution of large and consecutive sparse linear systems, I am trying to squeeze a little bit of performance in such critical library. Also, I am trying to understand the overall Julia build system.

Thanks for your interest.


#4

Perhaps you can revive https://github.com/JuliaSparse/Metis.jl


#5

Dear @StefanKarpinski. I would like to apologize if my first question was not formulated in an appropriate way. As I am not a native speaker, it may sounded rude.

My question is the following: while downloading and installing suitesparse, it is also possible to download and compile metis. Also, it is possible to indicate to cholmod that this library is avaliable (in the Makefile). Thus, when invoking the Suitesparse analyse function, it is possible to indicate the type of ordering strategy (AMD, NESDIS and/or METIS).

Dear @fredrikekre I was thinking in an internal use of metis during the factorization, as explained above. I believe the package you refer has another interesting uses, but as an external tool to Julia’s ecosystem. Thanks for your response.


#6

No problem, I didn’t take it as rude at all. There are a number of things called Metis and I just wanted to be clear which one you were talking about. It might be possible to hook it up. Why would an add on package not work for what you need?


#7

Dear @StefanKarpinski

I managed to compile current Julia master with SuiteSparse 5.1.2, with and without Metis. Afterall, for a large sparse matrix, there seems to be no clear advantage on using it (I was expecting some speedup). Also, as the cholmod Julia interface makes use of the internal heuristic of cholmod to use (or not to use) metis, the process of including metis is quite simple (few changes in Make.inc, Makefile and suitesparse.mk).

If anyone is interested in using current master with Suitesparse 5.1.2 WITHOUT METIS, the only modifications needed in suitesparse.mk are

 LDLIBS += -fopenmp
 CHOLMOD_CONFIG  += -DNPARTITION (since now metis comes included in suitesparse)

Sincerely yours,
Eduardo.