QTechTheory / QuESTlink

A Mathematica package for multithreaded and GPU simulation of quantum computers
https://questlink.qtechtheory.org/
MIT License
30 stars 4 forks source link

QuESTlink & Slurm #184

Closed GibbsJR closed 1 year ago

GibbsJR commented 1 year ago

I would like some help taking advantage of HPC when using QuESTlink in distributed mode. Previously I have run QuEST on the machine, which is handled by the Slurm job scheduler, without any issues.

My main question is how can I use QuESTlink when I need to submit jobs using Slurm? Is there a way to turn the notebook into an executable, or is there an alternate recommended method (I didn't see an explanation of this in the docs)? Thanks!

TysonRayJones commented 1 year ago

Hi Joe,

Note that unlike QuEST, QuESTlink cannot presently be run in distributed mode. I.e. you cannot created a Qureg which has its amplitudes distributed across many nodes.

You can however deploy many concurrent and independent QuESTlink processes (as one might do using Mathematica's Parallel facilities), and use SLURM to launch them over many nodes. Depending on your needs, you may wish to do this with the Wolfram Engine. You'll require converting your notebook into a .m file (as discussed here).

I've personally had success downloading the Wolfram Engine executable onto an AWS instance from the command line, installing it and launching it during my job execution. Give that a try!

GibbsJR commented 1 year ago

Hi Tyson,

I see, it would have been nice to have the option to distribute over multiple nodes, but in reality one GPU/node should be enough for most of my use cases. Thanks for the useful info about how to use SLURM to dispatch independent jobs.

TysonRayJones commented 1 year ago

I agree - a model whereby a single Mathematica process dispatches simulation instructions to a distributed QuEST backend has been on my QuESTlink wish list for ages. I can't yet see a way to work around the limitations of Wolfram's WSTP to do this however. :(