Issue with MLIRGen and NVQ++ Linking
Open
@1tnguyen is already working on this.
Since Aug 24, 2023.
bug
stale-notified
- Dominant language
- C++
- Stars
- 1.1k
- Forks
- 456
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 165
Description
Take the phase_estimation.cpp example
struct r1PiGate {
void operator()(cudaq::qubit &q) __qpu__ { r1(1., q); }
};
int main() {
for (auto nQubits : std::vector<int>{2, 4, 6, 8}) {
auto counts = cudaq::sample(
qpe{}, nQubits, [](cudaq::qubit &q) __qpu__ { x(q); }, r1PiGate{});
auto mostProbable = counts.most_probable();
double theta = cudaq::to_integer(mostProbable) / (double)(1UL << nQubits);
auto piEstimate = 1. / (2 * theta);
printf("Pi Estimate(nQubits == %d) = %lf \n", nQubits, piEstimate);
}
}
As is, if compiled targeting the RemoteRESTQPU, this works
nvq++ --target quantinuum --emulate phase_estimation.cpp
./a.out
However, if I just add a couple more kernel lambdas, even if unused,
struct r1PiGate {
void operator()(cudaq::qubit &q) __qpu__ { r1(1., q); }
};
int main() {
auto statePrep = [](cudaq::qubit &q) __qpu__ { x(q); };
auto oracle = [](cudaq::qubit &q) __qpu__ { r1(1., q); };
for (auto nQubits : std::vector<int>{2, 4, 6, 8}) {
auto counts = cudaq::sample(
qpe{}, nQubits, [](cudaq::qubit &q) __qpu__ { x(q); }, r1PiGate{});
auto mostProbable = counts.most_probable();
double theta = cudaq::to_integer(mostProbable) / (double)(1UL << nQubits);
auto piEstimate = 1. / (2 * theta);
printf("Pi Estimate(nQubits == %d) = %lf \n", nQubits, piEstimate);
}
}
This fails because no counts come back due to the execution going through Library Mode and the ExecutionManager. The Quake gets generated, but there must be some issue with overriding the original entry point function. Perhaps the signatures are wrong somehow.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.