Commit 79b080e0 authored by Nguyen, Thien Minh's avatar Nguyen, Thien Minh
Browse files

Update script and add a full timing script for Q#



Signed-off-by: default avatarThien Nguyen <nguyentm@ornl.gov>
parent 8e762160
Loading
Loading
Loading
Loading
+22 −22
Original line number Diff line number Diff line
@@ -5,11 +5,11 @@ from pytket.extensions.qiskit import AerStateBackend
from pytket.passes import FullPeepholeOptimise

nb_steps = 100
nb_qubits = 50
step_size = 0.01
n_qubits = [5, 10, 20, 30, 40, 50]
for nb_qubits in n_qubits:
  # Start timer
  start = time.time()

  circ = Circuit(nb_qubits)

  h = 1.0
@@ -29,7 +29,7 @@ circ = backend.get_compiled_circuit(circ)
  FullPeepholeOptimise().apply(circ)

  end = time.time()
print('Elapsed time =', end - start, '[secs]')
  print('n_qubits =', nb_qubits, '; Elapsed time =', end - start, '[secs]')

for com in circ: # equivalently, circ.get_commands()
  print(com.op, com.op.type, com.args)
 No newline at end of file
  # for com in circ: # equivalently, circ.get_commands()
  #   print(com.op, com.op.type, com.args)
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ def trotter_circ(q, exp_args, n_steps):
      qc += PauliTrotterEvolution().convert(EvolvedOp(sub_op)).to_circuit()
  return qc

n_qubits = [5, 10, 20, 50, 100]
n_qubits = [5, 10, 20, 30, 40, 50]
nbSteps = 100

for nbQubits in n_qubits:
+6 −0
Original line number Diff line number Diff line
extern "C" void Benchmark__Heisenberg__CircuitGen();

int main(int argc, char* argv[]){
  Benchmark__Heisenberg__CircuitGen();
  return 0;
}
 No newline at end of file
+22 −0
Original line number Diff line number Diff line
# Timing the total Q# compilation workflow via QIR
# Reference: https://github.com/microsoft/qsharp-compiler/tree/main/examples/QIR/Optimization

import time, os, sys
os.chdir(sys.path[0])
start = time.time()
# Dotnet build -> generate ll file (unoptimized)
os.system('dotnet build')

# Optimize LLVM IR
os.system('/usr/local/aideqc/llvm/bin/clang -S qir/trotter.ll -O3 -emit-llvm -o qir/trotter-o3.ll')

# Compile and link:
os.system('/usr/local/aideqc/llvm/bin/llvm-as qir/trotter-o3.ll -o qir/trotter.bc')
os.system('/usr/local/aideqc/llvm/bin/llc -filetype=obj qir/trotter.bc -o qir/trotter.o')
os.system('/usr/local/aideqc/llvm/bin/clang++  -Wno-unused-command-line-argument -Wno-override-module -rdynamic -Wl,-rpath,/root/.xacc/lib:/root/.xacc/lib:/usr/local/aideqc/llvm/lib:/root/.xacc/clang-plugins -L /root/.xacc/lib -lqcor -lqrt -lqcor-jit -lqcor-quasimo -L /root/.xacc/lib -lxacc -lCppMicroServices -lxacc-quantum-gate -lxacc-pauli -lxacc-fermion -lpthread -lqir-qrt -D__internal__qcor__compile__backend="qpp" qir/trotter.o driver.cpp -o qir/a.out')
end = time.time()
print('Elapsed time:', end - start, ' [secs]')
# Clean up (no incremental builds)
os.system('rm -rf bin')
os.system('rm -rf obj')
os.system('rm -rf qir')
+10 −0
Original line number Diff line number Diff line
<Project Sdk="Microsoft.Quantum.Sdk/0.18.2107153439">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <QirGeneration>true</QirGeneration>
    <BuildOutputPath>$(MSBuildThisFileDirectory)build</BuildOutputPath>
  </PropertyGroup>

</Project>
Loading