Skip to content

Initial Thread-Safe Implementation#455

Open
ahayashi wants to merge 3 commits intoeclipse-xacc:masterfrom
ahayashi:thread_safe_impl
Open

Initial Thread-Safe Implementation#455
ahayashi wants to merge 3 commits intoeclipse-xacc:masterfrom
ahayashi:thread_safe_impl

Conversation

@ahayashi
Copy link
Copy Markdown

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 ahayashi@gatech.edu

@gitpod-io
Copy link
Copy Markdown

gitpod-io Bot commented May 27, 2021

@amccaskey
Copy link
Copy Markdown
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
Copy Markdown
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 <ahayashi@gatech.edu>
Signed-off-by: Akihiro Hayashi <ahayashi@gatech.edu>
Signed-off-by: Akihiro Hayashi <ahayashi@gatech.edu>
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