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

[experimental/python] Improvements, gaps and fixes: Part#1 #1157

Closed
19 tasks done
khalatepradnya opened this issue Feb 1, 2024 · 14 comments
Closed
19 tasks done

[experimental/python] Improvements, gaps and fixes: Part#1 #1157

khalatepradnya opened this issue Feb 1, 2024 · 14 comments

Comments

@khalatepradnya
Copy link
Collaborator

khalatepradnya commented Feb 1, 2024

Gaps in features and enhancement:

Must have:

  • Build Python wheel on arm64 platform
  • Enable remote simulator target (and corresponding tests)
  • Enhance tests for remote backend with new Python APIs
  • Port vqe module
  • Port parallel module
  • Port chemistry module
  • Fix State, get_state_async, AsyncStateResult
  • Enable OptimizationResult
  • Enable broadcast in mpi
  • Implement observe_async in eager mode
  • Bug in AST compilation where register_name='name' is ignored
  • bug with ordering of kernel definitions and kernel composition
  • bug with transitive kernel dependencies
  • sample_async eager mode
  • check control self.popValue() calls (bug with too many calls to popValue fixed for one scenario, could be others)
  • vqe for eager / mlir mode kernels
  • drop qlist
  • Implement from_state: Will be addressed separately
  • range(q, p, -1), p == 0
  • Add Python binding for NvcfSimulatorQPU similar to PyRemoteSimulatorQPU

Nice to have:

  • Enable building and usage of old Python bindings and new MLIR bindings side-by-side (fix for LLVM static initialization issue)
@khalatepradnya
Copy link
Collaborator Author

Issues related with State will be addressed by #1123

@khalatepradnya
Copy link
Collaborator Author

@khalatepradnya
Copy link
Collaborator Author

@khalatepradnya khalatepradnya linked a pull request Feb 2, 2024 that will close this issue
@khalatepradnya khalatepradnya removed a link to a pull request Feb 2, 2024
@amccaskey
Copy link
Collaborator

note here - need to disallow empty list initializer l = [] since we don't allow default empty std::vector<T> construction (no dynamic memory allocation). Might need a new type with size argument for list initialization (beyond constant initialization l = [1,2,3...], something like l = cudaq.list_init(10)

@bmhowe23
Copy link
Collaborator

bmhowe23 commented Feb 5, 2024

I think the changes to JITExecutionCache.cpp (as originally done in a610481 but later backed out) are likely still needed for thread safety reasons. Is that being tracked somewhere?

@khalatepradnya
Copy link
Collaborator Author

I think the changes to JITExecutionCache.cpp (as originally done in a610481 but later backed out) are likely still needed for thread safety reasons. Is that being tracked somewhere?

Yes, I have it in a new PR. But, good to note here as well for tracking.

@amccaskey
Copy link
Collaborator

Note - Need to fix issue with kernel composition requiring kernel argument being defined before kernel taking kernel as input.

@amccaskey
Copy link
Collaborator

Fix bug in AST mode where register_name is ignored for measurements

@khalatepradnya
Copy link
Collaborator Author

Remote simulator target tests enabled - PR #1187

@khalatepradnya
Copy link
Collaborator Author

khalatepradnya commented Feb 13, 2024

arm64 Python wheel fix - PR #1216

@schweitzpgi
Copy link
Collaborator

schweitzpgi commented Feb 13, 2024

note here - need to disallow empty list initializer l = [] since we don't allow default empty std::vector construction (no dynamic memory allocation). Might need a new type with size argument for list initialization (beyond constant initialization l = [1,2,3...], something like l = cudaq.list_init(10)

Pedantically speaking, we could allow it. But it wouldn't be terribly interesting. Fast though. Processing a vector with 0 elements should zoom-zoom. (I recall adding code to the bridge to handle 0-element initializer lists, but don't recall exactly the status.)

@1tnguyen
Copy link
Collaborator

  • Add Python binding for NvcfSimulatorQPU similar to PyRemoteSimulatorQPU

In main, we've added NvcfSimulatorQPU as a derived class of RemoteSimulatorQPU. This inheritance needs to be mirrored in the new Python bindings.

@khalatepradnya khalatepradnya changed the title [experimental/python] Implement missing functionalities and features [experimental/python] Improvements, gaps and fixes: Part#1 Feb 16, 2024
@khalatepradnya
Copy link
Collaborator Author

Error handling and messaging captured in #1251

@khalatepradnya
Copy link
Collaborator Author

#1300

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

5 participants