Skip to content
Open
Show file tree
Hide file tree
Changes from 6 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: 0 additions & 2 deletions configure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,6 @@ write_bazelrc "build --host_per_file_copt=external/eigen/.*@-Wno-maybe-uninitial

# The following warnings come from qsim.
# TODO: fix the code in qsim & update TFQ to use the updated version.
write_bazelrc "build --per_file_copt=tensorflow_quantum/core/ops/noise/tfq_.*@-Wno-unused-but-set-variable"
write_bazelrc "build --host_per_file_copt=tensorflow_quantum/core/ops/noise/tfq_.*@-Wno-unused-but-set-variable"
write_bazelrc "build --per_file_copt=tensorflow_quantum/core/ops/math_ops/tfq_.*@-Wno-deprecated-declarations"
write_bazelrc "build --host_per_file_copt=tensorflow_quantum/core/ops/math_ops/tfq_.*@-Wno-deprecated-declarations"

Expand Down
36 changes: 18 additions & 18 deletions tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ class TfqInnerProductOp : public tensorflow::OpKernel {

Status parse_status = ::tensorflow::Status();
auto p_lock = tensorflow::mutex();
auto construct_f = [&](int start, int end) {
for (int i = start; i < end; i++) {
auto construct_f = [&](int64_t start, int64_t end) {
for (int64_t i = start; i < end; i++) {
Status local =
QsimCircuitFromProgram(programs[i], maps[i], num_qubits[i],
&qsim_circuits[i], &fused_circuits[i]);
Expand All @@ -117,10 +117,10 @@ class TfqInnerProductOp : public tensorflow::OpKernel {
std::vector<QsimFusedCircuit>(output_dim_internal_size,
QsimFusedCircuit({})));

auto construct_f2 = [&](int start, int end) {
for (int i = start; i < end; i++) {
int ii = i / output_dim_internal_size;
int jj = i % output_dim_internal_size;
auto construct_f2 = [&](int64_t start, int64_t end) {
for (int64_t i = start; i < end; i++) {
int64_t ii = i / output_dim_internal_size;
int64_t jj = i % output_dim_internal_size;
Status status = QsimCircuitFromProgram(
other_programs[ii][jj], {}, num_qubits[ii],
&other_qsim_circuits[ii][jj], &other_fused_circuits[ii][jj]);
Expand All @@ -138,8 +138,8 @@ class TfqInnerProductOp : public tensorflow::OpKernel {
"No symbols are allowed in these circuits.")));
}

int max_num_qubits = 0;
for (const int num : num_qubits) {
uint64_t max_num_qubits = 0;
for (const uint64_t num : num_qubits) {
max_num_qubits = std::max(max_num_qubits, num);
}

Expand Down Expand Up @@ -170,7 +170,7 @@ class TfqInnerProductOp : public tensorflow::OpKernel {
using StateSpace = Simulator::StateSpace;

// Begin simulation.
int largest_nq = 1;
uint64_t largest_nq = 1;
Simulator sim = Simulator(tfq_for);
StateSpace ss = StateSpace(tfq_for);
auto sv = ss.Create(largest_nq);
Expand All @@ -180,7 +180,7 @@ class TfqInnerProductOp : public tensorflow::OpKernel {
// we no longer parallelize over circuits. Each time we encounter a
// a larger circuit we will grow the Statevector as necessary.
for (size_t i = 0; i < fused_circuits.size(); i++) {
int nq = num_qubits[i];
uint64_t nq = num_qubits[i];
if (nq > largest_nq) {
// need to switch to larger statespace.
largest_nq = nq;
Expand Down Expand Up @@ -215,7 +215,7 @@ class TfqInnerProductOp : public tensorflow::OpKernel {
}

void ComputeSmall(
const std::vector<int>& num_qubits, const int max_num_qubits,
const std::vector<int>& num_qubits, const uint64_t max_num_qubits,
const std::vector<QsimFusedCircuit>& fused_circuits,
const std::vector<std::vector<QsimFusedCircuit>>& other_fused_circuits,
tensorflow::OpKernelContext* context,
Expand All @@ -226,21 +226,21 @@ class TfqInnerProductOp : public tensorflow::OpKernel {

const int output_dim_internal_size = output_tensor->dimension(1);

auto DoWork = [&](int start, int end) {
int old_batch_index = -2;
int cur_batch_index = -1;
int largest_nq = 1;
int cur_internal_index;
auto DoWork = [&](int64_t start, int64_t end) {
int64_t old_batch_index = -2;
int64_t cur_batch_index = -1;
uint64_t largest_nq = 1;
Comment thread
mhucka marked this conversation as resolved.
Comment thread
mhucka marked this conversation as resolved.
int64_t cur_internal_index;

Simulator sim = Simulator(tfq_for);
StateSpace ss = StateSpace(tfq_for);
auto sv = ss.Create(largest_nq);
auto scratch = ss.Create(largest_nq);
for (int i = start; i < end; i++) {
for (int64_t i = start; i < end; i++) {
cur_batch_index = i / output_dim_internal_size;
cur_internal_index = i % output_dim_internal_size;

const int nq = num_qubits[cur_batch_index];
const uint64_t nq = num_qubits[cur_batch_index];

// (#679) Just ignore empty program
if (fused_circuits[cur_batch_index].size() == 0) {
Expand Down
36 changes: 18 additions & 18 deletions tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,8 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel {

Status parse_status = ::tensorflow::Status();
auto p_lock = tensorflow::mutex();
auto construct_f = [&](int start, int end) {
for (int i = start; i < end; i++) {
auto construct_f = [&](int64_t start, int64_t end) {
for (int64_t i = start; i < end; i++) {
Status local = QsimCircuitFromProgram(
programs[i], maps[i], num_qubits[i], &qsim_circuits[i],
&fused_circuits[i], &gate_meta[i]);
Expand All @@ -145,10 +145,10 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel {
std::vector<QsimFusedCircuit>(output_dim_internal_size,
QsimFusedCircuit({})));

auto construct_f2 = [&](int start, int end) {
for (int i = start; i < end; i++) {
int ii = i / output_dim_internal_size;
int jj = i % output_dim_internal_size;
auto construct_f2 = [&](int64_t start, int64_t end) {
for (int64_t i = start; i < end; i++) {
int64_t ii = i / output_dim_internal_size;
int64_t jj = i % output_dim_internal_size;
Status status = QsimCircuitFromProgram(
other_programs[ii][jj], {}, num_qubits[ii],
&other_qsim_circuits[ii][jj], &other_fused_circuits[ii][jj]);
Expand All @@ -166,8 +166,8 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel {
"No symbols are allowed in these circuits.")));
}

int max_num_qubits = 0;
for (const int num : num_qubits) {
uint64_t max_num_qubits = 0;
for (const uint64_t num : num_qubits) {
max_num_qubits = std::max(max_num_qubits, num);
}

Expand Down Expand Up @@ -224,7 +224,7 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel {
using StateSpace = Simulator::StateSpace;

// Begin simulation.
int largest_nq = 1;
uint64_t largest_nq = 1;
Simulator sim = Simulator(tfq_for);
StateSpace ss = StateSpace(tfq_for);
auto sv = ss.Create(largest_nq);
Expand All @@ -236,7 +236,7 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel {
// a larger circuit we will grow the Statevector as necessary.
for (std::vector<std::vector<qsim::GateFused<QsimGate>>>::size_type i = 0;
i < fused_circuits.size(); i++) {
int nq = num_qubits[i];
uint64_t nq = num_qubits[i];
if (nq > largest_nq) {
// need to switch to larger statespace.
largest_nq = nq;
Expand Down Expand Up @@ -315,7 +315,7 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel {
}

void ComputeSmall(
const std::vector<int>& num_qubits, const int max_num_qubits,
const std::vector<int>& num_qubits, const uint64_t max_num_qubits,
const std::vector<SymbolMap>& maps,
const std::vector<QsimCircuit>& qsim_circuits,
const std::vector<QsimFusedCircuit>& fused_circuits,
Expand All @@ -332,23 +332,23 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel {

const int output_dim_internal_size = other_fused_circuits[0].size();

auto DoWork = [&](int start, int end) {
int old_batch_index = -2;
int cur_batch_index = -1;
int largest_nq = 1;
int cur_internal_index;
auto DoWork = [&](int64_t start, int64_t end) {
int64_t old_batch_index = -2;
int64_t cur_batch_index = -1;
uint64_t largest_nq = 1;
Comment thread
mhucka marked this conversation as resolved.
Comment thread
mhucka marked this conversation as resolved.
int64_t cur_internal_index;

Simulator sim = Simulator(tfq_for);
StateSpace ss = StateSpace(tfq_for);
auto sv = ss.Create(largest_nq);
auto sv_adj = ss.Create(largest_nq);
auto scratch = ss.Create(largest_nq);
auto scratch2 = ss.Create(largest_nq);
for (int i = start; i < end; i++) {
for (int64_t i = start; i < end; i++) {
cur_batch_index = i / output_dim_internal_size;
cur_internal_index = i % output_dim_internal_size;

const int nq = num_qubits[cur_batch_index];
const uint64_t nq = num_qubits[cur_batch_index];

if (cur_batch_index != old_batch_index) {
// We've run into a new state vector we must compute.
Expand Down
26 changes: 13 additions & 13 deletions tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ class TfqSimulateMPS1DExpectationOp : public tensorflow::OpKernel {
QsimFusedCircuit({}));
Status parse_status = ::tensorflow::Status();
auto p_lock = tensorflow::mutex();
auto construct_f = [&](int start, int end) {
for (int i = start; i < end; i++) {
auto construct_f = [&](int64_t start, int64_t end) {
for (int64_t i = start; i < end; i++) {
Status local =
QsimCircuitFromProgram(programs[i], maps[i], num_qubits[i],
&qsim_circuits[i], &fused_circuits[i]);
Expand All @@ -127,9 +127,9 @@ class TfqSimulateMPS1DExpectationOp : public tensorflow::OpKernel {

// Find largest circuit for tensor size padding and allocate
// the output tensor.
int max_num_qubits = 0;
int min_num_qubits = 1 << 30;
for (const int num : num_qubits) {
uint64_t max_num_qubits = 0;
uint64_t min_num_qubits = 1 << 30;
for (const uint64_t num : num_qubits) {
max_num_qubits = std::max(max_num_qubits, num);
min_num_qubits = std::min(min_num_qubits, num);
}
Expand All @@ -148,7 +148,7 @@ class TfqSimulateMPS1DExpectationOp : public tensorflow::OpKernel {
int bond_dim_;

void ComputeSmall(const std::vector<int>& num_qubits,
const int max_num_qubits,
const uint64_t max_num_qubits,
const std::vector<QsimCircuit>& unfused_circuits,
const std::vector<std::vector<PauliSum>>& pauli_sums,
tensorflow::OpKernelContext* context,
Expand All @@ -160,23 +160,23 @@ class TfqSimulateMPS1DExpectationOp : public tensorflow::OpKernel {

Status compute_status = ::tensorflow::Status();
auto c_lock = tensorflow::mutex();
auto DoWork = [&](int start, int end) {
int old_batch_index = -2;
int cur_batch_index = -1;
int largest_nq = 1;
int cur_op_index;
auto DoWork = [&](int64_t start, int64_t end) {
int64_t old_batch_index = -2;
int64_t cur_batch_index = -1;
uint64_t largest_nq = 1;
Comment thread
mhucka marked this conversation as resolved.
Comment thread
mhucka marked this conversation as resolved.
int64_t cur_op_index;

// Note: ForArgs in MPSSimulator and MPSStateState are currently unused.
// So, this 1 is a dummy for qsim::For.
Simulator sim = Simulator(1);
StateSpace ss = StateSpace(1);
auto sv = ss.Create(largest_nq, bond_dim_);
auto scratch = ss.Create(largest_nq, bond_dim_);
for (int i = start; i < end; i++) {
for (int64_t i = start; i < end; i++) {
cur_batch_index = i / output_dim_op_size;
cur_op_index = i % output_dim_op_size;

const int nq = num_qubits[cur_batch_index];
const uint64_t nq = num_qubits[cur_batch_index];

// (#679) Just ignore empty program
auto unfused_gates = unfused_circuits[cur_batch_index].gates;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,8 @@ class TfqSimulateMPS1DSampledExpectationOp : public tensorflow::OpKernel {

Status parse_status = ::tensorflow::Status();
auto p_lock = tensorflow::mutex();
auto construct_f = [&](int start, int end) {
for (int i = start; i < end; i++) {
auto construct_f = [&](int64_t start, int64_t end) {
for (int64_t i = start; i < end; i++) {
Status local =
QsimCircuitFromProgram(programs[i], maps[i], num_qubits[i],
&qsim_circuits[i], &fused_circuits[i]);
Expand All @@ -140,9 +140,9 @@ class TfqSimulateMPS1DSampledExpectationOp : public tensorflow::OpKernel {

// Find largest circuit for tensor size padding and allocate
// the output tensor.
int max_num_qubits = 0;
int min_num_qubits = 1 << 30;
for (const int num : num_qubits) {
uint64_t max_num_qubits = 0;
uint64_t min_num_qubits = 1 << 30;
for (const uint64_t num : num_qubits) {
max_num_qubits = std::max(max_num_qubits, num);
min_num_qubits = std::min(min_num_qubits, num);
}
Expand All @@ -160,7 +160,7 @@ class TfqSimulateMPS1DSampledExpectationOp : public tensorflow::OpKernel {
private:
int bond_dim_;
void ComputeSmall(const std::vector<int>& num_qubits,
const int max_num_qubits,
const uint64_t max_num_qubits,
const std::vector<QsimCircuit>& unfused_circuits,
const std::vector<std::vector<PauliSum>>& pauli_sums,
const std::vector<std::vector<int>>& num_samples,
Expand All @@ -186,11 +186,11 @@ class TfqSimulateMPS1DSampledExpectationOp : public tensorflow::OpKernel {

Status compute_status = ::tensorflow::Status();
auto c_lock = tensorflow::mutex();
auto DoWork = [&](int start, int end) {
int old_batch_index = -2;
int cur_batch_index = -1;
int largest_nq = 1;
int cur_op_index;
auto DoWork = [&](int64_t start, int64_t end) {
int64_t old_batch_index = -2;
int64_t cur_batch_index = -1;
uint64_t largest_nq = 1;
Comment thread
mhucka marked this conversation as resolved.
Comment thread
mhucka marked this conversation as resolved.
int64_t cur_op_index;

// Note: ForArgs in MPSSimulator and MPSStateState are currently unused.
// So, this 1 is a dummy for qsim::For.
Expand All @@ -207,11 +207,11 @@ class TfqSimulateMPS1DSampledExpectationOp : public tensorflow::OpKernel {
auto local_gen = random_gen.ReserveSamples32(n_random);
tensorflow::random::SimplePhilox rand_source(&local_gen);

for (int i = start; i < end; i++) {
for (int64_t i = start; i < end; i++) {
cur_batch_index = i / output_dim_op_size;
cur_op_index = i % output_dim_op_size;

const int nq = num_qubits[cur_batch_index];
const uint64_t nq = num_qubits[cur_batch_index];

// (#679) Just ignore empty program
auto unfused_gates = unfused_circuits[cur_batch_index].gates;
Expand Down
24 changes: 12 additions & 12 deletions tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ class TfqSimulateMPS1DSamplesOp : public tensorflow::OpKernel {

Status parse_status = ::tensorflow::Status();
auto p_lock = tensorflow::mutex();
auto construct_f = [&](int start, int end) {
for (int i = start; i < end; i++) {
auto construct_f = [&](int64_t start, int64_t end) {
for (int64_t i = start; i < end; i++) {
Status local =
QsimCircuitFromProgram(programs[i], maps[i], num_qubits[i],
&qsim_circuits[i], &fused_circuits[i]);
Expand All @@ -107,9 +107,9 @@ class TfqSimulateMPS1DSamplesOp : public tensorflow::OpKernel {

// Find largest circuit for tensor size padding and allocate
// the output tensor.
int max_num_qubits = 0;
int min_num_qubits = 1 << 30;
for (const int num : num_qubits) {
uint64_t max_num_qubits = 0;
uint64_t min_num_qubits = 1 << 30;
for (const uint64_t num : num_qubits) {
max_num_qubits = std::max(max_num_qubits, num);
min_num_qubits = std::min(min_num_qubits, num);
}
Expand All @@ -118,7 +118,7 @@ class TfqSimulateMPS1DSamplesOp : public tensorflow::OpKernel {
tensorflow::errors::InvalidArgument(
"All input circuits require minimum 3 qubits."));

const int output_dim_size = maps.size();
const size_t output_dim_size = maps.size();
tensorflow::TensorShape output_shape;
output_shape.AddDim(output_dim_size);
output_shape.AddDim(num_samples);
Expand All @@ -142,7 +142,7 @@ class TfqSimulateMPS1DSamplesOp : public tensorflow::OpKernel {
int bond_dim_;

void ComputeSmall(const std::vector<int>& num_qubits,
const int max_num_qubits, const int num_samples,
const uint64_t max_num_qubits, const int num_samples,
const std::vector<QsimCircuit>& unfused_circuits,
tensorflow::OpKernelContext* context,
tensorflow::TTypes<int8_t, 3>::Tensor* output_tensor) {
Expand All @@ -153,8 +153,8 @@ class TfqSimulateMPS1DSamplesOp : public tensorflow::OpKernel {
tensorflow::GuardedPhiloxRandom random_gen;
random_gen.Init(tensorflow::random::New64(), tensorflow::random::New64());

auto DoWork = [&](int start, int end) {
int largest_nq = 1;
auto DoWork = [&](int64_t start, int64_t end) {
uint64_t largest_nq = 1;
Comment thread
mhucka marked this conversation as resolved.
// Note: ForArgs in MPSSimulator and MPSStateState are currently unused.
// So, this 1 is a dummy for qsim::For.
Simulator sim = Simulator(1);
Expand All @@ -166,8 +166,8 @@ class TfqSimulateMPS1DSamplesOp : public tensorflow::OpKernel {
auto local_gen = random_gen.ReserveSamples32(unfused_circuits.size() + 1);
tensorflow::random::SimplePhilox rand_source(&local_gen);

for (int i = start; i < end; i++) {
int nq = num_qubits[i];
for (int64_t i = start; i < end; i++) {
uint64_t nq = num_qubits[i];

if (nq > largest_nq) {
// need to switch to larger statespace.
Expand All @@ -190,7 +190,7 @@ class TfqSimulateMPS1DSamplesOp : public tensorflow::OpKernel {
&results);

for (int j = 0; j < num_samples; j++) {
int64_t q_ind = 0;
uint64_t q_ind = 0;
while (q_ind < max_num_qubits - nq) {
(*output_tensor)(i, j, static_cast<ptrdiff_t>(q_ind)) = -2;
q_ind++;
Expand Down
Loading
Loading