Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add finer parallelisation control #9

Open
jakelishman opened this issue Oct 4, 2018 · 0 comments
Open

Add finer parallelisation control #9

jakelishman opened this issue Oct 4, 2018 · 0 comments

Comments

@jakelishman
Copy link
Member

At the moment, the only parallelisation present in the evolution module is any implicit work done by numpy or scipy underneath. This is generally limited to 2 separate threads at the MKL or OpenMP level (depending on the backend used) in various operations.

When running on the cluster, it might be useful to have a simple way to disable this behaviour (although setting the environment MKL_NUM_THREADS or OMP_NUM_THREADS to 1 ought to be enough), especially when additional parallelisation is applied.

In addition, the calculation of a single derivative could be taught to use parallel processes, since each one is completely separable from the others. Obviously we would want some control over how many processes are used to do this.

It might be particularly useful for the detuning error scans in the Molmer--Sorensen gate numerics, since the integral I am performing is easily written in Gauss--Hermite quadrature, and requires very few points to get a very accurate estimation of the total infidelity (maybe as few as 5). Since a node on cx1 has around 32 CPUs, we can happily use 5 * 6 processes to do the calculation, allowing us to reduce the calculation time of one complete infidelity by almost 30 times (since all the heavy lifting can be parallelised).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant