Skip to content
Draft
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: 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