# Using METIS with SuiteSparse; Make.user

**URL:** <https://discourse.julialang.org/t/using-metis-with-suitesparse-make-user/9020>\
**Category:** Tooling\
**Created:** [February 12, 2018, 7:40pm UTC](https://discourse.julialang.org/t/using-metis-with-suitesparse-make-user/9020 "2018-02-12T19:40:51Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![CodeLenz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/codelenz/32/3419_2.png) [@CodeLenz](https://discourse.julialang.org/u/CodeLenz)\
**Post date:** [February 12, 2018, 7:40pm UTC](https://discourse.julialang.org/t/using-metis-with-suitesparse-make-user/9020/1 "2018-02-12T19:40:51Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [February 13, 2018, 12:34am UTC](https://discourse.julialang.org/t/using-metis-with-suitesparse-make-user/9020/2 "2018-02-13T00:34:22Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![CodeLenz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/codelenz/32/3419_2.png) [@CodeLenz](https://discourse.julialang.org/u/CodeLenz)\
**Post date:** [February 13, 2018, 3:37pm UTC](https://discourse.julialang.org/t/using-metis-with-suitesparse-make-user/9020/3 "2018-02-13T15:37:32Z")

</div>

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](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.

---

<div class="post-metadata">

**Author:** ![fredrikekre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fredrikekre/32/1688_2.png) [@fredrikekre](https://discourse.julialang.org/u/fredrikekre)\
**Post date:** [February 13, 2018, 3:39pm UTC](https://discourse.julialang.org/t/using-metis-with-suitesparse-make-user/9020/4 "2018-02-13T15:39:08Z")

</div>

Perhaps you can revive [https://github.com/JuliaSparse/Metis.jl](https://github.com/JuliaSparse/Metis.jl)

---

<div class="post-metadata">

**Author:** ![CodeLenz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/codelenz/32/3419_2.png) [@CodeLenz](https://discourse.julialang.org/u/CodeLenz)\
**Post date:** [February 13, 2018, 4:47pm UTC](https://discourse.julialang.org/t/using-metis-with-suitesparse-make-user/9020/5 "2018-02-13T16:47:57Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [February 13, 2018, 5:22pm UTC](https://discourse.julialang.org/t/using-metis-with-suitesparse-make-user/9020/6 "2018-02-13T17:22:40Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![CodeLenz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/codelenz/32/3419_2.png) [@CodeLenz](https://discourse.julialang.org/u/CodeLenz)\
**Post date:** [February 25, 2018, 9:06pm UTC](https://discourse.julialang.org/t/using-metis-with-suitesparse-make-user/9020/7 "2018-02-25T21:06:23Z")

</div>

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.
