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

Initial Thread-Safe Implementation #455

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

ahayashi
Copy link

Add thread-safety to XACC/QCOR (Experimental). We introduce _XACC_MUTEX macro in xacc.hpp to turn on/off the feature (default is OFF). When the macro is ON, only a single thread can execute the following routines by using either std::mutex or std::recursive_mutex:

  • User-facing API routines

    • xacc::qalloc()
  • Backend modules

    • QppAccelerator
      • execute() (the existing shot-level parallel execution still works)
      • apply()
    • NLOptimizer
      • optimize()

Also, regardless of the macro, the NLOptimizer class is now xacc::Cloneable.

Signed-off-by: Akihiro Hayashi [email protected]

@gitpod-io
Copy link

gitpod-io bot commented May 27, 2021

@amccaskey
Copy link
Contributor

@ahayashi do you need to add a CMake option so that we can turn this XACC_MUTEX preprocessor flag on and off? I'd prefer to see -DXACC_MULTI_THREADED=TRUE

@ahayashi
Copy link
Author

@amccaskey yes, I agree and will do!

Add thread-safety to XACC/QCOR (Experimental). We introduce `_XACC_MUTEX` macro in `xacc.hpp` to turn on/off the feature (default is OFF). When the macro is ON, only a single thread can execute the following routines by using either `std::mutex` or `std::recursive_mutex`:

- User-facing API routines
   - `xacc::qalloc()`

- Backend modules
   - `QppAccelerator`
       - `execute()` (the existing shot-level parallel execution still works)
       - `apply()`
   - `NLOptimizer`
      -  `optimize()`

Also, regardless of the macro, the `NLOptimizer` class is now `xacc::Cloneable`.

Signed-off-by: Akihiro Hayashi <[email protected]>
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

Successfully merging this pull request may close these issues.

2 participants