From a40feb7246e054d6c8f84dfbe021fca724f8c6f1 Mon Sep 17 00:00:00 2001 From: mhucka Date: Wed, 13 May 2026 04:09:43 +0000 Subject: [PATCH 1/5] Fix C++ int type mismatch warnings in core/ops files PR https://github.com/tensorflow/quantum/pull/476 (dating from 2021) aimed to resolve numerous warnings emitted by the C++ compiler. Most have already been resolved since the time the PR was written, but some still remained. This PR addresses most (possibly all) the rest that can be addressed. (Some cannot be addressed directly because they come from other libraries.) All of these concern the core ops (`tensorflow_quantum/core/ops/`) and all the warnings are essentially in the same category of thing, so while this PR touches many files, it seems appropriate to handle them together: * Changed the data type of variables `max_num_qubits` and `min_num_qubits` from `int` to `uint64_t` to match the underlying data structures and vector iterations where they were being used. * Changed the data types of some iterator and limit variables (`int q_ind`, `int64_t q_ind`, `int nq`, and `int largest_nq`) to `uint64_t` to resolve compiler warnings when evaluated against the newly updated `max_num_qubits` mentioned above. * Changed the data type of `output_dim_size` from `int` to `size_t` where this variable was directly assigned the result of `maps.size()` and similar standard library size methods. * Retained the data types of variables like `max_psum_length` have been left as `int` because they interface with Protobuf sizes, which are signed ints. * In `configure.sh`, removed `-Wno-unused-but-set-variable` from the flags used during builds of `tensorflow_quantum/core/ops/noise/tfq_.*`, since the underlying reason for the warnings has been addressed. --- configure.sh | 2 -- .../core/ops/math_ops/tfq_inner_product.cc | 14 ++++++------ .../ops/math_ops/tfq_inner_product_grad.cc | 14 ++++++------ .../math_ops/tfq_simulate_1d_expectation.cc | 12 +++++----- .../tfq_simulate_1d_sampled_expectation.cc | 12 +++++----- .../ops/math_ops/tfq_simulate_1d_samples.cc | 16 +++++++------- .../core/ops/noise/tfq_noisy_expectation.cc | 14 ++++++------ .../noise/tfq_noisy_sampled_expectation.cc | 14 ++++++------ .../core/ops/noise/tfq_noisy_samples.cc | 22 +++++++++---------- .../core/ops/tfq_adj_grad_op.cc | 14 ++++++------ .../core/ops/tfq_calculate_unitary_op.cc | 10 ++++----- .../core/ops/tfq_circuit_append_op.cc | 2 +- .../core/ops/tfq_simulate_expectation_op.cc | 14 ++++++------ .../tfq_simulate_sampled_expectation_op.cc | 14 ++++++------ .../core/ops/tfq_simulate_samples_op.cc | 22 +++++++++---------- .../core/ops/tfq_simulate_state_op.cc | 18 +++++++-------- 16 files changed, 106 insertions(+), 108 deletions(-) diff --git a/configure.sh b/configure.sh index 2ed76a617..67e0d9c17 100755 --- a/configure.sh +++ b/configure.sh @@ -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" diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc index df83b6222..8055b116f 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc @@ -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); } @@ -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); @@ -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; @@ -215,7 +215,7 @@ class TfqInnerProductOp : public tensorflow::OpKernel { } void ComputeSmall( - const std::vector& num_qubits, const int max_num_qubits, + const std::vector& num_qubits, const uint64_t max_num_qubits, const std::vector& fused_circuits, const std::vector>& other_fused_circuits, tensorflow::OpKernelContext* context, @@ -229,7 +229,7 @@ class TfqInnerProductOp : public tensorflow::OpKernel { auto DoWork = [&](int start, int end) { int old_batch_index = -2; int cur_batch_index = -1; - int largest_nq = 1; + uint64_t largest_nq = 1; int cur_internal_index; Simulator sim = Simulator(tfq_for); @@ -240,7 +240,7 @@ class TfqInnerProductOp : public tensorflow::OpKernel { 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) { diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc index 1563ef37a..110cb1507 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc @@ -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); } @@ -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); @@ -236,7 +236,7 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel { // a larger circuit we will grow the Statevector as necessary. for (std::vector>>::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; @@ -315,7 +315,7 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel { } void ComputeSmall( - const std::vector& num_qubits, const int max_num_qubits, + const std::vector& num_qubits, const uint64_t max_num_qubits, const std::vector& maps, const std::vector& qsim_circuits, const std::vector& fused_circuits, @@ -335,7 +335,7 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel { auto DoWork = [&](int start, int end) { int old_batch_index = -2; int cur_batch_index = -1; - int largest_nq = 1; + uint64_t largest_nq = 1; int cur_internal_index; Simulator sim = Simulator(tfq_for); @@ -348,7 +348,7 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel { 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. diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc index aacf82cb6..5e0ab39f0 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc @@ -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); } @@ -148,7 +148,7 @@ class TfqSimulateMPS1DExpectationOp : public tensorflow::OpKernel { int bond_dim_; void ComputeSmall(const std::vector& num_qubits, - const int max_num_qubits, + const uint64_t max_num_qubits, const std::vector& unfused_circuits, const std::vector>& pauli_sums, tensorflow::OpKernelContext* context, @@ -163,7 +163,7 @@ class TfqSimulateMPS1DExpectationOp : public tensorflow::OpKernel { auto DoWork = [&](int start, int end) { int old_batch_index = -2; int cur_batch_index = -1; - int largest_nq = 1; + uint64_t largest_nq = 1; int cur_op_index; // Note: ForArgs in MPSSimulator and MPSStateState are currently unused. @@ -176,7 +176,7 @@ class TfqSimulateMPS1DExpectationOp : public tensorflow::OpKernel { 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; diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc index e7014eb46..95702c489 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc @@ -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); } @@ -160,7 +160,7 @@ class TfqSimulateMPS1DSampledExpectationOp : public tensorflow::OpKernel { private: int bond_dim_; void ComputeSmall(const std::vector& num_qubits, - const int max_num_qubits, + const uint64_t max_num_qubits, const std::vector& unfused_circuits, const std::vector>& pauli_sums, const std::vector>& num_samples, @@ -189,7 +189,7 @@ class TfqSimulateMPS1DSampledExpectationOp : public tensorflow::OpKernel { auto DoWork = [&](int start, int end) { int old_batch_index = -2; int cur_batch_index = -1; - int largest_nq = 1; + uint64_t largest_nq = 1; int cur_op_index; // Note: ForArgs in MPSSimulator and MPSStateState are currently unused. @@ -211,7 +211,7 @@ class TfqSimulateMPS1DSampledExpectationOp : public tensorflow::OpKernel { 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; diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc index 608f94689..8b643ee51 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc @@ -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); } @@ -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); @@ -142,7 +142,7 @@ class TfqSimulateMPS1DSamplesOp : public tensorflow::OpKernel { int bond_dim_; void ComputeSmall(const std::vector& num_qubits, - const int max_num_qubits, const int num_samples, + const uint64_t max_num_qubits, const int num_samples, const std::vector& unfused_circuits, tensorflow::OpKernelContext* context, tensorflow::TTypes::Tensor* output_tensor) { @@ -154,7 +154,7 @@ class TfqSimulateMPS1DSamplesOp : public tensorflow::OpKernel { random_gen.Init(tensorflow::random::New64(), tensorflow::random::New64()); auto DoWork = [&](int start, int end) { - int largest_nq = 1; + uint64_t largest_nq = 1; // Note: ForArgs in MPSSimulator and MPSStateState are currently unused. // So, this 1 is a dummy for qsim::For. Simulator sim = Simulator(1); @@ -167,7 +167,7 @@ class TfqSimulateMPS1DSamplesOp : public tensorflow::OpKernel { tensorflow::random::SimplePhilox rand_source(&local_gen); for (int i = start; i < end; i++) { - int nq = num_qubits[i]; + uint64_t nq = num_qubits[i]; if (nq > largest_nq) { // need to switch to larger statespace. @@ -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(q_ind)) = -2; q_ind++; diff --git a/tensorflow_quantum/core/ops/noise/tfq_noisy_expectation.cc b/tensorflow_quantum/core/ops/noise/tfq_noisy_expectation.cc index 5a13fa1af..c70e03195 100644 --- a/tensorflow_quantum/core/ops/noise/tfq_noisy_expectation.cc +++ b/tensorflow_quantum/core/ops/noise/tfq_noisy_expectation.cc @@ -132,8 +132,8 @@ class TfqNoisyExpectationOp : public tensorflow::OpKernel { programs.size(), num_cycles, construct_f); OP_REQUIRES_OK(context, parse_status); - 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); } @@ -173,7 +173,7 @@ class TfqNoisyExpectationOp : public tensorflow::OpKernel { qsim::MultiQubitGateFuser, Simulator>; // 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); @@ -195,7 +195,7 @@ class TfqNoisyExpectationOp : 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 < ncircuits.size(); i++) { - int nq = num_qubits[i]; + uint64_t nq = num_qubits[i]; // (#679) Just ignore empty program if (ncircuits[i].channels.size() == 0) { @@ -256,7 +256,7 @@ class TfqNoisyExpectationOp : public tensorflow::OpKernel { } void ComputeSmall(const std::vector& num_qubits, - const int max_num_qubits, + const uint64_t max_num_qubits, const std::vector& ncircuits, const std::vector>& pauli_sums, const std::vector>& num_samples, @@ -298,7 +298,7 @@ class TfqNoisyExpectationOp : public tensorflow::OpKernel { auto DoWork = [&](int start, int end) { // Begin simulation. const auto tfq_for = qsim::SequentialFor(1); - 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); @@ -311,7 +311,7 @@ class TfqNoisyExpectationOp : public tensorflow::OpKernel { tensorflow::random::SimplePhilox rand_source(&local_gen); for (size_t i = 0; i < ncircuits.size(); i++) { - int nq = num_qubits[i]; + uint64_t nq = num_qubits[i]; int rep_offset = rep_offsets[start][i]; // (#679) Just ignore empty program diff --git a/tensorflow_quantum/core/ops/noise/tfq_noisy_sampled_expectation.cc b/tensorflow_quantum/core/ops/noise/tfq_noisy_sampled_expectation.cc index ed59331b1..8f8013012 100644 --- a/tensorflow_quantum/core/ops/noise/tfq_noisy_sampled_expectation.cc +++ b/tensorflow_quantum/core/ops/noise/tfq_noisy_sampled_expectation.cc @@ -133,8 +133,8 @@ class TfqNoisySampledExpectationOp : public tensorflow::OpKernel { programs.size(), num_cycles, construct_f); OP_REQUIRES_OK(context, parse_status); - 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); } @@ -174,7 +174,7 @@ class TfqNoisySampledExpectationOp : public tensorflow::OpKernel { qsim::MultiQubitGateFuser, Simulator>; // 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); @@ -199,7 +199,7 @@ class TfqNoisySampledExpectationOp : 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 < ncircuits.size(); i++) { - int nq = num_qubits[i]; + uint64_t nq = num_qubits[i]; // (#679) Just ignore empty program if (ncircuits[i].channels.empty()) { @@ -260,7 +260,7 @@ class TfqNoisySampledExpectationOp : public tensorflow::OpKernel { } void ComputeSmall(const std::vector& num_qubits, - const int max_num_qubits, + const uint64_t max_num_qubits, const std::vector& ncircuits, const std::vector>& pauli_sums, const std::vector>& num_samples, @@ -305,7 +305,7 @@ class TfqNoisySampledExpectationOp : public tensorflow::OpKernel { auto DoWork = [&](int start, int end) { // Begin simulation. const auto tfq_for = qsim::SequentialFor(1); - 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); @@ -317,7 +317,7 @@ class TfqNoisySampledExpectationOp : public tensorflow::OpKernel { tensorflow::random::SimplePhilox rand_source(&local_gen); for (size_t i = 0; i < ncircuits.size(); i++) { - int nq = num_qubits[i]; + uint64_t nq = num_qubits[i]; int rep_offset = rep_offsets[start][i]; // (#679) Just ignore empty program diff --git a/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc b/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc index a09f826b9..40cd6b091 100644 --- a/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc +++ b/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc @@ -98,12 +98,12 @@ class TfqNoisySamplesOp : public tensorflow::OpKernel { programs.size(), num_cycles, construct_f); OP_REQUIRES_OK(context, parse_status); - 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); } - 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); @@ -133,7 +133,7 @@ class TfqNoisySamplesOp : public tensorflow::OpKernel { private: void ComputeLarge(const std::vector& num_qubits, - const int max_num_qubits, const int num_samples, + const uint64_t max_num_qubits, const int num_samples, const std::vector& ncircuits, tensorflow::OpKernelContext* context, tensorflow::TTypes::Tensor* output_tensor) { @@ -146,7 +146,7 @@ class TfqNoisySamplesOp : public tensorflow::OpKernel { qsim::MultiQubitGateFuser, Simulator>; // 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); @@ -161,7 +161,7 @@ class TfqNoisySamplesOp : public tensorflow::OpKernel { // we no longer parallelize over circuits. Each time we encounter a // a larger circuit we will grow the Statevector as nescessary. for (size_t i = 0; i < ncircuits.size(); i++) { - int nq = num_qubits[i]; + uint64_t nq = num_qubits[i]; if (nq > largest_nq) { // need to switch to larger statespace. @@ -182,7 +182,7 @@ class TfqNoisySamplesOp : public tensorflow::OpKernel { QTSimulator::RunOnce(param, ncircuits[i], rand_source.Rand64(), ss, sim, sv, gathered_samples); - int q_ind = 0; + uint64_t q_ind = 0; uint64_t mask = 1; bool val = 0; while (q_ind < nq) { @@ -202,7 +202,7 @@ class TfqNoisySamplesOp : public tensorflow::OpKernel { } void ComputeSmall(const std::vector& num_qubits, - const int max_num_qubits, const int num_samples, + const uint64_t max_num_qubits, const int num_samples, const std::vector& ncircuits, tensorflow::OpKernelContext* context, tensorflow::TTypes::Tensor* output_tensor) { @@ -242,7 +242,7 @@ class TfqNoisySamplesOp : public tensorflow::OpKernel { auto DoWork = [&](int start, int end) { // Begin simulation. const auto tfq_for = qsim::SequentialFor(1); - 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); @@ -254,7 +254,7 @@ class TfqNoisySamplesOp : public tensorflow::OpKernel { tensorflow::random::SimplePhilox rand_source(&local_gen); for (size_t i = 0; i < ncircuits.size(); i++) { - int nq = num_qubits[i]; + uint64_t nq = num_qubits[i]; int j = start > 0 ? offset_prefix_sum[start - 1][i] : 0; int needed_samples = offset_prefix_sum[start][i] - j; if (needed_samples <= 0) { @@ -279,7 +279,7 @@ class TfqNoisySamplesOp : public tensorflow::OpKernel { QTSimulator::RunOnce(param, ncircuits[i], rand_source.Rand64(), ss, sim, sv, gathered_samples); - int q_ind = 0; + uint64_t q_ind = 0; uint64_t mask = 1; bool val = 0; while (q_ind < nq) { diff --git a/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc b/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc index 088c6dcde..1dd081960 100644 --- a/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc +++ b/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc @@ -144,8 +144,8 @@ class TfqAdjointGradientOp : public tensorflow::OpKernel { context->input(4).dim_size(1), " gradient entries and ", context->input(3).dim_size(1), " paulis per circuit."))); - 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); } @@ -171,7 +171,7 @@ class TfqAdjointGradientOp : public tensorflow::OpKernel { private: void ComputeSmall( - const std::vector& num_qubits, const int max_num_qubits, + const std::vector& num_qubits, const uint64_t max_num_qubits, const std::vector& qsim_circuits, const std::vector& maps, const std::vector>>& full_fuse, @@ -189,7 +189,7 @@ class TfqAdjointGradientOp : public tensorflow::OpKernel { auto DoWork = [&](int start, int end) { // 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); @@ -197,7 +197,7 @@ class TfqAdjointGradientOp : public tensorflow::OpKernel { auto scratch2 = ss.Create(largest_nq); for (int i = start; i < end; 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; @@ -301,7 +301,7 @@ class TfqAdjointGradientOp : 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); @@ -309,7 +309,7 @@ class TfqAdjointGradientOp : public tensorflow::OpKernel { auto scratch2 = ss.Create(largest_nq); for (size_t i = 0; i < partial_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. diff --git a/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc b/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc index 4f1f662ca..8cf41bec8 100644 --- a/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc +++ b/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc @@ -86,14 +86,14 @@ class TfqCalculateUnitaryOp : public tensorflow::OpKernel { // Find largest circuit for tensor size padding and allocate // the output tensor. - 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); } // TODO(pmassey): Investigate creating a matrix that isn't just the maximum // required size. - 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(1 << max_num_qubits); @@ -110,14 +110,14 @@ class TfqCalculateUnitaryOp : public tensorflow::OpKernel { using Unitary = UnitarySpace::Unitary; // Begin simulation. - int largest_nq = 1; + uint64_t largest_nq = 1; Unitary u = UnitarySpace(tfq_for).CreateUnitary(largest_nq); // Simulate programs one by one. Parallelizing over state vectors // we no longer parallelize over circuits. Each time we encounter a // a larger circuit we will grow the unitary as nescessary. for (size_t i = 0; i < fused_circuits.size(); i++) { - int nq = num_qubits[i]; + uint64_t nq = num_qubits[i]; UCalculator sim = UCalculator(tfq_for); UnitarySpace us = UnitarySpace(tfq_for); if (nq > largest_nq) { diff --git a/tensorflow_quantum/core/ops/tfq_circuit_append_op.cc b/tensorflow_quantum/core/ops/tfq_circuit_append_op.cc index 582bd1681..a279de9bd 100644 --- a/tensorflow_quantum/core/ops/tfq_circuit_append_op.cc +++ b/tensorflow_quantum/core/ops/tfq_circuit_append_op.cc @@ -64,7 +64,7 @@ class TfqCircuitAppendOp : public tensorflow::OpKernel { } }; - const int output_dim_size = programs.size(); + const size_t output_dim_size = programs.size(); const int block_size = GetBlockSize(context, output_dim_size); context->device() ->tensorflow_cpu_worker_threads() diff --git a/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc index 6f0561217..855846867 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc @@ -107,8 +107,8 @@ class TfqSimulateExpectationOp : public tensorflow::OpKernel { programs.size(), num_cycles, construct_f); OP_REQUIRES_OK(context, parse_status); - 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); } @@ -139,7 +139,7 @@ class TfqSimulateExpectationOp : 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); @@ -149,7 +149,7 @@ class TfqSimulateExpectationOp : 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. @@ -180,7 +180,7 @@ class TfqSimulateExpectationOp : public tensorflow::OpKernel { } void ComputeSmall( - const std::vector& num_qubits, const int max_num_qubits, + const std::vector& num_qubits, const uint64_t max_num_qubits, const std::vector>>& fused_circuits, const std::vector>& pauli_sums, tensorflow::OpKernelContext* context, @@ -196,7 +196,7 @@ class TfqSimulateExpectationOp : public tensorflow::OpKernel { auto DoWork = [&](int start, int end) { int old_batch_index = -2; int cur_batch_index = -1; - int largest_nq = 1; + uint64_t largest_nq = 1; int cur_op_index; Simulator sim = Simulator(tfq_for); @@ -207,7 +207,7 @@ class TfqSimulateExpectationOp : public tensorflow::OpKernel { 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 if (fused_circuits[cur_batch_index].size() == 0) { diff --git a/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc index 552644a43..14217e127 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc @@ -126,8 +126,8 @@ class TfqSimulateSampledExpectationOp : public tensorflow::OpKernel { programs.size(), num_cycles, construct_f); OP_REQUIRES_OK(context, parse_status); - 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); } @@ -159,7 +159,7 @@ class TfqSimulateSampledExpectationOp : 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); @@ -181,7 +181,7 @@ class TfqSimulateSampledExpectationOp : 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. @@ -212,7 +212,7 @@ class TfqSimulateSampledExpectationOp : public tensorflow::OpKernel { } void ComputeSmall( - const std::vector& num_qubits, const int max_num_qubits, + const std::vector& num_qubits, const uint64_t max_num_qubits, const std::vector>>& fused_circuits, const std::vector>& pauli_sums, const std::vector>& num_samples, @@ -241,7 +241,7 @@ class TfqSimulateSampledExpectationOp : public tensorflow::OpKernel { auto DoWork = [&](int start, int end) { int old_batch_index = -2; int cur_batch_index = -1; - int largest_nq = 1; + uint64_t largest_nq = 1; int cur_op_index; Simulator sim = Simulator(tfq_for); @@ -259,7 +259,7 @@ class TfqSimulateSampledExpectationOp : public tensorflow::OpKernel { 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 if (fused_circuits[cur_batch_index].size() == 0) { diff --git a/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc index 447f66c70..b972f8af2 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc @@ -95,12 +95,12 @@ class TfqSimulateSamplesOp : public tensorflow::OpKernel { // Find largest circuit for tensor size padding and allocate // the output tensor. - 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); } - 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); @@ -130,7 +130,7 @@ class TfqSimulateSamplesOp : public tensorflow::OpKernel { private: void ComputeLarge( - const std::vector& num_qubits, const int max_num_qubits, + const std::vector& num_qubits, const uint64_t max_num_qubits, const int num_samples, const std::vector>>& fused_circuits, tensorflow::OpKernelContext* context, @@ -141,7 +141,7 @@ class TfqSimulateSamplesOp : 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); @@ -155,7 +155,7 @@ class TfqSimulateSamplesOp : public tensorflow::OpKernel { // we no longer parallelize over circuits. Each time we encounter a // a larger circuit we will grow the Statevector as nescessary. 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. @@ -169,7 +169,7 @@ class TfqSimulateSamplesOp : public tensorflow::OpKernel { auto samples = ss.Sample(sv, num_samples, rand_source.Rand32()); for (int j = 0; j < num_samples; j++) { - int q_ind = 0; + uint64_t q_ind = 0; uint64_t mask = 1; bool val = 0; while (q_ind < nq) { @@ -189,7 +189,7 @@ class TfqSimulateSamplesOp : public tensorflow::OpKernel { } void ComputeSmall( - const std::vector& num_qubits, const int max_num_qubits, + const std::vector& num_qubits, const uint64_t max_num_qubits, const int num_samples, const std::vector>>& fused_circuits, tensorflow::OpKernelContext* context, @@ -202,7 +202,7 @@ class TfqSimulateSamplesOp : public tensorflow::OpKernel { random_gen.Init(tensorflow::random::New64(), tensorflow::random::New64()); auto DoWork = [&](int start, int end) { - 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); @@ -211,7 +211,7 @@ class TfqSimulateSamplesOp : public tensorflow::OpKernel { tensorflow::random::SimplePhilox rand_source(&local_gen); for (int i = start; i < end; i++) { - int nq = num_qubits[i]; + uint64_t nq = num_qubits[i]; if (nq > largest_nq) { // need to switch to larger statespace. @@ -225,7 +225,7 @@ class TfqSimulateSamplesOp : public tensorflow::OpKernel { auto samples = ss.Sample(sv, num_samples, rand_source.Rand32()); for (int j = 0; j < num_samples; j++) { - int q_ind = 0; + uint64_t q_ind = 0; uint64_t mask = 1; bool val = 0; while (q_ind < nq) { diff --git a/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc index cbc3756cf..39b0b7c0a 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc @@ -87,12 +87,12 @@ class TfqSimulateStateOp : public tensorflow::OpKernel { // Find largest circuit for tensor size padding and allocate // the output tensor. - 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); } - 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(1 << max_num_qubits); @@ -118,7 +118,7 @@ class TfqSimulateStateOp : public tensorflow::OpKernel { private: void ComputeLarge( - const std::vector& num_qubits, const int max_num_qubits, + const std::vector& num_qubits, const uint64_t max_num_qubits, const std::vector>>& fused_circuits, tensorflow::OpKernelContext* context, tensorflow::TTypes, 1>::Matrix* output_tensor) { @@ -128,7 +128,7 @@ class TfqSimulateStateOp : 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); @@ -137,7 +137,7 @@ class TfqSimulateStateOp : public tensorflow::OpKernel { // we no longer parallelize over circuits. Each time we encounter a // a larger circuit we will grow the Statevector as nescessary. 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. @@ -172,7 +172,7 @@ class TfqSimulateStateOp : public tensorflow::OpKernel { } void ComputeSmall( - const std::vector& num_qubits, const int max_num_qubits, + const std::vector& num_qubits, const uint64_t max_num_qubits, const std::vector>>& fused_circuits, tensorflow::OpKernelContext* context, tensorflow::TTypes, 1>::Matrix* output_tensor) { @@ -181,12 +181,12 @@ class TfqSimulateStateOp : public tensorflow::OpKernel { using StateSpace = Simulator::StateSpace; auto DoWork = [&](int start, int end) { - 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); for (int i = start; i < end; i++) { - int nq = num_qubits[i]; + uint64_t nq = num_qubits[i]; if (nq > largest_nq) { // need to switch to larger statespace. From b1f3af5b38cdddb73724480636d8d468fff197d6 Mon Sep 17 00:00:00 2001 From: mhucka Date: Mon, 18 May 2026 05:30:13 +0000 Subject: [PATCH 2/5] Address Gemini Code Assist comments about int64's --- .../core/ops/math_ops/tfq_inner_product.cc | 4 ++-- .../core/ops/math_ops/tfq_inner_product_grad.cc | 4 ++-- .../core/ops/math_ops/tfq_simulate_1d_expectation.cc | 4 ++-- .../math_ops/tfq_simulate_1d_sampled_expectation.cc | 4 ++-- .../core/ops/math_ops/tfq_simulate_1d_samples.cc | 4 ++-- .../core/ops/tfq_calculate_unitary_op.cc | 10 +++++----- .../core/ops/tfq_simulate_expectation_op.cc | 4 ++-- .../core/ops/tfq_simulate_sampled_expectation_op.cc | 4 ++-- tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc | 4 ++-- tensorflow_quantum/core/ops/tfq_simulate_state_op.cc | 6 +++--- 10 files changed, 24 insertions(+), 24 deletions(-) diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc index 8055b116f..cfb2c1e5b 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc @@ -226,7 +226,7 @@ class TfqInnerProductOp : public tensorflow::OpKernel { const int output_dim_internal_size = output_tensor->dimension(1); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { int old_batch_index = -2; int cur_batch_index = -1; uint64_t largest_nq = 1; @@ -236,7 +236,7 @@ class TfqInnerProductOp : public tensorflow::OpKernel { 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; diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc index 110cb1507..b1d98805d 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc @@ -332,7 +332,7 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel { const int output_dim_internal_size = other_fused_circuits[0].size(); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { int old_batch_index = -2; int cur_batch_index = -1; uint64_t largest_nq = 1; @@ -344,7 +344,7 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel { 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; diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc index 5e0ab39f0..5dfe20dc0 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc @@ -160,7 +160,7 @@ class TfqSimulateMPS1DExpectationOp : public tensorflow::OpKernel { Status compute_status = ::tensorflow::Status(); auto c_lock = tensorflow::mutex(); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { int old_batch_index = -2; int cur_batch_index = -1; uint64_t largest_nq = 1; @@ -172,7 +172,7 @@ class TfqSimulateMPS1DExpectationOp : public tensorflow::OpKernel { 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; diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc index 95702c489..997aa58dc 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc @@ -186,7 +186,7 @@ class TfqSimulateMPS1DSampledExpectationOp : public tensorflow::OpKernel { Status compute_status = ::tensorflow::Status(); auto c_lock = tensorflow::mutex(); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { int old_batch_index = -2; int cur_batch_index = -1; uint64_t largest_nq = 1; @@ -207,7 +207,7 @@ 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; diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc index 8b643ee51..09dbcadb4 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc @@ -153,7 +153,7 @@ class TfqSimulateMPS1DSamplesOp : public tensorflow::OpKernel { tensorflow::GuardedPhiloxRandom random_gen; random_gen.Init(tensorflow::random::New64(), tensorflow::random::New64()); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { uint64_t largest_nq = 1; // Note: ForArgs in MPSSimulator and MPSStateState are currently unused. // So, this 1 is a dummy for qsim::For. @@ -166,7 +166,7 @@ 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++) { + for (int64_t i = start; i < end; i++) { uint64_t nq = num_qubits[i]; if (nq > largest_nq) { diff --git a/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc b/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc index 8cf41bec8..dd38f98ea 100644 --- a/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc +++ b/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc @@ -96,8 +96,8 @@ class TfqCalculateUnitaryOp : public tensorflow::OpKernel { const size_t output_dim_size = maps.size(); tensorflow::TensorShape output_shape; output_shape.AddDim(output_dim_size); - output_shape.AddDim(1 << max_num_qubits); - output_shape.AddDim(1 << max_num_qubits); + output_shape.AddDim(uint64_t(1) << max_num_qubits); + output_shape.AddDim(uint64_t(1) << max_num_qubits); tensorflow::Tensor *output = nullptr; OP_REQUIRES_OK(context, context->allocate_output(0, output_shape, &output)); @@ -137,8 +137,8 @@ class TfqCalculateUnitaryOp : public tensorflow::OpKernel { uint64_t crossover = uint64_t(1) << nq; for (uint64_t l = start; l < end; l++) { - uint64_t j = l / (1 << max_num_qubits); - uint64_t k = l % (1 << max_num_qubits); + uint64_t j = l / (uint64_t(1) << max_num_qubits); + uint64_t k = l % (uint64_t(1) << max_num_qubits); if (k < crossover && j < crossover) { output_tensor(static_cast(i), static_cast(j), static_cast(k)) = us.GetEntry(u, k, j); @@ -149,7 +149,7 @@ class TfqCalculateUnitaryOp : public tensorflow::OpKernel { } } }; - const uint64_t num_cycles_copy = 10 * (1 << max_num_qubits); + const uint64_t num_cycles_copy = 10 * (uint64_t(1) << max_num_qubits); context->device()->tensorflow_cpu_worker_threads()->workers->ParallelFor( (uint64_t(1) << max_num_qubits) * (uint64_t(1) << max_num_qubits), num_cycles_copy, copy_f); diff --git a/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc index 855846867..a01e57650 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc @@ -193,7 +193,7 @@ class TfqSimulateExpectationOp : public tensorflow::OpKernel { Status compute_status = ::tensorflow::Status(); auto c_lock = tensorflow::mutex(); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { int old_batch_index = -2; int cur_batch_index = -1; uint64_t largest_nq = 1; @@ -203,7 +203,7 @@ class TfqSimulateExpectationOp : public tensorflow::OpKernel { 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_op_size; cur_op_index = i % output_dim_op_size; diff --git a/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc index 14217e127..fa3d6f385 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc @@ -238,7 +238,7 @@ class TfqSimulateSampledExpectationOp : public tensorflow::OpKernel { Status compute_status = ::tensorflow::Status(); auto c_lock = tensorflow::mutex(); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { int old_batch_index = -2; int cur_batch_index = -1; uint64_t largest_nq = 1; @@ -255,7 +255,7 @@ class TfqSimulateSampledExpectationOp : 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; diff --git a/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc index b972f8af2..206807dcd 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc @@ -201,7 +201,7 @@ class TfqSimulateSamplesOp : public tensorflow::OpKernel { tensorflow::GuardedPhiloxRandom random_gen; random_gen.Init(tensorflow::random::New64(), tensorflow::random::New64()); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { uint64_t largest_nq = 1; Simulator sim = Simulator(tfq_for); StateSpace ss = StateSpace(tfq_for); @@ -210,7 +210,7 @@ class TfqSimulateSamplesOp : public tensorflow::OpKernel { auto local_gen = random_gen.ReserveSamples32(fused_circuits.size() + 1); tensorflow::random::SimplePhilox rand_source(&local_gen); - for (int i = start; i < end; i++) { + for (int64_t i = start; i < end; i++) { uint64_t nq = num_qubits[i]; if (nq > largest_nq) { diff --git a/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc index 39b0b7c0a..ce75014f2 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc @@ -95,7 +95,7 @@ class TfqSimulateStateOp : public tensorflow::OpKernel { const size_t output_dim_size = maps.size(); tensorflow::TensorShape output_shape; output_shape.AddDim(output_dim_size); - output_shape.AddDim(1 << max_num_qubits); + output_shape.AddDim(uint64_t(1) << max_num_qubits); tensorflow::Tensor* output = nullptr; OP_REQUIRES_OK(context, context->allocate_output(0, output_shape, &output)); @@ -180,12 +180,12 @@ class TfqSimulateStateOp : public tensorflow::OpKernel { using Simulator = qsim::Simulator; using StateSpace = Simulator::StateSpace; - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { uint64_t largest_nq = 1; Simulator sim = Simulator(tfq_for); StateSpace ss = StateSpace(tfq_for); auto sv = ss.Create(largest_nq); - for (int i = start; i < end; i++) { + for (int64_t i = start; i < end; i++) { uint64_t nq = num_qubits[i]; if (nq > largest_nq) { From d1d19a08e7115cb311109ed1fce49535f3def265 Mon Sep 17 00:00:00 2001 From: mhucka Date: Mon, 18 May 2026 05:32:38 +0000 Subject: [PATCH 3/5] Fix spelling typo in some comments --- tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc | 2 +- tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc | 2 +- tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc | 2 +- tensorflow_quantum/core/ops/tfq_simulate_state_op.cc | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc b/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc index 40cd6b091..7b7cf60cd 100644 --- a/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc +++ b/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc @@ -159,7 +159,7 @@ class TfqNoisySamplesOp : public tensorflow::OpKernel { // Simulate programs one by one. Parallelizing over state vectors // we no longer parallelize over circuits. Each time we encounter a - // a larger circuit we will grow the Statevector as nescessary. + // a larger circuit we will grow the Statevector as necessary. for (size_t i = 0; i < ncircuits.size(); i++) { uint64_t nq = num_qubits[i]; diff --git a/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc b/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc index dd38f98ea..c6567397e 100644 --- a/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc +++ b/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc @@ -115,7 +115,7 @@ class TfqCalculateUnitaryOp : public tensorflow::OpKernel { // Simulate programs one by one. Parallelizing over state vectors // we no longer parallelize over circuits. Each time we encounter a - // a larger circuit we will grow the unitary as nescessary. + // a larger circuit we will grow the unitary as necessary. for (size_t i = 0; i < fused_circuits.size(); i++) { uint64_t nq = num_qubits[i]; UCalculator sim = UCalculator(tfq_for); diff --git a/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc index 206807dcd..62a198700 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc @@ -153,7 +153,7 @@ class TfqSimulateSamplesOp : public tensorflow::OpKernel { // Simulate programs one by one. Parallelizing over state vectors // we no longer parallelize over circuits. Each time we encounter a - // a larger circuit we will grow the Statevector as nescessary. + // a larger circuit we will grow the Statevector as necessary. for (size_t i = 0; i < fused_circuits.size(); i++) { uint64_t nq = num_qubits[i]; diff --git a/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc index ce75014f2..fed9453ef 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc @@ -135,7 +135,7 @@ class TfqSimulateStateOp : public tensorflow::OpKernel { // Simulate programs one by one. Parallelizing over state vectors // we no longer parallelize over circuits. Each time we encounter a - // a larger circuit we will grow the Statevector as nescessary. + // a larger circuit we will grow the Statevector as necessary. for (size_t i = 0; i < fused_circuits.size(); i++) { uint64_t nq = num_qubits[i]; From c3530dbad96cb2ca91f8b3367cc2cac93429a0f3 Mon Sep 17 00:00:00 2001 From: mhucka Date: Mon, 18 May 2026 05:45:25 +0000 Subject: [PATCH 4/5] More int64 changes --- tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc | 4 ++-- .../core/ops/math_ops/tfq_inner_product_grad.cc | 4 ++-- .../core/ops/math_ops/tfq_simulate_1d_expectation.cc | 4 ++-- .../core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc | 4 ++-- tensorflow_quantum/core/ops/tfq_adj_grad_op.cc | 4 ++-- tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc | 5 +++-- tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc | 4 ++-- .../core/ops/tfq_simulate_sampled_expectation_op.cc | 4 ++-- 8 files changed, 17 insertions(+), 16 deletions(-) diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc index cfb2c1e5b..2c4f24243 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc @@ -227,8 +227,8 @@ class TfqInnerProductOp : public tensorflow::OpKernel { const int output_dim_internal_size = output_tensor->dimension(1); auto DoWork = [&](int64_t start, int64_t end) { - int old_batch_index = -2; - int cur_batch_index = -1; + int64_t old_batch_index = -2; + int64_t cur_batch_index = -1; uint64_t largest_nq = 1; int cur_internal_index; diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc index b1d98805d..a26cd0d08 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc @@ -333,8 +333,8 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel { const int output_dim_internal_size = other_fused_circuits[0].size(); auto DoWork = [&](int64_t start, int64_t end) { - int old_batch_index = -2; - int cur_batch_index = -1; + int64_t old_batch_index = -2; + int64_t cur_batch_index = -1; uint64_t largest_nq = 1; int cur_internal_index; diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc index 5dfe20dc0..844acde72 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc @@ -161,8 +161,8 @@ class TfqSimulateMPS1DExpectationOp : public tensorflow::OpKernel { Status compute_status = ::tensorflow::Status(); auto c_lock = tensorflow::mutex(); auto DoWork = [&](int64_t start, int64_t end) { - int old_batch_index = -2; - int cur_batch_index = -1; + int64_t old_batch_index = -2; + int64_t cur_batch_index = -1; uint64_t largest_nq = 1; int cur_op_index; diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc index 997aa58dc..5f4d79179 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc @@ -187,8 +187,8 @@ class TfqSimulateMPS1DSampledExpectationOp : public tensorflow::OpKernel { Status compute_status = ::tensorflow::Status(); auto c_lock = tensorflow::mutex(); auto DoWork = [&](int64_t start, int64_t end) { - int old_batch_index = -2; - int cur_batch_index = -1; + int64_t old_batch_index = -2; + int64_t cur_batch_index = -1; uint64_t largest_nq = 1; int cur_op_index; diff --git a/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc b/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc index 1dd081960..5c4f52e52 100644 --- a/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc +++ b/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc @@ -187,7 +187,7 @@ class TfqAdjointGradientOp : public tensorflow::OpKernel { using Simulator = qsim::Simulator; using StateSpace = Simulator::StateSpace; - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { // Begin simulation. uint64_t largest_nq = 1; Simulator sim = Simulator(tfq_for); @@ -196,7 +196,7 @@ class TfqAdjointGradientOp : public tensorflow::OpKernel { 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++) { uint64_t nq = num_qubits[i]; if (nq > largest_nq) { // need to switch to larger statespace. diff --git a/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc b/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc index c6567397e..9237695e0 100644 --- a/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc +++ b/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc @@ -135,10 +135,11 @@ class TfqCalculateUnitaryOp : public tensorflow::OpKernel { auto copy_f = [i, nq, max_num_qubits, &output_tensor, &us, &u]( uint64_t start, uint64_t end) { uint64_t crossover = uint64_t(1) << nq; + uint64_t divisor = uint64_t(1) << max_num_qubits; for (uint64_t l = start; l < end; l++) { - uint64_t j = l / (uint64_t(1) << max_num_qubits); - uint64_t k = l % (uint64_t(1) << max_num_qubits); + uint64_t j = l / divisor; + uint64_t k = l % divisor; if (k < crossover && j < crossover) { output_tensor(static_cast(i), static_cast(j), static_cast(k)) = us.GetEntry(u, k, j); diff --git a/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc index a01e57650..7f3448dd9 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc @@ -194,8 +194,8 @@ class TfqSimulateExpectationOp : public tensorflow::OpKernel { Status compute_status = ::tensorflow::Status(); auto c_lock = tensorflow::mutex(); auto DoWork = [&](int64_t start, int64_t end) { - int old_batch_index = -2; - int cur_batch_index = -1; + int64_t old_batch_index = -2; + int64_t cur_batch_index = -1; uint64_t largest_nq = 1; int cur_op_index; diff --git a/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc index fa3d6f385..7bf246905 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc @@ -239,8 +239,8 @@ class TfqSimulateSampledExpectationOp : public tensorflow::OpKernel { Status compute_status = ::tensorflow::Status(); auto c_lock = tensorflow::mutex(); auto DoWork = [&](int64_t start, int64_t end) { - int old_batch_index = -2; - int cur_batch_index = -1; + int64_t old_batch_index = -2; + int64_t cur_batch_index = -1; uint64_t largest_nq = 1; int cur_op_index; From a2b48e74119deb5dbc154021a813a1cfa7f4bb82 Mon Sep 17 00:00:00 2001 From: mhucka Date: Mon, 18 May 2026 05:53:17 +0000 Subject: [PATCH 5/5] Yet more int64 changes --- .../core/ops/math_ops/tfq_inner_product.cc | 14 ++++++------ .../ops/math_ops/tfq_inner_product_grad.cc | 14 ++++++------ .../math_ops/tfq_simulate_1d_expectation.cc | 6 ++--- .../tfq_simulate_1d_sampled_expectation.cc | 6 ++--- .../ops/math_ops/tfq_simulate_1d_samples.cc | 4 ++-- .../core/ops/noise/tfq_noisy_expectation.cc | 6 ++--- .../noise/tfq_noisy_sampled_expectation.cc | 6 ++--- .../core/ops/noise/tfq_noisy_samples.cc | 6 ++--- tensorflow_quantum/core/ops/parse_context.cc | 22 +++++++++---------- .../core/ops/tfq_adj_grad_op.cc | 4 ++-- .../core/ops/tfq_calculate_unitary_op.cc | 4 ++-- .../core/ops/tfq_circuit_append_op.cc | 4 ++-- .../core/ops/tfq_ps_decompose_op.cc | 4 ++-- .../core/ops/tfq_ps_symbol_replace_op.cc | 16 +++++++------- .../ops/tfq_ps_weights_from_symbols_op.cc | 8 +++---- .../core/ops/tfq_resolve_parameters_op.cc | 4 ++-- .../core/ops/tfq_simulate_expectation_op.cc | 6 ++--- .../tfq_simulate_sampled_expectation_op.cc | 6 ++--- .../core/ops/tfq_simulate_samples_op.cc | 4 ++-- .../core/ops/tfq_simulate_state_op.cc | 4 ++-- 20 files changed, 74 insertions(+), 74 deletions(-) diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc index 2c4f24243..9006138b5 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product.cc @@ -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]); @@ -117,10 +117,10 @@ class TfqInnerProductOp : public tensorflow::OpKernel { std::vector(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]); @@ -230,7 +230,7 @@ class TfqInnerProductOp : public tensorflow::OpKernel { int64_t old_batch_index = -2; int64_t cur_batch_index = -1; uint64_t largest_nq = 1; - int cur_internal_index; + int64_t cur_internal_index; Simulator sim = Simulator(tfq_for); StateSpace ss = StateSpace(tfq_for); diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc index a26cd0d08..bfe93b123 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_inner_product_grad.cc @@ -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]); @@ -145,10 +145,10 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel { std::vector(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]); @@ -336,7 +336,7 @@ class TfqInnerProductGradOp : public tensorflow::OpKernel { int64_t old_batch_index = -2; int64_t cur_batch_index = -1; uint64_t largest_nq = 1; - int cur_internal_index; + int64_t cur_internal_index; Simulator sim = Simulator(tfq_for); StateSpace ss = StateSpace(tfq_for); diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc index 844acde72..c9fb796cf 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_expectation.cc @@ -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]); @@ -164,7 +164,7 @@ class TfqSimulateMPS1DExpectationOp : public tensorflow::OpKernel { int64_t old_batch_index = -2; int64_t cur_batch_index = -1; uint64_t largest_nq = 1; - int cur_op_index; + int64_t cur_op_index; // Note: ForArgs in MPSSimulator and MPSStateState are currently unused. // So, this 1 is a dummy for qsim::For. diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc index 5f4d79179..08dc9dc59 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_sampled_expectation.cc @@ -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]); @@ -190,7 +190,7 @@ class TfqSimulateMPS1DSampledExpectationOp : public tensorflow::OpKernel { int64_t old_batch_index = -2; int64_t cur_batch_index = -1; uint64_t largest_nq = 1; - int cur_op_index; + int64_t cur_op_index; // Note: ForArgs in MPSSimulator and MPSStateState are currently unused. // So, this 1 is a dummy for qsim::For. diff --git a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc index 09dbcadb4..85db6278d 100644 --- a/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc +++ b/tensorflow_quantum/core/ops/math_ops/tfq_simulate_1d_samples.cc @@ -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]); diff --git a/tensorflow_quantum/core/ops/noise/tfq_noisy_expectation.cc b/tensorflow_quantum/core/ops/noise/tfq_noisy_expectation.cc index c70e03195..824035453 100644 --- a/tensorflow_quantum/core/ops/noise/tfq_noisy_expectation.cc +++ b/tensorflow_quantum/core/ops/noise/tfq_noisy_expectation.cc @@ -119,8 +119,8 @@ class TfqNoisyExpectationOp : 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 = NoisyQsimCircuitFromProgram( programs[i], maps[i], num_qubits[i], false, &qsim_circuits[i]); NESTED_FN_STATUS_SYNC(parse_status, local, p_lock); @@ -295,7 +295,7 @@ class TfqNoisyExpectationOp : public tensorflow::OpKernel { Status compute_status = ::tensorflow::Status(); auto c_lock = tensorflow::mutex(); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { // Begin simulation. const auto tfq_for = qsim::SequentialFor(1); uint64_t largest_nq = 1; diff --git a/tensorflow_quantum/core/ops/noise/tfq_noisy_sampled_expectation.cc b/tensorflow_quantum/core/ops/noise/tfq_noisy_sampled_expectation.cc index 8f8013012..df02a8d88 100644 --- a/tensorflow_quantum/core/ops/noise/tfq_noisy_sampled_expectation.cc +++ b/tensorflow_quantum/core/ops/noise/tfq_noisy_sampled_expectation.cc @@ -120,8 +120,8 @@ class TfqNoisySampledExpectationOp : 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 = NoisyQsimCircuitFromProgram( programs[i], maps[i], num_qubits[i], false, &qsim_circuits[i]); NESTED_FN_STATUS_SYNC(parse_status, local, p_lock); @@ -302,7 +302,7 @@ class TfqNoisySampledExpectationOp : public tensorflow::OpKernel { Status compute_status = ::tensorflow::Status(); auto c_lock = tensorflow::mutex(); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { // Begin simulation. const auto tfq_for = qsim::SequentialFor(1); uint64_t largest_nq = 1; diff --git a/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc b/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc index 7b7cf60cd..1cb2bcc53 100644 --- a/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc +++ b/tensorflow_quantum/core/ops/noise/tfq_noisy_samples.cc @@ -85,8 +85,8 @@ class TfqNoisySamplesOp : 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++) { auto r = NoisyQsimCircuitFromProgram( programs[i], maps[i], num_qubits[i], true, &qsim_circuits[i]); NESTED_FN_STATUS_SYNC(parse_status, r, p_lock); @@ -239,7 +239,7 @@ class TfqNoisySamplesOp : public tensorflow::OpKernel { tensorflow::GuardedPhiloxRandom random_gen; random_gen.Init(tensorflow::random::New64(), tensorflow::random::New64()); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { // Begin simulation. const auto tfq_for = qsim::SequentialFor(1); uint64_t largest_nq = 1; diff --git a/tensorflow_quantum/core/ops/parse_context.cc b/tensorflow_quantum/core/ops/parse_context.cc index f926d15bb..305fc2a25 100644 --- a/tensorflow_quantum/core/ops/parse_context.cc +++ b/tensorflow_quantum/core/ops/parse_context.cc @@ -77,8 +77,8 @@ Status ParsePrograms(OpKernelContext* context, const std::string& input_name, const int num_programs = program_strings.dimension(0); programs->assign(num_programs, Program()); - auto DoWork = [&](int start, int end) { - for (int i = start; i < end; i++) { + auto DoWork = [&](int64_t start, int64_t end) { + for (int64_t i = start; i < end; i++) { OP_REQUIRES_OK(context, ParseProto(program_strings(i), &programs->at(i))); } }; @@ -112,8 +112,8 @@ Status ParsePrograms2D(OpKernelContext* context, const std::string& input_name, const int num_entries = program_strings.dimension(1); programs->assign(num_programs, std::vector(num_entries, Program())); - auto DoWork = [&](int start, int end) { - for (int i = start; i < end; i++) { + auto DoWork = [&](int64_t start, int64_t end) { + for (int64_t i = start; i < end; i++) { OP_REQUIRES_OK( context, ParseProto(program_strings(i / num_entries, i % num_entries), @@ -181,8 +181,8 @@ Status GetProgramsAndNumQubits( // Resolve qubit ID's in parallel. num_qubits->assign(programs->size(), -1); - auto DoWork = [&](int start, int end) { - for (int i = start; i < end; i++) { + auto DoWork = [&](int64_t start, int64_t end) { + for (int64_t i = start; i < end; i++) { Program& program = (*programs)[i]; unsigned int this_num_qubits; if (p_sums) { @@ -232,8 +232,8 @@ tensorflow::Status GetProgramsAndNumQubits( // Resolve qubit ID's in parallel. num_qubits->assign(programs->size(), -1); - auto DoWork = [&](int start, int end) { - for (int i = start; i < end; i++) { + auto DoWork = [&](int64_t start, int64_t end) { + for (int64_t i = start; i < end; i++) { Program& program = (*programs)[i]; unsigned int this_num_qubits; OP_REQUIRES_OK(context, ResolveQubitIds(&program, &this_num_qubits, @@ -270,7 +270,7 @@ Status GetPauliSums(OpKernelContext* context, p_sums->assign(sum_specs.dimension(0), std::vector(sum_specs.dimension(1), PauliSum())); const int op_dim = sum_specs.dimension(1); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { for (int ii = start; ii < end; ii++) { const int i = ii / op_dim; const int j = ii % op_dim; @@ -328,8 +328,8 @@ Status GetSymbolMaps(OpKernelContext* context, std::vector* maps) { maps->assign(symbol_values.dimension(0), SymbolMap()); const int symbol_dim = symbol_values.dimension(1); - auto DoWork = [&](int start, int end) { - for (int i = start; i < end; i++) { + auto DoWork = [&](int64_t start, int64_t end) { + for (int64_t i = start; i < end; i++) { for (int j = 0; j < symbol_dim; j++) { const std::string& name = symbol_names(j); const float value = symbol_values(i, j); diff --git a/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc b/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc index 5c4f52e52..2fa3e3767 100644 --- a/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc +++ b/tensorflow_quantum/core/ops/tfq_adj_grad_op.cc @@ -111,8 +111,8 @@ class TfqAdjointGradientOp : 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], &full_fuse[i], &gate_meta[i]); diff --git a/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc b/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc index 9237695e0..a3242f848 100644 --- a/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc +++ b/tensorflow_quantum/core/ops/tfq_calculate_unitary_op.cc @@ -70,8 +70,8 @@ class TfqCalculateUnitaryOp : 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]); diff --git a/tensorflow_quantum/core/ops/tfq_circuit_append_op.cc b/tensorflow_quantum/core/ops/tfq_circuit_append_op.cc index a279de9bd..9dac4e44f 100644 --- a/tensorflow_quantum/core/ops/tfq_circuit_append_op.cc +++ b/tensorflow_quantum/core/ops/tfq_circuit_append_op.cc @@ -51,9 +51,9 @@ class TfqCircuitAppendOp : public tensorflow::OpKernel { 0, context->input(0).shape(), &output)); auto output_tensor = output->flat(); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { std::string temp; - for (int i = start; i < end; i++) { + for (int64_t i = start; i < end; i++) { for (int j = 0; j < programs_to_append.at(i).circuit().moments().size(); j++) { Moment *new_moment = programs.at(i).mutable_circuit()->add_moments(); diff --git a/tensorflow_quantum/core/ops/tfq_ps_decompose_op.cc b/tensorflow_quantum/core/ops/tfq_ps_decompose_op.cc index 669ea6368..5f15a5d56 100644 --- a/tensorflow_quantum/core/ops/tfq_ps_decompose_op.cc +++ b/tensorflow_quantum/core/ops/tfq_ps_decompose_op.cc @@ -57,8 +57,8 @@ class TfqPsDecomposeOp : public tensorflow::OpKernel { const int max_buffer_moments = 5; - auto DoWork = [&](int start, int end) { - for (int i = start; i < end; i++) { + auto DoWork = [&](int64_t start, int64_t end) { + for (int64_t i = start; i < end; i++) { Program cur_program = programs.at(i); Program new_program; std::string temp; diff --git a/tensorflow_quantum/core/ops/tfq_ps_symbol_replace_op.cc b/tensorflow_quantum/core/ops/tfq_ps_symbol_replace_op.cc index d5b4ef9a7..7003e2b8e 100644 --- a/tensorflow_quantum/core/ops/tfq_ps_symbol_replace_op.cc +++ b/tensorflow_quantum/core/ops/tfq_ps_symbol_replace_op.cc @@ -82,10 +82,10 @@ class TfqPsSymbolReplaceOp : public tensorflow::OpKernel { programs.size(), std::vector>( n_symbols, std::vector())); - auto DoWork = [&](int start, int end) { - for (int i = start; i < end; i++) { - int sidx = i % n_symbols; - int pidx = i / n_symbols; + auto DoWork = [&](int64_t start, int64_t end) { + for (int64_t i = start; i < end; i++) { + int64_t sidx = i % n_symbols; + int64_t pidx = i / n_symbols; std::string symbol_to_replace = symbols(sidx); std::string temp_symbol_holder; Program cur_program = programs.at(pidx); @@ -159,10 +159,10 @@ class TfqPsSymbolReplaceOp : public tensorflow::OpKernel { // end. // spinning up and down parallelization for string copying might not be // worth it. - auto DoWork2 = [&](int start, int end) { - for (int i = start; i < end; i++) { - int sidx = i % n_symbols; - int pidx = i / n_symbols; + auto DoWork2 = [&](int64_t start, int64_t end) { + for (int64_t i = start; i < end; i++) { + int64_t sidx = i % n_symbols; + int64_t pidx = i / n_symbols; for (size_t j = 0; j < output_programs.at(pidx).at(sidx).size(); j++) { output_tensor(pidx, sidx, j) = diff --git a/tensorflow_quantum/core/ops/tfq_ps_weights_from_symbols_op.cc b/tensorflow_quantum/core/ops/tfq_ps_weights_from_symbols_op.cc index 7ffebfd22..87003fea5 100644 --- a/tensorflow_quantum/core/ops/tfq_ps_weights_from_symbols_op.cc +++ b/tensorflow_quantum/core/ops/tfq_ps_weights_from_symbols_op.cc @@ -79,8 +79,8 @@ class TfqPsWeightsFromSymbolOp : public tensorflow::OpKernel { std::vector n_single_symbol(programs.size(), 0); - auto DoWork = [&](int start, int end) { - for (int i = start; i < end; i++) { + auto DoWork = [&](int64_t start, int64_t end) { + for (int64_t i = start; i < end; i++) { Program cur_program = programs.at(i); for (int j = 0; j < cur_program.circuit().moments().size(); j++) { Moment cur_moment = cur_program.circuit().moments().at(j); @@ -143,8 +143,8 @@ class TfqPsWeightsFromSymbolOp : public tensorflow::OpKernel { auto output_tensor = output->tensor(); - auto DoWork2 = [&](int start, int end) { - for (int i = start; i < end; i++) { + auto DoWork2 = [&](int64_t start, int64_t end) { + for (int64_t i = start; i < end; i++) { for (int j = 0; j < n_symbols; j++) { for (size_t k = 0; k < output_results.at(i).at(j).size(); k++) { output_tensor(i, j, k) = output_results.at(i).at(j).at(k); diff --git a/tensorflow_quantum/core/ops/tfq_resolve_parameters_op.cc b/tensorflow_quantum/core/ops/tfq_resolve_parameters_op.cc index 8d7ce06cf..cc28a1938 100644 --- a/tensorflow_quantum/core/ops/tfq_resolve_parameters_op.cc +++ b/tensorflow_quantum/core/ops/tfq_resolve_parameters_op.cc @@ -61,9 +61,9 @@ class TfqResolveParametersOp : public tensorflow::OpKernel { Status parse_status = ::tensorflow::Status(); auto p_lock = tensorflow::mutex(); - auto DoWork = [&](int start, int end) { + auto DoWork = [&](int64_t start, int64_t end) { std::string temp; - for (int i = start; i < end; i++) { + for (int64_t i = start; i < end; i++) { Program program = programs[i]; Status local = ResolveSymbols(maps[i], &program, false); NESTED_FN_STATUS_SYNC(parse_status, local, p_lock); diff --git a/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc index 7f3448dd9..bcb7c106e 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_expectation_op.cc @@ -93,8 +93,8 @@ class TfqSimulateExpectationOp : 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]); @@ -197,7 +197,7 @@ class TfqSimulateExpectationOp : public tensorflow::OpKernel { int64_t old_batch_index = -2; int64_t cur_batch_index = -1; uint64_t largest_nq = 1; - int cur_op_index; + int64_t cur_op_index; Simulator sim = Simulator(tfq_for); StateSpace ss = StateSpace(tfq_for); diff --git a/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc index 7bf246905..ae2e2114d 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_sampled_expectation_op.cc @@ -112,8 +112,8 @@ class TfqSimulateSampledExpectationOp : 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]); @@ -242,7 +242,7 @@ class TfqSimulateSampledExpectationOp : public tensorflow::OpKernel { int64_t old_batch_index = -2; int64_t cur_batch_index = -1; uint64_t largest_nq = 1; - int cur_op_index; + int64_t cur_op_index; Simulator sim = Simulator(tfq_for); StateSpace ss = StateSpace(tfq_for); diff --git a/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc index 62a198700..d1d99fd8f 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_samples_op.cc @@ -79,8 +79,8 @@ class TfqSimulateSamplesOp : 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]); diff --git a/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc b/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc index fed9453ef..b95b9634b 100644 --- a/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc +++ b/tensorflow_quantum/core/ops/tfq_simulate_state_op.cc @@ -71,8 +71,8 @@ class TfqSimulateStateOp : 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]);