haasad / PyPardiso

Python interface to the Intel MKL Pardiso library to solve large sparse linear systems of equations
BSD 3-Clause "New" or "Revised" License
135 stars 20 forks source link

Pardiso for clusters (cpardiso) #35

Open ma-sadeghi opened 2 years ago

ma-sadeghi commented 2 years ago

Hi, Have you looked into supporting Pardiso for clusters (so it can be run on machines with distributed memory)? Thanks!

haasad commented 2 years ago

Hey, no, I haven't looked into that. I used to have access to a server with 256GB memory, which was always enough for my usage. Is this something you plan to use?

ma-sadeghi commented 2 years ago

I'd love to use it. The issue is that at some point (depends on the memory bandwidth of the CPU), memory operations become the bottleneck. In my experience, this critical point tends to be around 10ish cores (again, it depends on the hardware, but I tested on Compute Canada resources, which are fairly modern). So, a CPU with 32 or 64 cores, for instance, give you almost the same speedup as one with 8 cores.

With clusters, on the other hand, each node gets its own memory bandwidth, and so much higher speed ups become possible. I'd love to contribute, but I have no experience with interfacing Python with C/Fortran code. MKL seems to already have a cluster version of pypardiso (see here).

If you could give me some pointers on how to start, I can take a crack at it, otherwise, I'd really appreciate it if it's something that interests you.