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

Merge GPU simulator feature branch into master #544

Merged
merged 7 commits into from
Jan 31, 2020

Conversation

chriseclectic
Copy link
Member

@chriseclectic chriseclectic commented Jan 24, 2020

Summary

This is a rebase of the gpu feature branch to cleanup the commit history for merging into master.

NOTE: It should be merge committed to preserve history from multiple authors rather than squashed.

Details and comments

Closes #511
Closes #512
Closes #513

@chriseclectic
Copy link
Member Author

@atilag Something is wrong with the build system and the Thrust OpenMP is not being installed in CI with the appropriate flag (you can see in the travis that are supposed to test the Thrust OpenMP backend that the GPU tests are being skipped)

@chriseclectic
Copy link
Member Author

Also mac travis jobs are failing because build log is too long (see issue #548 )

@chriseclectic
Copy link
Member Author

@atilag This still needs to be updated with:

  • Add find thrust package to CMake so can fail gracefully if thrust headers arent found for thrust builds
  • Optionally Thrust as a gitmodule
  • Fix missing omp symbol on mac build with Thrust OMP.

@chriseclectic chriseclectic changed the title [WIP] Merge GPU simulator feature branch into master Merge GPU simulator feature branch into master Jan 31, 2020
@chriseclectic
Copy link
Member Author

@atilag The OpenMP with Thrust on mac remains. I'm going to remove Thrust tests from travis for mac and make an issue so this PR can be merged and you can fix thrust CMake build as a followup

* Fix a build error with no Thrust support at all
* Simplify flags so AER_DEBUG and AER_TIMING are both implicit to alredy existing DEBUG flag
* No default Thrust backend. The Thrust backend needs to be explicitly specified via
  AER_THRUST_BACKEND build variable, e.g:
  ```
  python ./setup.py bdist_wheel -- -DAER_THRUST_BACKEND=CUDA
  ```
* Some minor class renaming to comply with the CamelCase standard.
* Adding missing symbols for libomp hack on MacOS, with older versions of clang (9)
* Add Thrust cloning from github for the CIs
* Add Thrust to CI tests stages to test Thrust CPU backends
* Document new CMake variable to enable GPU support (and other CPU methods)

Co-authored-by: Hiroshi Horii <horii@jp.ibm.com>
Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com>
doichanj and others added 5 commits January 31, 2020 15:35
Co-authored-by: Hiroshi Horii <horii@jp.ibm.com>
* Add method to statevector controller for cpu/gpu/thrust
* Add explicit thrust cpu to qasm, statevector and unitary simulator
* add AER_THRUST_CPU flag to cmake to distinguish between cuda and cpu thrust
* avoid nested omp for single-gpu env and enable omp threshold for thrust-omp env

Co-authored-by: Jun Doi <doichan@jp.ibm.com>
Co-authored-by: Christopher J. Wood <cjwood@us.ibm.com>
* Added decorator for skipping test based on unavailable method
* Add tests for Thrust GPU/CPU statevector simulator methods
* Add tests for Thrust GPU/CPU unitary simulator methods
* Add tests for Thrust GPU/CPU qasm simulator methods
* Renamed test files to be consistent

Co-authored-by: Hiroshi Horii <horii@jp.ibm.com>
…of nvcc

The one provided by RedHat (CUDA 10) is affected. The problem was related
to a bug in the compiler when dealing with const variables passed by
reference to lambdas.
* Move controller headers to src/controllers
* Move base State header to src/simulator
* move src/simualtors/open_pulse to src/open_pulse
* Update changelog for GPU backends
@chriseclectic
Copy link
Member Author

@atilag I fixed missing clang omp symbols on mac. This is ready to merge now. Cleaning up the CMakelists for CUDA and Thrust will still need to be done after merging.

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