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
5 changes: 5 additions & 0 deletions samples/sampler_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,12 @@

#include "circuit/quantumcircuit.hpp"
#include "primitives/backend_sampler_v2.hpp"
#ifdef QRMI_ROOT
#include "service/qiskit_runtime_service_qrmi.hpp"
#else
#include "service/qiskit_runtime_service_c.hpp"
#endif

#include "compiler/transpiler.hpp"

using namespace Qiskit;
Expand Down
8 changes: 6 additions & 2 deletions samples/transpile_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,11 @@
#include "circuit/quantumcircuit.hpp"
#include "primitives/backend_sampler_v2.hpp"

#ifdef QRMI_ROOT
#include "service/qiskit_runtime_service_qrmi.hpp"
#else
#include "service/qiskit_runtime_service_c.hpp"
#endif
#include "compiler/transpiler.hpp"

using namespace Qiskit::circuit;
Expand All @@ -50,12 +54,12 @@ int main()
}

std::cout << "input circuit" << std::endl;
circ.print();
circ.draw();

auto transpiled = transpile(circ, backend);

std::cout << "transpiled circuit" << std::endl;
transpiled.print();
transpiled.draw();

return 0;
}
Expand Down
2 changes: 1 addition & 1 deletion src/compiler/transpiler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ circuit::QuantumCircuit transpile(circuit::QuantumCircuit &circ, providers::Back
options.seed = seed_transpiler;
options.approximation_degree = approximation_degree;

QkTranspileResult result;
QkTranspileResult result = {nullptr, nullptr};
char *error;

QkExitCode ret = qk_transpile(circ.get_rust_circuit().get(), capi_target, &options, &result, &error);
Expand Down
6 changes: 6 additions & 0 deletions src/primitives/containers/bit_array.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@ class BitArray {
return array_.size();
}

/// @brief accessing raw bit array
BitVector& operator[](const uint_t i)
{
return array_[i];
}

// from simulator samples (< 64 qubits)
void from_samples(const reg_t& samples, uint_t num_bits);
void from_samples(const uint_t* samples, uint_t num_samples, uint_t num_bits);
Expand Down
14 changes: 14 additions & 0 deletions src/primitives/containers/sampler_pub_result.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,20 @@ class SamplerPubResult {
}
}

/// @brief add bitstring by hexstring
/// @param str hexstring to be added in data
void set_hexstring(const uint_t i, const std::string& str)
{
BitVector bits;
bits.from_hex_string(str);

uint_t pos = 0;
// split bitstring and store for each creg
for (auto creg : pub_.circuit().cregs()) {
data_[creg.name()][i] = bits.get_subset(pos, creg.size());
pos += creg.size();
}
}
};

} // namespace primitives
Expand Down
4 changes: 2 additions & 2 deletions src/providers/qkrt_job.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ class QkrtJob : public providers::Job {
bool result(uint_t index, primitives::SamplerPubResult& result) override
{
Samples *samples;
int ret = qkrt_job_results(&samples, service_.get(), job_.get());
int ret = qkrt_sampler_job_results(&samples, service_.get(), job_.get());
if (ret != 0) {
std::cerr << "ERROR: qkrt_job_results fails with code " << ret << std::endl;
return false;
Expand All @@ -116,7 +116,7 @@ class QkrtJob : public providers::Job {
for (size_t i = 0; i< num_samples; i++) {
char* sample = qkrt_samples_get_sample(samples, i);
std::string ss(sample);
result.data().set_hexstring(i, ss);
result.set_hexstring(i, ss);
qkrt_str_free(sample);
}
qkrt_samples_free(samples);
Expand Down
3 changes: 3 additions & 0 deletions src/transpiler/target.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ class Target
Target(QkTarget* target)
{
target_ = std::shared_ptr<QkTarget>(target, qk_target_free);
num_qubits_ = qk_target_num_qubits(target);
dt_ = qk_target_dt(target);
is_set_ = true;
}

/// @brief Create a new target
Expand Down