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

[core] Separate compilation, supporting C++ host side function references. #2216

Merged
merged 7 commits into from
Oct 1, 2024

Commits on Sep 27, 2024

  1. [core] Separate compilation, supporting C++ host side function refere…

    …nces.
    
    These changes add a new wrapper class to support interfacing between
    kernels. Kernels on the device side have their own names and calling
    conventions. Meanwhile, the C++ host code can capture references to
    these kernels. The C++ compiler assumes it can erase the functions
    completely and degenerate any reference to them as a pointer.
    Furthermore, it may inline or wrap this code in a thicket of template
    instantiations. But in order to be useful on the device side, the CUDA-Q
    runtime must be able to determine which kernel was wrapped in C++ code,
    lookup the device side code, and "link-time" optimize these calls, doing
    calling convention conversions, etc. Furthermore, what must be done is
    flavored by the execution environment.
    
    Update the call paths of hybridLaunchKernel so that we can use the new
    argument synthesis instead of falling back on and failing with quake
    synthesis.
    
    Add another deduction guide test (when using cudaq::sample). Mark all
    tests that use deduction guides as C++ 20 (since C++ 17 doesn't have
    guides).
    
    Add a hacky workaround for python. Python needs to use the new argument
    synthesis, but it is still using the old quake synthesis compiler pass.
    
    Attempt to add split-file to installed stuff. [Doesn't work! Why not?]
    Add guards to tests since some phases of the CI don't have the necessary
    test utilities properly installed.
    
    Mark failing state tests as UNSUPPORTED for now. These should be fixed
    when the state handling using new argument synthesis is fully
    implemented.
    
    Fix bug when there are multiple callables.
    schweitzpgi committed Sep 27, 2024
    Configuration menu
    Copy the full SHA
    6f936d2 View commit details
    Browse the repository at this point in the history
  2. Fix test issue with state_init_err_runtime.cpp. Test required quake

    synthesis to be used to get the expected error.
    
    Reenable qvector_init_from_state.cpp. Hopefully this one was a red
    herring chasing its own CI tail.
    schweitzpgi committed Sep 27, 2024
    Configuration menu
    Copy the full SHA
    a7bea50 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    8900d35 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    6c4e5af View commit details
    Browse the repository at this point in the history

Commits on Sep 30, 2024

  1. Configuration menu
    Copy the full SHA
    2a44c7a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    26d5c1e View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    38b2b06 View commit details
    Browse the repository at this point in the history