Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/integration_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -759,7 +759,7 @@ jobs:
if [[ "$filename" == *.cpp ]]; then
if [[ "$filename" == *"quantinuum_ng/"* ]]; then
echo "### Running Quantinuum-NG test" >> $GITHUB_STEP_SUMMARY
nvq++ -v $filename --target quantinuum --quantinuum-machine Helios-1E --quantinuum-project ${{ secrets.QUANTINUUM_NEXUS_PROJECT_ID }} --quantinuum-max-cost 10 --quantinuum-noisy-simulation false
nvq++ -v $filename --target quantinuum --quantinuum-machine Helios-1E --quantinuum-project ${{ secrets.QUANTINUUM_NEXUS_PROJECT_ID }} --quantinuum-max-cost 10 --quantinuum-max-qubits 7 --quantinuum-noisy-simulation false
else
echo "### Running standard Quantinuum test" >> $GITHUB_STEP_SUMMARY
nvq++ -v $filename -DSYNTAX_CHECK --target quantinuum --quantinuum-machine H2-1SC --quantinuum-project ${{ secrets.QUANTINUUM_NEXUS_PROJECT_ID }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ class QuantinuumServerHelper : public ServerHelper, public QirServerHelper {
std::string machine = "H2-1SC";
/// @brief Max HQC cost
std::optional<int> maxCost;
/// @brief Maximum number of qubits
std::optional<int> maxQubits;
/// @brief Enable/disable noisy simulation on emulator.
std::optional<bool> noisySim;
/// @brief The type of simulator to use if machine is a simulator.
Expand Down Expand Up @@ -124,6 +126,14 @@ class QuantinuumServerHelper : public ServerHelper, public QirServerHelper {
throw std::runtime_error("max_cost must be a positive integer.");
}

// Set max qubits
iter = backendConfig.find("max_qubits");
if (iter != backendConfig.end()) {
maxQubits = std::stoi(iter->second);
if (maxQubits.value() < 1)
throw std::runtime_error("max_qubits must be a positive integer.");
}

// Noisy simulation
iter = backendConfig.find("noisy_simulation");
if (iter != backendConfig.end()) {
Expand Down Expand Up @@ -368,20 +378,36 @@ QuantinuumServerHelper::createJob(std::vector<KernelExecution> &circuitCodes) {
"QuantinuumConfig";
j["data"]["attributes"]["definition"]["backend_config"]["device_name"] =
machine;
// On Helios devices, we need to specify max-cost unless it's a syntax
// checker
if (machine.starts_with("Helios") && !machine.ends_with("SC") &&
!maxCost.has_value())
throw std::runtime_error(
"Please specify a maximum cost (`--quantinuum-max-cost <val>` when "
"compiling with nvq++ or `max_cost=<val>` in Python `set_target`) "
"when using device: " +
machine);
// On Helios devices, we need to specify max-cost and max-qubits unless it's
// a syntax checker
if (machine.starts_with("Helios") && !machine.ends_with("SC")) {
std::vector<std::string> errors;
if (!maxCost.has_value())
errors.push_back("Please specify maximum HQC cost "
"(`--quantinuum-max-cost <val>` when compiling with "
"nvq++ or `max_cost=<val>` in Python `set_target`)");
if (!maxQubits.has_value())
errors.push_back(
"Please specify maximum number of qubits (`--quantinuum-max-qubits "
"<val>` when compiling with nvq++ or `max_qubits=<val>` in Python "
"`set_target`)");
if (!errors.empty())
throw std::runtime_error(
fmt::format("Missing required configuration for device '{}': {}",
machine, fmt::join(errors, "; ")));
}

if (maxCost.has_value())
j["data"]["attributes"]["definition"]["backend_config"]["max_cost"] =
maxCost.value();

if (maxQubits.has_value()) {
j["data"]["attributes"]["definition"]["backend_config"]
["compiler_options"] = ServerMessage::object();
j["data"]["attributes"]["definition"]["backend_config"]
["compiler_options"]["max-qubits"] = maxQubits.value();
}

if (noisySim.has_value() && machine.ends_with("E"))
j["data"]["attributes"]["definition"]["backend_config"]
["noisy_simulation"] = noisySim.value() ? "true" : "false";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ target-arguments:
type: string
platform-arg: max_cost
help-string: "Specify the max HQC cost for a job submission."
- key: max-qubits
required: false
type: string
platform-arg: max_qubits
help-string: "Specify the maximum number of qubits for a job submission."
- key: noisy-simulation
required: false
type: string
Expand Down
Loading