From 88822de21e6feb9764c2691b1f66f8ecad494ccf Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Wed, 17 Jun 2020 11:10:30 -0700 Subject: [PATCH 01/15] solution edit --- Simulation.sln | 93 ++++++++++++++++++++++++-------------------------- 1 file changed, 45 insertions(+), 48 deletions(-) diff --git a/Simulation.sln b/Simulation.sln index 7886189c882..bfe0e7c6315 100644 --- a/Simulation.sln +++ b/Simulation.sln @@ -3,14 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.28809.33 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{99E234BC-997E-4E63-9F5C-3C3977543404}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure", "Azure", "{A1E878CB-ADF1-457A-9223-06F96ED8F7A6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client", "src\Azure\Azure.Quantum.Client\Microsoft.Azure.Quantum.Client.csproj", "{DF654202-0008-4CDE-B35E-018CEFD0FC68}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client.Test", "src\Azure\Azure.Quantum.Client.Test\Microsoft.Azure.Quantum.Client.Test.csproj", "{1467128C-90E4-4723-B5C7-9469B83F54A6}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Runtime.Core", "src\Simulation\Core\Microsoft.Quantum.Runtime.Core.csproj", "{E9123D45-C1B0-4462-8810-D26ED6D31944}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime", "src\Simulation\QCTraceSimulator\Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj", "{058CB08D-BFA7-41E2-BE6B-0A0A72054F91}" @@ -47,15 +39,21 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestProjects", "TestProject EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QsharpExe", "src\Simulation\Simulators.Tests\TestProjects\QsharpExe\QsharpExe.csproj", "{2F5796A7-4AF8-4B78-928A-0A3A80752F9D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver\Microsoft.Quantum.EntryPointDriver.csproj", "{944FE7EF-9220-4CC6-BB20-CE517195B922}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver\Microsoft.Quantum.EntryPointDriver.csproj", "{944FE7EF-9220-4CC6-BB20-CE517195B922}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver.Tests\Tests.Microsoft.Quantum.EntryPointDriver.fsproj", "{E2F30496-19D8-46A8-9BC0-26936FFE70D2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library1", "src\Simulation\Simulators.Tests\TestProjects\Library1\Library1.csproj", "{7256B986-6705-42FC-9F57-485D72D9DE51}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library2", "src\Simulation\Simulators.Tests\TestProjects\Library2\Library2.csproj", "{A85277B3-4E07-4E15-8F0C-07CC855A3BCB}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Tests.Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver.Tests\Tests.Microsoft.Quantum.EntryPointDriver.fsproj", "{E2F30496-19D8-46A8-9BC0-26936FFE70D2}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTests", "src\Simulation\Simulators.Tests\TestProjects\UnitTests\UnitTests.csproj", "{46278108-D247-4EFC-AC34-23D4A676F62F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Library1", "src\Simulation\Simulators.Tests\TestProjects\Library1\Library1.csproj", "{7256B986-6705-42FC-9F57-485D72D9DE51}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure", "Azure", "{37CDC768-16D4-4574-8553-07D99D0A72F7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Library2", "src\Simulation\Simulators.Tests\TestProjects\Library2\Library2.csproj", "{A85277B3-4E07-4E15-8F0C-07CC855A3BCB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client", "src\Azure\Azure.Quantum.Client\Microsoft.Azure.Quantum.Client.csproj", "{7F05FD87-A2FB-4915-A988-4EF92AB82179}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests", "src\Simulation\Simulators.Tests\TestProjects\UnitTests\UnitTests.csproj", "{46278108-D247-4EFC-AC34-23D4A676F62F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client.Test", "src\Azure\Azure.Quantum.Client.Test\Microsoft.Azure.Quantum.Client.Test.csproj", "{4858E5E3-23FA-4928-B99A-54065875A2B9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -69,38 +67,6 @@ Global RelWithDebInfo|x64 = RelWithDebInfo|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.Debug|x64.ActiveCfg = Debug|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.Debug|x64.Build.0 = Debug|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.Release|Any CPU.Build.0 = Release|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.Release|x64.ActiveCfg = Release|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.Release|x64.Build.0 = Release|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {DF654202-0008-4CDE-B35E-018CEFD0FC68}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.Debug|x64.ActiveCfg = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.Debug|x64.Build.0 = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.Release|Any CPU.Build.0 = Release|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.Release|x64.ActiveCfg = Release|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.Release|x64.Build.0 = Release|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {1467128C-90E4-4723-B5C7-9469B83F54A6}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|Any CPU.Build.0 = Debug|Any CPU {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -389,14 +355,43 @@ Global {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|x64.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|x64.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|Any CPU.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|x64.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|x64.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|x64.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|x64.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|Any CPU.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|x64.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|x64.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {A1E878CB-ADF1-457A-9223-06F96ED8F7A6} = {99E234BC-997E-4E63-9F5C-3C3977543404} - {DF654202-0008-4CDE-B35E-018CEFD0FC68} = {A1E878CB-ADF1-457A-9223-06F96ED8F7A6} - {1467128C-90E4-4723-B5C7-9469B83F54A6} = {A1E878CB-ADF1-457A-9223-06F96ED8F7A6} {E9123D45-C1B0-4462-8810-D26ED6D31944} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} {058CB08D-BFA7-41E2-BE6B-0A0A72054F91} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} @@ -416,6 +411,8 @@ Global {7256B986-6705-42FC-9F57-485D72D9DE51} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} {A85277B3-4E07-4E15-8F0C-07CC855A3BCB} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} {46278108-D247-4EFC-AC34-23D4A676F62F} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {7F05FD87-A2FB-4915-A988-4EF92AB82179} = {37CDC768-16D4-4574-8553-07D99D0A72F7} + {4858E5E3-23FA-4928-B99A-54065875A2B9} = {37CDC768-16D4-4574-8553-07D99D0A72F7} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {929C0464-86D8-4F70-8835-0A5EAF930821} From 2948cc5965055a56f8fb614eae7de3056e6e70da Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Wed, 17 Jun 2020 11:45:59 -0700 Subject: [PATCH 02/15] adding a property to the C# code gen --- .../Microsoft.Quantum.CsharpGeneration.nuspec.template | 1 + src/Simulation/CsharpGeneration/RewriteStep.props | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 src/Simulation/CsharpGeneration/RewriteStep.props diff --git a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template index 997341009c3..f2cd2640558 100644 --- a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template +++ b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template @@ -21,6 +21,7 @@ + diff --git a/src/Simulation/CsharpGeneration/RewriteStep.props b/src/Simulation/CsharpGeneration/RewriteStep.props new file mode 100644 index 00000000000..ba4c25ac5e4 --- /dev/null +++ b/src/Simulation/CsharpGeneration/RewriteStep.props @@ -0,0 +1,8 @@ + + + + + $(MSBuildThisFileDirectory)/lib/netstandard2.1/ + + + From 99c65226068ba595739493ffd3dae3e6b0d523e4 Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Wed, 17 Jun 2020 15:39:49 -0700 Subject: [PATCH 03/15] different property name --- src/Simulation/CsharpGeneration/RewriteStep.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/CsharpGeneration/RewriteStep.props b/src/Simulation/CsharpGeneration/RewriteStep.props index ba4c25ac5e4..81f5484c0a4 100644 --- a/src/Simulation/CsharpGeneration/RewriteStep.props +++ b/src/Simulation/CsharpGeneration/RewriteStep.props @@ -2,7 +2,7 @@ - $(MSBuildThisFileDirectory)/lib/netstandard2.1/ + $(MSBuildThisFileDirectory)/lib/netstandard2.1/ From 875a64fe2b733e244cafdf09026e936f76eaedc4 Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Wed, 17 Jun 2020 17:48:28 -0700 Subject: [PATCH 04/15] trying something out --- ...t.Quantum.CsharpGeneration.nuspec.template | 1 + .../CsharpGeneration/RewriteStep.targets | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/Simulation/CsharpGeneration/RewriteStep.targets diff --git a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template index f2cd2640558..8ecf5b22de1 100644 --- a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template +++ b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template @@ -22,6 +22,7 @@ + diff --git a/src/Simulation/CsharpGeneration/RewriteStep.targets b/src/Simulation/CsharpGeneration/RewriteStep.targets new file mode 100644 index 00000000000..298be47ba82 --- /dev/null +++ b/src/Simulation/CsharpGeneration/RewriteStep.targets @@ -0,0 +1,19 @@ + + + + + + + + + + From 6eabcde36b9d80cb05b932c377485bbc4371e4c6 Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Thu, 18 Jun 2020 11:18:41 -0700 Subject: [PATCH 05/15] correct names for the props --- .../Microsoft.Quantum.CsharpGeneration.nuspec.template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template index 8ecf5b22de1..6a4d4ad5d33 100644 --- a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template +++ b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template @@ -21,8 +21,8 @@ - - + + From 717c656e08814899267e4dd209c4ea916a4176cc Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Thu, 18 Jun 2020 11:27:25 -0700 Subject: [PATCH 06/15] trying something --- src/Simulation/CsharpGeneration/RewriteStep.props | 2 +- src/Simulation/CsharpGeneration/RewriteStep.targets | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Simulation/CsharpGeneration/RewriteStep.props b/src/Simulation/CsharpGeneration/RewriteStep.props index 81f5484c0a4..ba4c25ac5e4 100644 --- a/src/Simulation/CsharpGeneration/RewriteStep.props +++ b/src/Simulation/CsharpGeneration/RewriteStep.props @@ -2,7 +2,7 @@ - $(MSBuildThisFileDirectory)/lib/netstandard2.1/ + $(MSBuildThisFileDirectory)/lib/netstandard2.1/ diff --git a/src/Simulation/CsharpGeneration/RewriteStep.targets b/src/Simulation/CsharpGeneration/RewriteStep.targets index 298be47ba82..39107dbf009 100644 --- a/src/Simulation/CsharpGeneration/RewriteStep.targets +++ b/src/Simulation/CsharpGeneration/RewriteStep.targets @@ -1,7 +1,7 @@ - + From 7e17cad5fdc7567815de23cce82b12ccd982b14c Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Thu, 18 Jun 2020 11:39:59 -0700 Subject: [PATCH 07/15] this is better --- src/Simulation/CsharpGeneration/RewriteStep.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/CsharpGeneration/RewriteStep.props b/src/Simulation/CsharpGeneration/RewriteStep.props index ba4c25ac5e4..98332c25bf8 100644 --- a/src/Simulation/CsharpGeneration/RewriteStep.props +++ b/src/Simulation/CsharpGeneration/RewriteStep.props @@ -2,7 +2,7 @@ - $(MSBuildThisFileDirectory)/lib/netstandard2.1/ + $(MSBuildThisFileDirectory)/lib/netstandard2.1/ From b8316330e7f0438799038bf835fd2e1fea51f144 Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Thu, 18 Jun 2020 11:41:40 -0700 Subject: [PATCH 08/15] passing the dll path --- src/Simulation/CsharpGeneration/RewriteStep.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/CsharpGeneration/RewriteStep.props b/src/Simulation/CsharpGeneration/RewriteStep.props index 98332c25bf8..124203bb06a 100644 --- a/src/Simulation/CsharpGeneration/RewriteStep.props +++ b/src/Simulation/CsharpGeneration/RewriteStep.props @@ -2,7 +2,7 @@ - $(MSBuildThisFileDirectory)/lib/netstandard2.1/ + $(MSBuildThisFileDirectory)/lib/netstandard2.1/Microsoft.Quantum.CsharpGeneration.dll From c8aa492475ce811220a2c024e1cb5669836d1907 Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Thu, 18 Jun 2020 12:22:36 -0700 Subject: [PATCH 09/15] wrong path... --- src/Simulation/CsharpGeneration/RewriteStep.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/CsharpGeneration/RewriteStep.props b/src/Simulation/CsharpGeneration/RewriteStep.props index 124203bb06a..996b5865b98 100644 --- a/src/Simulation/CsharpGeneration/RewriteStep.props +++ b/src/Simulation/CsharpGeneration/RewriteStep.props @@ -2,7 +2,7 @@ - $(MSBuildThisFileDirectory)/lib/netstandard2.1/Microsoft.Quantum.CsharpGeneration.dll + $(MSBuildThisFileDirectory)/../lib/netstandard2.1/Microsoft.Quantum.CsharpGeneration.dll From 3b6470f9cffd83a4f591a853bcc60989db9b9731 Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Thu, 18 Jun 2020 22:24:41 -0700 Subject: [PATCH 10/15] temporarily adding roslyn wrapper --- src/Simulation/CsharpGeneration/RewriteStep.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/CsharpGeneration/RewriteStep.props b/src/Simulation/CsharpGeneration/RewriteStep.props index 996b5865b98..20db5a42256 100644 --- a/src/Simulation/CsharpGeneration/RewriteStep.props +++ b/src/Simulation/CsharpGeneration/RewriteStep.props @@ -2,7 +2,7 @@ - $(MSBuildThisFileDirectory)/../lib/netstandard2.1/Microsoft.Quantum.CsharpGeneration.dll + $(MSBuildThisFileDirectory)/../lib/netstandard2.1/Microsoft.Quantum.CsharpGeneration.dll;$(MSBuildThisFileDirectory)/../lib/netstandard2.1/Microsoft.Quantum.RoslynWrapper.dll From e7cfc0e3aae7ec10e6ea473f67e5d60bc3d815af Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Fri, 19 Jun 2020 08:59:37 -0700 Subject: [PATCH 11/15] package updates --- .../Microsoft.Quantum.CsharpGeneration.fsproj | 2 +- src/Simulation/CsharpGeneration/RewriteStep.targets | 4 ---- ...icrosoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj | 2 +- .../QsharpCore/Microsoft.Quantum.QSharp.Core.csproj | 2 +- .../Simulators.Tests/TestProjects/Library1/Library1.csproj | 2 +- .../Simulators.Tests/TestProjects/Library2/Library2.csproj | 2 +- .../Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj | 2 +- .../Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj | 2 +- .../Tests.Microsoft.Quantum.Simulators.csproj | 2 +- src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj | 2 +- 10 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj index 0da8bb707e6..c7f925153eb 100644 --- a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj +++ b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj @@ -21,7 +21,7 @@ - + diff --git a/src/Simulation/CsharpGeneration/RewriteStep.targets b/src/Simulation/CsharpGeneration/RewriteStep.targets index 39107dbf009..46c349bfca3 100644 --- a/src/Simulation/CsharpGeneration/RewriteStep.targets +++ b/src/Simulation/CsharpGeneration/RewriteStep.targets @@ -5,10 +5,6 @@ - + diff --git a/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj b/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj index 6fa6d8bc6a1..e884117d392 100644 --- a/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj +++ b/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj index c7cf8bab959..4a40e7ac998 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj index c7cf8bab959..4a40e7ac998 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj index c851ccd391c..c3abeae10ef 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj b/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj index 6ff0e165ec6..f89dea33bcb 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 diff --git a/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj b/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj index 1255e9180a0..b55d9a7bb14 100644 --- a/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj index d47e83a63ad..3b631171b5d 100644 --- a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - + From 13697db7526583998ba9f62abf1e498b90c3bccc Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Fri, 19 Jun 2020 13:48:25 -0700 Subject: [PATCH 12/15] cleaning up --- ...osoft.Quantum.CsharpGeneration.nuspec.template | 1 - src/Simulation/CsharpGeneration/RewriteStep.props | 2 +- .../CsharpGeneration/RewriteStep.targets | 15 --------------- 3 files changed, 1 insertion(+), 17 deletions(-) delete mode 100644 src/Simulation/CsharpGeneration/RewriteStep.targets diff --git a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template index 6a4d4ad5d33..f964fcb499e 100644 --- a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template +++ b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.nuspec.template @@ -22,7 +22,6 @@ - diff --git a/src/Simulation/CsharpGeneration/RewriteStep.props b/src/Simulation/CsharpGeneration/RewriteStep.props index 20db5a42256..996b5865b98 100644 --- a/src/Simulation/CsharpGeneration/RewriteStep.props +++ b/src/Simulation/CsharpGeneration/RewriteStep.props @@ -2,7 +2,7 @@ - $(MSBuildThisFileDirectory)/../lib/netstandard2.1/Microsoft.Quantum.CsharpGeneration.dll;$(MSBuildThisFileDirectory)/../lib/netstandard2.1/Microsoft.Quantum.RoslynWrapper.dll + $(MSBuildThisFileDirectory)/../lib/netstandard2.1/Microsoft.Quantum.CsharpGeneration.dll diff --git a/src/Simulation/CsharpGeneration/RewriteStep.targets b/src/Simulation/CsharpGeneration/RewriteStep.targets deleted file mode 100644 index 46c349bfca3..00000000000 --- a/src/Simulation/CsharpGeneration/RewriteStep.targets +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - From dcdf71cf1ee29731b9d9ffd04b3f6b9102431b26 Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Fri, 19 Jun 2020 16:10:31 -0700 Subject: [PATCH 13/15] package version --- .../CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj | 2 +- ....Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj | 2 +- src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj | 2 +- .../Simulators.Tests/TestProjects/Library1/Library1.csproj | 2 +- .../Simulators.Tests/TestProjects/Library2/Library2.csproj | 2 +- .../Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj | 2 +- .../Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj | 2 +- .../Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj | 2 +- src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj index c7f925153eb..11815c3b5cd 100644 --- a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj +++ b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj @@ -21,7 +21,7 @@ - + diff --git a/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj b/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj index f37573e665e..93f6fcdda8a 100644 --- a/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj +++ b/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj b/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj index e884117d392..57eb7f960d9 100644 --- a/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj +++ b/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj index 4a40e7ac998..8ad13362001 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj index 4a40e7ac998..8ad13362001 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj index c3abeae10ef..093dc26385d 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj b/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj index f89dea33bcb..34bf53735a1 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 diff --git a/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj b/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj index b55d9a7bb14..23d83a63aca 100644 --- a/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj index 3b631171b5d..a2f8b0373cf 100644 --- a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - + From 055f2d9e706331cbd1a869a4779102406bad5465 Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Sun, 21 Jun 2020 17:34:02 -0700 Subject: [PATCH 14/15] accidentally committed some changes --- .gitignore | 3 + README.md | 6 +- .../Machine/QuantumMachineFactory.cs | 13 ++-- .../Props/QSharp.targets | 26 ++++---- src/Simulation/Core/Qubit.cs | 2 + .../SimulationCodeTests.fs | 4 +- .../EntryPointDriver.Tests/Tests.fs | 10 +-- src/Simulation/EntryPointDriver/Azure.cs | 12 ++-- src/Simulation/EntryPointDriver/Driver.cs | 16 ++--- .../Circuits/CoreOperations.qs | 18 ++++-- .../QuantumSimulatorTests/QubitReleaseTest.cs | 64 +++++++++++++++++++ .../Simulators.Tests/ToffoliSimulatorTests.cs | 4 +- .../Simulators/QuantumSimulator/Assert.cs | 2 +- .../Simulators/QuantumSimulator/AssertProb.cs | 2 +- .../Simulators/QuantumSimulator/Dump.cs | 2 +- .../Simulators/QuantumSimulator/M.cs | 3 +- .../Simulators/QuantumSimulator/Measure.cs | 7 +- .../QuantumSimulator/QuantumSimulator.cs | 34 ++++++++++ .../QuantumSimulator/QubitManager.cs | 5 +- 19 files changed, 179 insertions(+), 54 deletions(-) create mode 100644 src/Simulation/Simulators.Tests/QuantumSimulatorTests/QubitReleaseTest.cs diff --git a/.gitignore b/.gitignore index d23c8bcc645..754c9b65976 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,9 @@ bld/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ +# Visual Studio Code cache/options directory +.vscode/ + # Visual Studio Code Ionide-FSharp extension cache directory .ionide/ diff --git a/README.md b/README.md index eab23b86ae4..d20ed0093ae 100644 --- a/README.md +++ b/README.md @@ -38,8 +38,10 @@ To build on Windows: * Install [CMake](https://cmake.org/install/) * Install [Visual Studio 2019 (version 16.3 or later)](https://visualstudio.microsoft.com/downloads/). Make sure you install the following workloads: * **Desktop development with C++** + * **From the Individual Components tab in VS Installer add Spectre-mitigated libs that match your C++ build tools version** * **.NET Core 3 cross-platform development** 2. Run [bootstrap.cmd](bootstrap.cmd) from the `Developer Command Prompt for VS 2019`. + * pre-req (in PowerShell): `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser` * This script prepares and builds the native (C++) full-state simulator. * You only need to run it once. 3. Open and build the [`Simulation.sln`](./Simulation.sln) solution in Visual Studio. @@ -57,7 +59,7 @@ To build on other platforms: 2. Run [bootstrap.sh](./bootstrap.sh) * This script prepares and builds the native (C++) full-state simulator. * You only need to run it once. -3. From the command line, run these two commands: +3. From the command line, run: * `dotnet build Simulation.sln` The `Simulation.sln` solution does not include the full-state simulator. To integrate any changes with the rest of the simulation components, you need to manually build it using `make` in the `src\Simulation\Native\build` folder. @@ -70,7 +72,7 @@ All unit tests are part of the `Simulation.sln` solution. To run the tests: * From [Visual Studio](https://docs.microsoft.com/en-us/visualstudio/test/getting-started-with-unit-testing?view=vs-2019#run-unit-tests): * Open Test Explorer by choosing Test > Windows > Test Explorer from the top menu bar. * Run your unit tests by clicking Run All. -* From the command line run: +* From the command line, run: * `dotnet test Simulation.sln` diff --git a/src/Azure/Azure.Quantum.Client/Machine/QuantumMachineFactory.cs b/src/Azure/Azure.Quantum.Client/Machine/QuantumMachineFactory.cs index fe7aa8a6184..fd709cee94e 100644 --- a/src/Azure/Azure.Quantum.Client/Machine/QuantumMachineFactory.cs +++ b/src/Azure/Azure.Quantum.Client/Machine/QuantumMachineFactory.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +#nullable enable + using System; using Microsoft.Quantum.Runtime; @@ -13,9 +15,10 @@ public static class QuantumMachineFactory /// /// The Azure Quantum workspace. /// The execution target for job submission. - /// The connection string for the Azure storage account. + /// The connection string for the Azure storage account. /// A quantum machine for job submission targeting targetName. - public static IQuantumMachine? CreateMachine(IWorkspace workspace, string targetName, string storageAccountConnectionString) + public static IQuantumMachine? CreateMachine( + IWorkspace workspace, string targetName, string? storageConnectionString = null) { var machineName = targetName is null @@ -26,7 +29,7 @@ targetName is null ? "Microsoft.Quantum.Providers.Honeywell.Targets.HoneywellQuantumMachine, Microsoft.Quantum.Providers.Honeywell" : null; - Type machineType = null; + Type? machineType = null; if (machineName != null) { // First try to load the signed assembly with the correct version, then try the unsigned one. @@ -48,7 +51,7 @@ targetName is null machineType, targetName, workspace, - storageAccountConnectionString); + storageConnectionString); } } -} \ No newline at end of file +} diff --git a/src/Quantum.Development.Kit/Props/QSharp.targets b/src/Quantum.Development.Kit/Props/QSharp.targets index f3a638fc586..8168e7919a1 100644 --- a/src/Quantum.Development.Kit/Props/QSharp.targets +++ b/src/Quantum.Development.Kit/Props/QSharp.targets @@ -7,25 +7,25 @@ --> - $(QscExe) $(QsharpDocsGen) --qst $(QsharpTree) --input "@(QsharpFiles,'" "')" --references "@(QsReferences,'" "')" --output $(QsharpOutDir) + $(QscExe) $(QsharpDocsGen) --qst "$(QsharpTree)" --input "@(QsharpFiles,'" "')" --references "@(QsReferences,'" "')" --output "$(QsharpOutDir)" - + - - + + @@ -36,7 +36,7 @@ DependsOnTargets="QsharpPrepare" BeforeTargets="Clean"> - + @@ -52,21 +52,23 @@ false - + false $(BaseIntermediateOutputPath)qsharp - $(QsharpOutDir)\ - $(QsharpOutDir)src\ + $([MSBuild]::Unescape('$(QsharpOutDir)').Replace('\', '/')) + $(QsharpOutDir)/ + $(QsharpOutDir)src/ $(QsharpOutDir).backup.$([System.DateTime]::Now.ToString(`yyyyMMddhhmmss`)) - $(QsharpOutDir)docs\ - --doc $(QsharpDocsOutDir) + $(QsharpOutDir)docs/ + $([MSBuild]::Unescape('$(QsharpDocsOutDir)').Replace('\', '/')) + --doc "$(QsharpDocsOutDir)" $([System.String]::Copy('$(AssemblyName)').Replace(' ','')) - \ No newline at end of file + diff --git a/src/Simulation/Core/Qubit.cs b/src/Simulation/Core/Qubit.cs index 61f912fd5b6..ec1e0d40125 100644 --- a/src/Simulation/Core/Qubit.cs +++ b/src/Simulation/Core/Qubit.cs @@ -32,6 +32,8 @@ public Qubit(int id) this.Id = id; } + public bool IsMeasured { get; set; } = false; + public int Id { get; private set; } [DebuggerBrowsable(DebuggerBrowsableState.Never)] diff --git a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs index 6605b571cd2..36d0eac39a3 100644 --- a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs +++ b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs @@ -3552,9 +3552,9 @@ using Microsoft.Quantum.Simulation.Core; [assembly: CallableDeclaration("{\"Kind\":{\"Case\":\"TypeConstructor\"},\"QualifiedName\":{\"Namespace\":\"Microsoft.Quantum.Diagnostics\",\"Name\":\"Test\"},\"Attributes\":[],\"Modifiers\":{\"Access\":{\"Case\":\"DefaultAccess\"}},\"SourceFile\":\"%%%\",\"Position\":{\"Item1\":12,\"Item2\":4},\"SymbolRange\":{\"Item1\":{\"Line\":1,\"Column\":9},\"Item2\":{\"Line\":1,\"Column\":13}},\"ArgumentTuple\":{\"Case\":\"QsTuple\",\"Fields\":[[{\"Case\":\"QsTupleItem\",\"Fields\":[{\"VariableName\":{\"Case\":\"ValidName\",\"Fields\":[\"__Item1__\"]},\"Type\":{\"Case\":\"String\"},\"InferredInformation\":{\"IsMutable\":false,\"HasLocalQuantumDependency\":false},\"Position\":{\"Case\":\"Null\"},\"Range\":{\"Item1\":{\"Line\":1,\"Column\":1},\"Item2\":{\"Line\":1,\"Column\":1}}}]}]]},\"Signature\":{\"TypeParameters\":[],\"ArgumentType\":{\"Case\":\"String\"},\"ReturnType\":{\"Case\":\"UserDefinedType\",\"Fields\":[{\"Namespace\":\"Microsoft.Quantum.Diagnostics\",\"Name\":\"Test\",\"Range\":{\"Case\":\"Null\"}}]},\"Information\":{\"Characteristics\":{\"Case\":\"EmptySet\"},\"InferredInformation\":{\"IsSelfAdjoint\":false,\"IsIntrinsic\":true}}},\"Documentation\":[]}")] [assembly: SpecializationDeclaration("{\"Kind\":{\"Case\":\"QsBody\"},\"TypeArguments\":{\"Case\":\"Null\"},\"Information\":{\"Characteristics\":{\"Case\":\"EmptySet\"},\"InferredInformation\":{\"IsSelfAdjoint\":false,\"IsIntrinsic\":true}},\"Parent\":{\"Namespace\":\"Microsoft.Quantum.Diagnostics\",\"Name\":\"Test\"},\"Attributes\":[],\"SourceFile\":\"%%%\",\"Position\":{\"Item1\":12,\"Item2\":4},\"HeaderRange\":{\"Item1\":{\"Line\":1,\"Column\":9},\"Item2\":{\"Line\":1,\"Column\":13}},\"Documentation\":[]}")] [assembly: TypeDeclaration("{\"QualifiedName\":{\"Namespace\":\"Microsoft.Quantum.Diagnostics\",\"Name\":\"Test\"},\"Attributes\":[{\"TypeId\":{\"Case\":\"Value\",\"Fields\":[{\"Namespace\":\"Microsoft.Quantum.Core\",\"Name\":\"Attribute\",\"Range\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":2},\"Item2\":{\"Line\":1,\"Column\":11}}]}}]},\"Argument\":{\"Item1\":{\"Case\":\"UnitValue\"},\"Item2\":[],\"Item3\":{\"Case\":\"UnitType\"},\"Item4\":{\"IsMutable\":false,\"HasLocalQuantumDependency\":false},\"Item5\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":11},\"Item2\":{\"Line\":1,\"Column\":13}}]}},\"Offset\":{\"Item1\":11,\"Item2\":4},\"Comments\":{\"OpeningComments\":[],\"ClosingComments\":[]}}],\"Modifiers\":{\"Access\":{\"Case\":\"DefaultAccess\"}},\"SourceFile\":\"%%%\",\"Position\":{\"Item1\":12,\"Item2\":4},\"SymbolRange\":{\"Item1\":{\"Line\":1,\"Column\":9},\"Item2\":{\"Line\":1,\"Column\":13}},\"Type\":{\"Case\":\"String\"},\"TypeItems\":{\"Case\":\"QsTuple\",\"Fields\":[[{\"Case\":\"QsTupleItem\",\"Fields\":[{\"Case\":\"Anonymous\",\"Fields\":[{\"Case\":\"String\"}]}]}]]},\"Documentation\":[]}")] -[assembly: CallableDeclaration("{\"Kind\":{\"Case\":\"Operation\"},\"QualifiedName\":{\"Namespace\":\"Microsoft.Quantum.Tests.UnitTests\",\"Name\":\"UnitTest1\"},\"Attributes\":[{\"TypeId\":{\"Case\":\"Value\",\"Fields\":[{\"Namespace\":\"Microsoft.Quantum.Diagnostics\",\"Name\":\"Test\",\"Range\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":2},\"Item2\":{\"Line\":1,\"Column\":6}}]}}]},\"Argument\":{\"Item1\":{\"Case\":\"ValueTuple\",\"Fields\":[[{\"Item1\":{\"Case\":\"StringLiteral\",\"Fields\":[\"ToffoliSimulator\",[]]},\"Item2\":[],\"Item3\":{\"Case\":\"String\"},\"Item4\":{\"IsMutable\":false,\"HasLocalQuantumDependency\":false},\"Item5\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":7},\"Item2\":{\"Line\":1,\"Column\":25}}]}}]]},\"Item2\":[],\"Item3\":{\"Case\":\"String\"},\"Item4\":{\"IsMutable\":false,\"HasLocalQuantumDependency\":false},\"Item5\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":6},\"Item2\":{\"Line\":1,\"Column\":26}}]}},\"Offset\":{\"Item1\":20,\"Item2\":4},\"Comments\":{\"OpeningComments\":[],\"ClosingComments\":[]}},{\"TypeId\":{\"Case\":\"Value\",\"Fields\":[{\"Namespace\":\"Microsoft.Quantum.Diagnostics\",\"Name\":\"Test\",\"Range\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":2},\"Item2\":{\"Line\":1,\"Column\":6}}]}}]},\"Argument\":{\"Item1\":{\"Case\":\"ValueTuple\",\"Fields\":[[{\"Item1\":{\"Case\":\"StringLiteral\",\"Fields\":[\"QuantumSimulator\",[]]},\"Item2\":[],\"Item3\":{\"Case\":\"String\"},\"Item4\":{\"IsMutable\":false,\"HasLocalQuantumDependency\":false},\"Item5\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":7},\"Item2\":{\"Line\":1,\"Column\":25}}]}}]]},\"Item2\":[],\"Item3\":{\"Case\":\"String\"},\"Item4\":{\"IsMutable\":false,\"HasLocalQuantumDependency\":false},\"Item5\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":6},\"Item2\":{\"Line\":1,\"Column\":26}}]}},\"Offset\":{\"Item1\":19,\"Item2\":4},\"Comments\":{\"OpeningComments\":[],\"ClosingComments\":[]}}],\"Modifiers\":{\"Access\":{\"Case\":\"DefaultAccess\"}},\"SourceFile\":\"%%%\",\"Position\":{\"Item1\":21,\"Item2\":4},\"SymbolRange\":{\"Item1\":{\"Line\":1,\"Column\":11},\"Item2\":{\"Line\":1,\"Column\":20}},\"ArgumentTuple\":{\"Case\":\"QsTuple\",\"Fields\":[[]]},\"Signature\":{\"TypeParameters\":[],\"ArgumentType\":{\"Case\":\"UnitType\"},\"ReturnType\":{\"Case\":\"UnitType\"},\"Information\":{\"Characteristics\":{\"Case\":\"EmptySet\"},\"InferredInformation\":{\"IsSelfAdjoint\":false,\"IsIntrinsic\":false}}},\"Documentation\":[]}")] +[assembly: CallableDeclaration("{\"Kind\":{\"Case\":\"Operation\"},\"QualifiedName\":{\"Namespace\":\"Microsoft.Quantum.Tests.UnitTests\",\"Name\":\"UnitTest1\"},\"Attributes\":[{\"TypeId\":{\"Case\":\"Value\",\"Fields\":[{\"Namespace\":\"Microsoft.Quantum.Diagnostics\",\"Name\":\"Test\",\"Range\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":2},\"Item2\":{\"Line\":1,\"Column\":6}}]}}]},\"Argument\":{\"Item1\":{\"Case\":\"StringLiteral\",\"Fields\":[\"ToffoliSimulator\",[]]},\"Item2\":[],\"Item3\":{\"Case\":\"String\"},\"Item4\":{\"IsMutable\":false,\"HasLocalQuantumDependency\":false},\"Item5\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":7},\"Item2\":{\"Line\":1,\"Column\":25}}]}},\"Offset\":{\"Item1\":20,\"Item2\":4},\"Comments\":{\"OpeningComments\":[],\"ClosingComments\":[]}},{\"TypeId\":{\"Case\":\"Value\",\"Fields\":[{\"Namespace\":\"Microsoft.Quantum.Diagnostics\",\"Name\":\"Test\",\"Range\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":2},\"Item2\":{\"Line\":1,\"Column\":6}}]}}]},\"Argument\":{\"Item1\":{\"Case\":\"StringLiteral\",\"Fields\":[\"QuantumSimulator\",[]]},\"Item2\":[],\"Item3\":{\"Case\":\"String\"},\"Item4\":{\"IsMutable\":false,\"HasLocalQuantumDependency\":false},\"Item5\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":7},\"Item2\":{\"Line\":1,\"Column\":25}}]}},\"Offset\":{\"Item1\":19,\"Item2\":4},\"Comments\":{\"OpeningComments\":[],\"ClosingComments\":[]}}],\"Modifiers\":{\"Access\":{\"Case\":\"DefaultAccess\"}},\"SourceFile\":\"%%%\",\"Position\":{\"Item1\":21,\"Item2\":4},\"SymbolRange\":{\"Item1\":{\"Line\":1,\"Column\":11},\"Item2\":{\"Line\":1,\"Column\":20}},\"ArgumentTuple\":{\"Case\":\"QsTuple\",\"Fields\":[[]]},\"Signature\":{\"TypeParameters\":[],\"ArgumentType\":{\"Case\":\"UnitType\"},\"ReturnType\":{\"Case\":\"UnitType\"},\"Information\":{\"Characteristics\":{\"Case\":\"EmptySet\"},\"InferredInformation\":{\"IsSelfAdjoint\":false,\"IsIntrinsic\":false}}},\"Documentation\":[]}")] [assembly: SpecializationDeclaration("{\"Kind\":{\"Case\":\"QsBody\"},\"TypeArguments\":{\"Case\":\"Null\"},\"Information\":{\"Characteristics\":{\"Case\":\"EmptySet\"},\"InferredInformation\":{\"IsSelfAdjoint\":false,\"IsIntrinsic\":false}},\"Parent\":{\"Namespace\":\"Microsoft.Quantum.Tests.UnitTests\",\"Name\":\"UnitTest1\"},\"Attributes\":[],\"SourceFile\":\"%%%\",\"Position\":{\"Item1\":21,\"Item2\":4},\"HeaderRange\":{\"Item1\":{\"Line\":1,\"Column\":11},\"Item2\":{\"Line\":1,\"Column\":20}},\"Documentation\":[]}")] -[assembly: CallableDeclaration("{\"Kind\":{\"Case\":\"Operation\"},\"QualifiedName\":{\"Namespace\":\"Microsoft.Quantum.Tests.UnitTests\",\"Name\":\"UnitTest2\"},\"Attributes\":[{\"TypeId\":{\"Case\":\"Value\",\"Fields\":[{\"Namespace\":\"Microsoft.Quantum.Diagnostics\",\"Name\":\"Test\",\"Range\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":2},\"Item2\":{\"Line\":1,\"Column\":6}}]}}]},\"Argument\":{\"Item1\":{\"Case\":\"ValueTuple\",\"Fields\":[[{\"Item1\":{\"Case\":\"StringLiteral\",\"Fields\":[\"SomeNamespace.CustomSimulator\",[]]},\"Item2\":[],\"Item3\":{\"Case\":\"String\"},\"Item4\":{\"IsMutable\":false,\"HasLocalQuantumDependency\":false},\"Item5\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":7},\"Item2\":{\"Line\":1,\"Column\":38}}]}}]]},\"Item2\":[],\"Item3\":{\"Case\":\"String\"},\"Item4\":{\"IsMutable\":false,\"HasLocalQuantumDependency\":false},\"Item5\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":6},\"Item2\":{\"Line\":1,\"Column\":39}}]}},\"Offset\":{\"Item1\":24,\"Item2\":4},\"Comments\":{\"OpeningComments\":[],\"ClosingComments\":[]}}],\"Modifiers\":{\"Access\":{\"Case\":\"DefaultAccess\"}},\"SourceFile\":\"%%%\",\"Position\":{\"Item1\":25,\"Item2\":4},\"SymbolRange\":{\"Item1\":{\"Line\":1,\"Column\":11},\"Item2\":{\"Line\":1,\"Column\":20}},\"ArgumentTuple\":{\"Case\":\"QsTuple\",\"Fields\":[[]]},\"Signature\":{\"TypeParameters\":[],\"ArgumentType\":{\"Case\":\"UnitType\"},\"ReturnType\":{\"Case\":\"UnitType\"},\"Information\":{\"Characteristics\":{\"Case\":\"EmptySet\"},\"InferredInformation\":{\"IsSelfAdjoint\":false,\"IsIntrinsic\":false}}},\"Documentation\":[]}")] +[assembly: CallableDeclaration("{\"Kind\":{\"Case\":\"Operation\"},\"QualifiedName\":{\"Namespace\":\"Microsoft.Quantum.Tests.UnitTests\",\"Name\":\"UnitTest2\"},\"Attributes\":[{\"TypeId\":{\"Case\":\"Value\",\"Fields\":[{\"Namespace\":\"Microsoft.Quantum.Diagnostics\",\"Name\":\"Test\",\"Range\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":2},\"Item2\":{\"Line\":1,\"Column\":6}}]}}]},\"Argument\":{\"Item1\":{\"Case\":\"StringLiteral\",\"Fields\":[\"SomeNamespace.CustomSimulator\",[]]},\"Item2\":[],\"Item3\":{\"Case\":\"String\"},\"Item4\":{\"IsMutable\":false,\"HasLocalQuantumDependency\":false},\"Item5\":{\"Case\":\"Value\",\"Fields\":[{\"Item1\":{\"Line\":1,\"Column\":7},\"Item2\":{\"Line\":1,\"Column\":38}}]}},\"Offset\":{\"Item1\":24,\"Item2\":4},\"Comments\":{\"OpeningComments\":[],\"ClosingComments\":[]}}],\"Modifiers\":{\"Access\":{\"Case\":\"DefaultAccess\"}},\"SourceFile\":\"%%%\",\"Position\":{\"Item1\":25,\"Item2\":4},\"SymbolRange\":{\"Item1\":{\"Line\":1,\"Column\":11},\"Item2\":{\"Line\":1,\"Column\":20}},\"ArgumentTuple\":{\"Case\":\"QsTuple\",\"Fields\":[[]]},\"Signature\":{\"TypeParameters\":[],\"ArgumentType\":{\"Case\":\"UnitType\"},\"ReturnType\":{\"Case\":\"UnitType\"},\"Information\":{\"Characteristics\":{\"Case\":\"EmptySet\"},\"InferredInformation\":{\"IsSelfAdjoint\":false,\"IsIntrinsic\":false}}},\"Documentation\":[]}")] [assembly: SpecializationDeclaration("{\"Kind\":{\"Case\":\"QsBody\"},\"TypeArguments\":{\"Case\":\"Null\"},\"Information\":{\"Characteristics\":{\"Case\":\"EmptySet\"},\"InferredInformation\":{\"IsSelfAdjoint\":false,\"IsIntrinsic\":false}},\"Parent\":{\"Namespace\":\"Microsoft.Quantum.Tests.UnitTests\",\"Name\":\"UnitTest2\"},\"Attributes\":[],\"SourceFile\":\"%%%\",\"Position\":{\"Item1\":25,\"Item2\":4},\"HeaderRange\":{\"Item1\":{\"Line\":1,\"Column\":11},\"Item2\":{\"Line\":1,\"Column\":20}},\"Documentation\":[]}")] #line hidden diff --git a/src/Simulation/EntryPointDriver.Tests/Tests.fs b/src/Simulation/EntryPointDriver.Tests/Tests.fs index 57f283a2d73..7f242fdc5a0 100644 --- a/src/Simulation/EntryPointDriver.Tests/Tests.fs +++ b/src/Simulation/EntryPointDriver.Tests/Tests.fs @@ -179,8 +179,6 @@ let private testWith testNum defaultSimulator = /// Standard command-line arguments for the "submit" command without specifying a target. let private submitWithoutTarget = [ "submit" - "--storage" - "myStorage" "--subscription" "mySubscription" "--resource-group" @@ -550,10 +548,10 @@ let ``Submit uses default values`` () = given (submitWithNothingTarget @ ["--verbose"]) |> yields "The friendly URI for viewing job results is not available yet. Showing the job ID instead. Target: test.nothing - Storage: myStorage Subscription: mySubscription Resource Group: myResourceGroup Workspace: myWorkspace + Storage: AAD Token: Base URI: Job Name: @@ -569,6 +567,8 @@ let ``Submit allows overriding default values`` () = let given = test 1 given (submitWithNothingTarget @ [ "--verbose" + "--storage" + "myStorage" "--aad-token" "myToken" "--base-uri" @@ -580,10 +580,10 @@ let ``Submit allows overriding default values`` () = ]) |> yields "The friendly URI for viewing job results is not available yet. Showing the job ID instead. Target: test.nothing - Storage: myStorage Subscription: mySubscription Resource Group: myResourceGroup Workspace: myWorkspace + Storage: myStorage AAD Token: myToken Base URI: myBaseUri Job Name: myJobName @@ -686,10 +686,10 @@ let ``Shows help text for submit command`` () = Options: --target (REQUIRED) The target device ID. - --storage (REQUIRED) The storage account connection string. --subscription (REQUIRED) The subscription ID. --resource-group (REQUIRED) The resource group name. --workspace (REQUIRED) The workspace name. + --storage The storage account connection string. --aad-token The Azure Active Directory authentication token. --base-uri The base URI of the Azure Quantum endpoint. --job-name The name of the submitted job. diff --git a/src/Simulation/EntryPointDriver/Azure.cs b/src/Simulation/EntryPointDriver/Azure.cs index 86ad79791a3..0f3b3a91e77 100644 --- a/src/Simulation/EntryPointDriver/Azure.cs +++ b/src/Simulation/EntryPointDriver/Azure.cs @@ -195,11 +195,6 @@ internal sealed class AzureSettings /// public string? Target { get; set; } - /// - /// The storage account connection string. - /// - public string? Storage { get; set; } - /// /// The subscription ID. /// @@ -215,6 +210,11 @@ internal sealed class AzureSettings /// public string? Workspace { get; set; } + /// + /// The storage account connection string. + /// + public string? Storage { get; set; } + /// /// The Azure Active Directory authentication token. /// @@ -262,10 +262,10 @@ AadToken is null public override string ToString() => string.Join(System.Environment.NewLine, $"Target: {Target}", - $"Storage: {Storage}", $"Subscription: {Subscription}", $"Resource Group: {ResourceGroup}", $"Workspace: {Workspace}", + $"Storage: {Storage}", $"AAD Token: {AadToken}", $"Base URI: {BaseUri}", $"Job Name: {JobName}", diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index daabf992cde..13a836e85f2 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -81,10 +81,10 @@ public async Task Run(string[] args) Handler = CommandHandler.Create(Submit) }; AddOptionIfAvailable(submit, TargetOption); - AddOptionIfAvailable(submit, StorageOption); AddOptionIfAvailable(submit, SubscriptionOption); AddOptionIfAvailable(submit, ResourceGroupOption); AddOptionIfAvailable(submit, WorkspaceOption); + AddOptionIfAvailable(submit, StorageOption); AddOptionIfAvailable(submit, AadTokenOption); AddOptionIfAvailable(submit, BaseUriOption); AddOptionIfAvailable(submit, JobNameOption); @@ -133,10 +133,10 @@ private async Task Submit(ParseResult parseResult, AzureSettings azureSetti await Azure.Submit(entryPoint, parseResult, new AzureSettings { Target = azureSettings.Target, - Storage = azureSettings.Storage, Subscription = azureSettings.Subscription, ResourceGroup = azureSettings.ResourceGroup, Workspace = azureSettings.Workspace, + Storage = DefaultIfShadowed(StorageOption, azureSettings.Storage), AadToken = DefaultIfShadowed(AadTokenOption, azureSettings.AadToken), BaseUri = DefaultIfShadowed(BaseUriOption, azureSettings.BaseUri), JobName = DefaultIfShadowed(JobNameOption, azureSettings.JobName), @@ -211,12 +211,6 @@ internal static class Driver internal static readonly OptionInfo TargetOption = new OptionInfo( ImmutableList.Create("--target"), "The target device ID."); - /// - /// The storage option. - /// - internal static readonly OptionInfo StorageOption = new OptionInfo( - ImmutableList.Create("--storage"), "The storage account connection string."); - /// /// The subscription option. /// @@ -235,6 +229,12 @@ internal static class Driver internal static readonly OptionInfo WorkspaceOption = new OptionInfo( ImmutableList.Create("--workspace"), "The workspace name."); + /// + /// The storage option. + /// + internal static readonly OptionInfo StorageOption = new OptionInfo( + ImmutableList.Create("--storage"), default, "The storage account connection string."); + /// /// The AAD token option. /// diff --git a/src/Simulation/Simulators.Tests/Circuits/CoreOperations.qs b/src/Simulation/Simulators.Tests/Circuits/CoreOperations.qs index 78e9e2fc0af..75898a27657 100644 --- a/src/Simulation/Simulators.Tests/Circuits/CoreOperations.qs +++ b/src/Simulation/Simulators.Tests/Circuits/CoreOperations.qs @@ -540,7 +540,7 @@ namespace Microsoft.Quantum.Simulation.Simulators.Tests.Circuits { return Foo(3); } - operation ToffoliUsingQubitCheck () : Unit + operation UsingQubitCheck () : Unit { using (q = Qubit()) { @@ -549,15 +549,25 @@ namespace Microsoft.Quantum.Simulation.Simulators.Tests.Circuits { } } - operation ToffoliBorrowingQubitCheck () : Unit + operation ReleaseMeasuredQubitCheck () : Unit { using (q = Qubit()) { - ToffoliBorrower(); + X(q); + let r = M(q); + // Should not raise an exception + } + } + + operation BorrowingQubitCheck () : Unit + { + using (q = Qubit()) + { + QubitBorrower(); } } - operation ToffoliBorrower() : Unit + operation QubitBorrower() : Unit { borrowing (q = Qubit()) { diff --git a/src/Simulation/Simulators.Tests/QuantumSimulatorTests/QubitReleaseTest.cs b/src/Simulation/Simulators.Tests/QuantumSimulatorTests/QubitReleaseTest.cs new file mode 100644 index 00000000000..a267a719274 --- /dev/null +++ b/src/Simulation/Simulators.Tests/QuantumSimulatorTests/QubitReleaseTest.cs @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Quantum.Simulation.Core; +using Microsoft.Quantum.Simulation.Simulators.Exceptions; +using Microsoft.Quantum.Simulation.Simulators.Tests.Circuits; +using Xunit; + +namespace Microsoft.Quantum.Simulation.Simulators.Tests +{ + public partial class QuantumSimulatorTests + { + //test to check that qubit cannot be released if it is not in zero state + [Fact] + public async Task ZeroStateQubitReleaseTest() + { + var sim = new QuantumSimulator(); + + await Assert.ThrowsAsync(() => UsingQubitCheck.Run(sim)); + } + + //test to check that qubit can be released if measured + [Fact] + public async Task MeasuredQubitReleaseTest() + { + var sim = new QuantumSimulator(); + + //should not throw an exception, as Measured qubits are allowed to be released, and the release aspect is handled in the C++ code + await ReleaseMeasuredQubitCheck.Run(sim); + } + + //test to check that qubit that is released and reallocated is in state |0> + [Fact] + public async Task ReallocateQubitInGroundStateTest() + { + var sim = new QuantumSimulator(); + var allocate = sim.Get(); + var release = sim.Get(); + var q1 = allocate.Apply(1); + var q1Id = q1[0].Id; + var gate = sim.Get(); + var measure = sim.Get(); + gate.Apply(q1[0]); + var result1 = measure.Apply(q1[0]); + //Check X operation + Assert.Equal(result1, Result.One); + release.Apply(q1[0]); + var q2 = allocate.Apply(1); + var q2Id = q2[0].Id; + //Assert reallocated qubit has the same id as the one released + Assert.Equal(q1Id, q2Id); + var result2 = measure.Apply(q2[0]); + //Assert reallocated qubit has is initialized in state |0> + Assert.Equal(result2, Result.Zero); + + + + } + } +} diff --git a/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs b/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs index a3638cb332a..9e805f8d22c 100644 --- a/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs +++ b/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs @@ -156,7 +156,7 @@ public async Task ToffoliUsingCheck() { var sim = new ToffoliSimulator(); - await Assert.ThrowsAsync(() => ToffoliUsingQubitCheck.Run(sim)); + await Assert.ThrowsAsync(() => UsingQubitCheck.Run(sim)); } [Fact] @@ -164,7 +164,7 @@ public async Task ToffoliBorrowingCheck() { var sim = new ToffoliSimulator(); - await Assert.ThrowsAsync(() => ToffoliBorrowingQubitCheck.Run(sim)); + await Assert.ThrowsAsync(() => BorrowingQubitCheck.Run(sim)); } [Fact] diff --git a/src/Simulation/Simulators/QuantumSimulator/Assert.cs b/src/Simulation/Simulators/QuantumSimulator/Assert.cs index 50f198d01c7..d0936509470 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Assert.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Assert.cs @@ -28,7 +28,7 @@ public QSimAssert(QuantumSimulator m) : base(m) { var (paulis, qubits, result, msg) = _args; - this.Simulator.CheckQubits(qubits); + this.Simulator.CheckAndPreserveQubits(qubits); if (paulis.Length != qubits.Length) { diff --git a/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs b/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs index cec9be07f3a..8f93eea3b31 100644 --- a/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs +++ b/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs @@ -29,7 +29,7 @@ public QSimAssertProb(QuantumSimulator m) : base(m) { var (paulis, qubits, result, expectedPr, msg, tol) = _args; - Simulator.CheckQubits(qubits); + Simulator.CheckAndPreserveQubits(qubits); if (paulis.Length != qubits.Length) { diff --git a/src/Simulation/Simulators/QuantumSimulator/Dump.cs b/src/Simulation/Simulators/QuantumSimulator/Dump.cs index ce83a813525..5845114baf4 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Dump.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Dump.cs @@ -96,7 +96,7 @@ public QSimDumpRegister(QuantumSimulator m) : base(m) var (location, qubits) = __in; if (location == null) { throw new ArgumentNullException(nameof(location)); } - Simulator.CheckQubits(qubits); + Simulator.CheckAndPreserveQubits(qubits); return Simulator.Dump(location, qubits); }; diff --git a/src/Simulation/Simulators/QuantumSimulator/M.cs b/src/Simulation/Simulators/QuantumSimulator/M.cs index 3ea3717fd63..6f2766ea333 100644 --- a/src/Simulation/Simulators/QuantumSimulator/M.cs +++ b/src/Simulation/Simulators/QuantumSimulator/M.cs @@ -27,7 +27,8 @@ public QSimM(QuantumSimulator m) : base(m) public override Func Body => (q) => { Simulator.CheckQubit(q); - + //setting qubit as measured to allow for release + q.IsMeasured = true; return M(Simulator.Id, (uint)q.Id).ToResult(); }; } diff --git a/src/Simulation/Simulators/QuantumSimulator/Measure.cs b/src/Simulation/Simulators/QuantumSimulator/Measure.cs index 853b61ac8a5..40661c9b4d9 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Measure.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Measure.cs @@ -27,12 +27,15 @@ public QSimMeasure(QuantumSimulator m) : base(m) var (paulis, qubits) = _args; Simulator.CheckQubits(qubits); - if (paulis.Length != qubits.Length) { throw new InvalidOperationException($"Both input arrays for {this.GetType().Name} (paulis,qubits), must be of same size"); } - + foreach (Qubit q in qubits) + { + //setting qubit as measured to allow for release + q.IsMeasured = true; + } return Measure(Simulator.Id, (uint)paulis.Length, paulis.ToArray(), qubits.GetIds()).ToResult(); }; } diff --git a/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs b/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs index 478f511b756..e073a4ac39b 100644 --- a/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs +++ b/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs @@ -89,28 +89,35 @@ static void CheckAngle(double angle) /// /// Makes sure the target qubit of an operation is valid. In particular it checks that the qubit instance is not null. + /// Also sets the isMeasured flag to false for each qubit /// void CheckQubit(Qubit q1) { if (q1 == null) throw new ArgumentNullException(nameof(q1), "Trying to perform a primitive operation on a null Qubit"); + //setting qubit as not measured to not allow release in case of gate operation on qubit + q1.IsMeasured = false; } /// /// Makes sure all qubits are valid as parameter of an intrinsic quantum operation. In particular it checks that /// - none of the qubits are null /// - there are no duplicated qubits + /// Also sets the isMeasured flag to false for each qubit /// bool[] CheckQubits(IQArray ctrls, Qubit q1) { bool[] used = new bool[((QSimQubitManager)QubitManager).MaxId]; CheckQubitInUse(q1, used); + q1.IsMeasured = false; if (ctrls != null && ctrls.Length > 0) { foreach (var q in ctrls) { CheckQubitInUse(q, used); + //setting qubit as not measured to not allow release in case of gate operation on qubit + q.IsMeasured = false; } } @@ -122,6 +129,7 @@ bool[] CheckQubits(IQArray ctrls, Qubit q1) /// Makes sure all qubits are valid as parameter of an intrinsic quantum operation. In particular it checks that /// - none of the qubits are null /// - there are no duplicated qubits + /// Also sets the isMeasured flag to false for each qubit /// bool[] CheckQubits(IQArray targets) { @@ -133,16 +141,40 @@ bool[] CheckQubits(IQArray targets) foreach (var q in targets) { CheckQubitInUse(q, used); + //setting qubit as not measured to not allow release in case of gate operation on qubit + q.IsMeasured = false; } return used; } /// + /// Intended to be used with simulator functions like Dump, Assert, AssertProb /// Makes sure all qubits are valid as parameter of an intrinsic quantum operation. In particular it checks that /// - none of the qubits are null /// - there are no duplicated qubits /// + bool[] CheckAndPreserveQubits(IQArray targets) + { + if (targets == null) throw new ArgumentNullException(nameof(targets), "Trying to perform an intrinsic operation on a null Qubit array."); + if (targets.Length == 0) throw new ArgumentNullException(nameof(targets), "Trying to perform an intrinsic operation on an empty Qubit array."); + + bool[] used = new bool[((QSimQubitManager)QubitManager).MaxId]; + + foreach (var q in targets) + { + CheckQubitInUse(q, used); + } + + return used; + } + + /// + /// Makes sure all qubits are valid as parameter of an intrinsic quantum operation. In particular it checks that + /// - none of the qubits are null + /// - there are no duplicated qubits + /// Also sets the isMeasured flag to false for each qubit + /// bool[] CheckQubits(IQArray ctrls, IQArray targets) { bool[] used = CheckQubits(targets); @@ -152,6 +184,8 @@ bool[] CheckQubits(IQArray ctrls, IQArray targets) foreach (var q in ctrls) { CheckQubitInUse(q, used); + //setting qubit as not measured to not allow release in case of gate operation on qubit + q.IsMeasured = false; } } diff --git a/src/Simulation/Simulators/QuantumSimulator/QubitManager.cs b/src/Simulation/Simulators/QuantumSimulator/QubitManager.cs index 58ff574fc34..7b45f3f9ba4 100644 --- a/src/Simulation/Simulators/QuantumSimulator/QubitManager.cs +++ b/src/Simulation/Simulators/QuantumSimulator/QubitManager.cs @@ -63,13 +63,14 @@ protected override void ReleaseOneQubit(Qubit qubit, bool usedOnlyForBorrowing) base.ReleaseOneQubit(qubit, usedOnlyForBorrowing); if (qubit != null) { - bool areAllReleasedQubitsZero = ReleaseOne(this.SimulatorId, (uint)qubit.Id); - if (!areAllReleasedQubitsZero && throwOnReleasingQubitsNotInZeroState) + bool isReleasedQubitZero = ReleaseOne(this.SimulatorId, (uint)qubit.Id); + if (!(isReleasedQubitZero || qubit.IsMeasured) && throwOnReleasingQubitsNotInZeroState) { throw new ReleasedQubitsAreNotInZeroState(); } } } } + } } From 2fd2a49e493e8642828c6e0dcbd6ddb361a0ee96 Mon Sep 17 00:00:00 2001 From: Bettina Heim Date: Sun, 21 Jun 2020 18:59:58 -0700 Subject: [PATCH 15/15] correct package version --- .../CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj | 2 +- ....Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj | 2 +- src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj | 2 +- .../Simulators.Tests/TestProjects/Library1/Library1.csproj | 2 +- .../Simulators.Tests/TestProjects/Library2/Library2.csproj | 2 +- .../Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj | 2 +- .../Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj | 2 +- .../Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj | 2 +- src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj index 11815c3b5cd..1bc1a267e83 100644 --- a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj +++ b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj @@ -21,7 +21,7 @@ - + diff --git a/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj b/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj index 93f6fcdda8a..93d81f193bb 100644 --- a/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj +++ b/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj b/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj index 57eb7f960d9..03556c866bd 100644 --- a/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj +++ b/src/Simulation/QsharpCore/Microsoft.Quantum.QSharp.Core.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj index 8ad13362001..8e69c0a388d 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj index 8ad13362001..8e69c0a388d 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj index 093dc26385d..9326805e5a9 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj b/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj index 34bf53735a1..73c103678c0 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 diff --git a/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj b/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj index 23d83a63aca..cc6001ef292 100644 --- a/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj index a2f8b0373cf..167a6619277 100644 --- a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - +