Skip to content

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!

ahayashi added 3 commits July 20, 2021 17:00
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