Access to Metis

Access to Metis

Hello, I see that the sparse solver Pardiso makes use of the Metis reordering library. I assume both sequential and parallel ?I have not seen that an interface exists within Intel MKL however to access the Metis libraries. Additionally, I have a number of libraries that I would like to replace with MKL if its possible (less overhead), then Metis coud be one of these. On my 64 bit platform however, my default integer is 64 bits, and thus the call to Metis would require a 64 bit integer interface as well. If I compile my application using MKL with (ILP64), are the integer sizes used in Metis also 64 bit ?
Thanks, john M.

10 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hello John,
1)Yes, Pardiso use Metis internally insequential and parallel modes ( see iparm(2)==2 and 3correspondingly).
2) in the case if you will compile your application with ILP64 mode, nevertheless,Metis will supports only 32-bits integers.
We have not encountered such problems that would require such large input dimensions.
Are you working with such tasks?

Please remember the current version of Pardiso cannot solves the matrices which sizes don't fit with the RAM of the System.
--Gennady

Hi Gennady, Thanks for your reply. The reason I use the 64 bit integers is simply to be consistent with my libraries built on Linux and Windows. The default integer on 64 bit Linux is 64 bits., the default integer on Windows 64 bit platform is 32 bits. My rule is that on 32 platforms, the default integer is LONG = 32 bits, on 64 bit platforms it is LONG = 64 bits. If a solver library cant be used because of this rule, I dont use it, or I find a work around, like wrapper functions so long as performance is not seriously affected.
PS:I have built metis sequential and parallel libraries with little effort to use the 64 bit integer by defining,
typedef LONG idxtype; in metis.h (sequential version only), and parmetis.h (parallel + sequential version), where LONGis defined as a 32 or 64 bit integer
thanks, john

John,
In case of ILP64 mode, internally, we are doing conversion from 64 to 32 bit integer and it hidden for the external user.As an additionally we know nothing about some problems (runtime and/or performance) caused by this conversion we are using.
--Gennady

Gennady,

This is a bit surprising. How about minimum degree? It supports 64-bit integer, right?

Also, do you have any plan to modify METIS 4.0 source to support 64-bit integer? Or any plan to use METIS 5.0 alpha release?

Jaewon

MMD (minimum degree) already supports 64-bit integer, and we're definitely going tomake it avaiable for METIS as well.In practice, we didn't faced matrices which initially required more than 32-bit integers for their representation, but, of course, they exist and we willfix this case for METIS.

Konstantin

Hello John,

I would clarify that you may simply use ILP64 MKLfor your purposes. This internal conversion 64->32->64 will not affect your programs anyhow.

The only restriction you will have with METIS (even w/ ILP64 interface) is when your matrix dimension is more than about 500.000.000 - it's a huge size. To enable solvingsuch matrices we will make METIS 64-bit in the future, of course.

Regards,
Konstantin

Hello Everybody,

The problem you reported has been fixed
into the latest MKL 10.2 Update 6 version released yesteday.

You can Download this version from Intel
Registration Center: https://registrationcenter.intel.com/regcenter/register.aspx

See announcement about thathere.

--Gennady

Hellow Konstantin,I wish I could use METIS from Intel Compiler. I'm compiling some application that makes use of METIS, but unfortunalty I could not find the way to proprely link METIS with this applications. Witch is the library to proper link METIS?I'm using Intel Composer XE with the last update in Linux.Best RegardsRafael

Hi Rafael,

Whetheryou want to use METIS from MKL PARDISO or original METISpackage?

Youmay need to know that MKL doesn't provide full METIS functionality and this package is only used inside MKL PARDISO to reorder the initial matrix.

If you would like to use original METIS implementation, youcould download open source METIS package from their official site. There're instructions about how to use it:

http://glaros.dtc.umn.edu/gkhome/metis/metis/overview

Regards,
Konstantin

Leave a Comment

Please sign in to add a comment. Not a member? Join today