Commit 9e8d8825 authored by Nguyen, Thien Minh's avatar Nguyen, Thien Minh
Browse files

Add qsharp compile data collection



Signed-off-by: default avatarThien Nguyen <nguyentm@ornl.gov>
parent 46307f29
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
--proj "quantum"  --input "$$FILE_NAME$$" --output "obj/qsharp/" --references "/root/.nuget/packages/microsoft.bcl.asyncinterfaces/1.1.0/ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll" "/root/.nuget/packages/microsoft.quantum.compiler/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.BondSchemas.dll" "/root/.nuget/packages/microsoft.quantum.compiler/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.QsCompilationManager.dll" "/root/.nuget/packages/microsoft.quantum.compiler/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.QsCompiler.dll" "/root/.nuget/packages/microsoft.quantum.compiler/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.QsCore.dll" "/root/.nuget/packages/microsoft.quantum.compiler/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.QsDataStructures.dll" "/root/.nuget/packages/microsoft.quantum.compiler/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.QsDocumentationParser.dll" "/root/.nuget/packages/microsoft.quantum.qsharp.core/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.QSharp.Core.dll" "/root/.nuget/packages/microsoft.quantum.compiler/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.QsOptimizations.dll" "/root/.nuget/packages/microsoft.quantum.compiler/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.QsSyntaxProcessor.dll" "/root/.nuget/packages/microsoft.quantum.compiler/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.QsTextProcessor.dll" "/root/.nuget/packages/microsoft.quantum.compiler/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.QsTransformations.dll" "/root/.nuget/packages/microsoft.quantum.runtime.core/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.Runtime.Core.dll" "/root/.nuget/packages/microsoft.quantum.simulators/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.Simulation.Common.dll" "/root/.nuget/packages/microsoft.quantum.simulators/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.dll" "/root/.nuget/packages/microsoft.quantum.simulators/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.Simulators.dll" "/root/.nuget/packages/microsoft.quantum.standard/0.14.2011120240/lib/netstandard2.1/Microsoft.Quantum.Standard.dll" "/root/.nuget/packages/numsharp/0.20.5/lib/netstandard2.0/NumSharp.Core.dll" --load "/root/.nuget/packages/microsoft.quantum.csharpgeneration/0.14.2011120240/build//../lib/netstandard2.1/Microsoft.Quantum.CsharpGeneration.dll" --runtime Unknown  --package-load-fallback-folders "/workspaces/qcor/qcor/benchmarks/qcor-mlir/qsharp/bin/Debug/netstandard2.1/"  --assembly-properties ProcessorArchitecture:Unspecified QsharpOutputType:QsharpLibrary ExecutionTarget:Any DocsPackageId:quantum
+41 −0
Original line number Diff line number Diff line
# NOTE: we **only** compile the Q# source using the
# Q# command line tool, i.e. not building the whole .NET project.
# We don't time the QIR generation, just using the **Release** version
# of the QSC (Q# compiler) to compile the Q# source file.
import os, glob, time, csv

dirPath = os.path.dirname(os.path.realpath(__file__))
os.chdir(dirPath + "/qsharp")

listOfSrcFiles = glob.glob(dirPath + "/qsharp/*.qs")
# We must run smaller files first.
# It may hang indefinitely for larger files...
listOfSrcFiles = sorted(listOfSrcFiles, key = os.path.getsize)

#Time to compile via syntax handler
headers = ["Test Case", "total time"]
firstWrite = True
# HARD-CODED qsc location, updated according to your system
qsc_exe = "/root/.nuget/packages/microsoft.quantum.sdk/0.14.2011120240/tools/qsc/qsc.dll"
# Q# build config file (has a placeholder for the qs source file)
response_file = dirPath + "/qsharp/qsc.rsp"

for file in listOfSrcFiles:
  rowData = [os.path.splitext(os.path.basename(file))[0]]
  with open(response_file) as f:
    # Replace the particular file name
    newText=f.read().replace("$$FILE_NAME$$", os.path.basename(file))
  with open(dirPath + "/qsharp/qsc_run.rsp", "w") as f:
    f.write(newText)
  
  # Start compilation
  start_time = time.time()
  os.system("dotnet \"" + qsc_exe + "\" build --response-files qsc_run.rsp")
  rowData.append(time.time() - start_time)
  with open('result_qsharp.csv', 'a', newline='') as csvfile:
    resultWriter = csv.writer(csvfile)
    if firstWrite is True:
      resultWriter.writerow(headers)
      firstWrite = False
    # Write data
    resultWriter.writerow(rowData)
 No newline at end of file