From b87994619ac4efab4aca4fb471684ea42875481f Mon Sep 17 00:00:00 2001 From: Sarah Marshall <33814365+samarsha@users.noreply.github.com> Date: Wed, 26 Aug 2020 09:23:14 -0700 Subject: [PATCH 1/5] Update C# generation to use new position types (#342) --- src/Simulation/CsharpGeneration/Context.fs | 4 ++-- .../Microsoft.Quantum.CsharpGeneration.fsproj | 2 +- src/Simulation/CsharpGeneration/SimulationCode.fs | 10 +++++----- ...t.Quantum.Simulation.QCTraceSimulatorRuntime.csproj | 2 +- .../QsharpCore/Microsoft.Quantum.QSharp.Core.csproj | 2 +- .../TestProjects/HoneywellExe/HoneywellExe.csproj | 4 ++-- .../TestProjects/IntrinsicTests/IntrinsicTests.csproj | 2 +- .../TestProjects/IonQExe/IonQExe.csproj | 4 ++-- .../Library with Spaces/Library with Spaces.csproj | 2 +- .../TestProjects/Library1/Library1.csproj | 2 +- .../TestProjects/Library2/Library2.csproj | 2 +- .../Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj | 4 ++-- .../TestProjects/QsharpExe/QsharpExe.csproj | 2 +- .../TestProjects/TargetedExe/TargetedExe.csproj | 4 ++-- .../TestProjects/UnitTests/UnitTests.csproj | 2 +- .../Tests.Microsoft.Quantum.Simulators.csproj | 2 +- .../Simulators/Microsoft.Quantum.Simulators.csproj | 2 +- 17 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/Simulation/CsharpGeneration/Context.fs b/src/Simulation/CsharpGeneration/Context.fs index 514a7636577..c692c705e9a 100644 --- a/src/Simulation/CsharpGeneration/Context.fs +++ b/src/Simulation/CsharpGeneration/Context.fs @@ -19,7 +19,7 @@ module internal DeclarationLocations = type TransformationState() = member val internal CurrentSource = null with get, set - member val internal DeclarationLocations = new List * (int * int)>() + member val internal DeclarationLocations = new List * Position>() type NamespaceTransformation(parent : SyntaxTreeTransformation) = inherit NamespaceTransformation(parent) @@ -60,7 +60,7 @@ type CodegenContext = { allQsElements : IEnumerable allUdts : ImmutableDictionary allCallables : ImmutableDictionary - declarationPositions : ImmutableDictionary, ImmutableSortedSet> + declarationPositions : ImmutableDictionary, ImmutableSortedSet> byName : ImmutableDictionary,(NonNullable*QsCallable) list> current : QsQualifiedName option signature : ResolvedSignature option diff --git a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj index 65b75b2e1df..75496178ba5 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/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index 8b2b10ebfd5..3a419aac894 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -274,7 +274,7 @@ module SimulationCode = override this.OnStatement (node:QsStatement) = match node.Location with | Value loc -> - let (current, _) = loc.Offset + let current = loc.Offset.Line parent.LineNumber <- parent.StartLine |> Option.map (fun start -> start + current + 1) // The Q# compiler reports 0-based line numbers. | Null -> parent.LineNumber <- None // auto-generated statement; the line number will be set to the specialization declaration @@ -839,7 +839,7 @@ module SimulationCode = override this.OnSpecializationDeclaration (sp : QsSpecialization) = count <- 0 match sp.Location with - | Value location -> parent.StartLine <- Some (location.Offset |> fst) + | Value location -> parent.StartLine <- Some location.Offset.Line | Null -> parent.StartLine <- None // TODO: we may need to have the means to know which original declaration the code came from base.OnSpecializationDeclaration sp @@ -1003,12 +1003,12 @@ module SimulationCode = | Null -> [] | Value location -> [ // since the line numbers throughout the generated code are 1-based, let's also choose them 1-based here - let startLine = fst location.Offset + 1 + let startLine = location.Offset.Line + 1 let endLine = match context.declarationPositions.TryGetValue sp.SourceFile with | true, startPositions -> let index = startPositions.IndexOf location.Offset - if index + 1 >= startPositions.Count then -1 else fst startPositions.[index + 1] + 1 + if index + 1 >= startPositions.Count then -1 else startPositions.[index + 1].Line + 1 //TODO: diagnostics. | false, _ -> startLine ``attribute`` None (``ident`` "SourceLocation") [ @@ -1328,7 +1328,7 @@ module SimulationCode = let properties = buildOutput () let methods = match op.Location with - | Value location -> [ buildUnitTest targetName opName (fst location.Offset) op.SourceFile.Value ] + | Value location -> [ buildUnitTest targetName opName location.Offset.Line op.SourceFile.Value ] // TODO: diagnostics | Null -> failwith "missing location for unit test" 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 a7d91377dcd..ff3f9c59da5 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 610567a3181..6e8467e5159 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/HoneywellExe/HoneywellExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj index cb464f8c01d..27cc28e4a65 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj @@ -1,4 +1,4 @@ - + Library @@ -22,4 +22,4 @@ - \ No newline at end of file + diff --git a/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj b/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj index 71bd465814e..8396c045f93 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj index a7745b792ef..83d11ae6541 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj @@ -1,4 +1,4 @@ - + Library @@ -22,4 +22,4 @@ - \ No newline at end of file + diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj index 6cce3506ac6..df4d6e13a43 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 false diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj index 426f60111e2..c01bc8d99bc 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 426f60111e2..c01bc8d99bc 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/QCIExe/QCIExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj index 3bee22e3534..fcc18c5313d 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj @@ -1,4 +1,4 @@ - + Library @@ -22,4 +22,4 @@ - \ No newline at end of file + diff --git a/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj index d6401020995..e74705db790 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/TargetedExe/TargetedExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj index b8f0258e5c2..6e76c47fe19 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj @@ -1,4 +1,4 @@ - + Exe @@ -37,4 +37,4 @@ - \ No newline at end of file + diff --git a/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj b/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj index 7cc66e81104..03d1c8a4a8e 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 ed018f6a6f2..ca7ce29588f 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 ef8c2bb42b6..00cd0c2aeda 100644 --- a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - + From ab4cbdc501bad3050b0c5e10a556b44d9ef2d10a Mon Sep 17 00:00:00 2001 From: Andres Paz Date: Wed, 26 Aug 2020 11:33:59 -0700 Subject: [PATCH 2/5] Remove bond. (#223) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove bond. * Fixed post-merge issues. Co-authored-by: César Zaragoza Cortés --- .../Microsoft.Azure.Quantum.Client.csproj | 1 - .../Storage/IJobStorageHelper.cs | 8 +------- .../Azure.Quantum.Client/Storage/IStorageHelper.cs | 7 ++----- .../Storage/JobStorageHelper.cs | 7 ------- .../Storage/JobStorageHelperBase.cs | 14 +++++--------- .../Storage/LinkedStorageJobHelper.cs | 7 ------- .../Azure.Quantum.Client/Storage/StorageHelper.cs | 9 +++------ 7 files changed, 11 insertions(+), 42 deletions(-) diff --git a/src/Azure/Azure.Quantum.Client/Microsoft.Azure.Quantum.Client.csproj b/src/Azure/Azure.Quantum.Client/Microsoft.Azure.Quantum.Client.csproj index 83a9e34ab8a..c3a437ad80a 100644 --- a/src/Azure/Azure.Quantum.Client/Microsoft.Azure.Quantum.Client.csproj +++ b/src/Azure/Azure.Quantum.Client/Microsoft.Azure.Quantum.Client.csproj @@ -22,7 +22,6 @@ - diff --git a/src/Azure/Azure.Quantum.Client/Storage/IJobStorageHelper.cs b/src/Azure/Azure.Quantum.Client/Storage/IJobStorageHelper.cs index c5a47217a7b..30e058779ed 100644 --- a/src/Azure/Azure.Quantum.Client/Storage/IJobStorageHelper.cs +++ b/src/Azure/Azure.Quantum.Client/Storage/IJobStorageHelper.cs @@ -4,7 +4,6 @@ using System.IO; using System.Threading; using System.Threading.Tasks; -using Bond; namespace Microsoft.Azure.Quantum.Storage { @@ -23,13 +22,11 @@ public interface IJobStorageHelper /// /// The job id. /// The input. - /// Serialization protocol of the input to upload. /// The cancellation token. /// Container uri + Input uri. Task<(string containerUri, string inputUri)> UploadJobInputAsync( string jobId, Stream input, - ProtocolType protocol = ProtocolType.COMPACT_PROTOCOL, CancellationToken cancellationToken = default); /// @@ -37,13 +34,11 @@ public interface IJobStorageHelper /// /// The job id. /// The job program output mapping. - /// Serialization protocol of the mapping to upload. /// The cancellation token. /// Container uri + Mapping uri. Task<(string containerUri, string mappingUri)> UploadJobMappingAsync( string jobId, Stream mapping, - ProtocolType protocol = ProtocolType.COMPACT_PROTOCOL, CancellationToken cancellationToken = default); /// @@ -52,8 +47,7 @@ public interface IJobStorageHelper /// The job id. /// The destination stream. /// The cancellation token. - /// Serialization protocol of the downloaded execution output. - Task DownloadJobOutputAsync( + Task DownloadJobOutputAsync( string jobId, Stream destination, CancellationToken cancellationToken = default); diff --git a/src/Azure/Azure.Quantum.Client/Storage/IStorageHelper.cs b/src/Azure/Azure.Quantum.Client/Storage/IStorageHelper.cs index d1e010f9e9e..54b7ae589fa 100644 --- a/src/Azure/Azure.Quantum.Client/Storage/IStorageHelper.cs +++ b/src/Azure/Azure.Quantum.Client/Storage/IStorageHelper.cs @@ -7,7 +7,6 @@ namespace Microsoft.Azure.Quantum.Storage using System.IO; using System.Threading; using System.Threading.Tasks; - using Bond; using global::Azure.Storage.Blobs; using Microsoft.WindowsAzure.Storage.Blob; @@ -20,8 +19,8 @@ public interface IStorageHelper /// Name of the BLOB. /// The destination. /// The cancellation token. - /// Serialization protocol of the downloaded BLOB. - Task DownloadBlobAsync( + /// Async task. + Task DownloadBlobAsync( BlobContainerClient containerClient, string blobName, Stream destination, @@ -33,14 +32,12 @@ Task DownloadBlobAsync( /// Container client. /// Name of the BLOB. /// The input. - /// Serialization protocol of the BLOB to upload. /// The cancellation token. /// async task. Task UploadBlobAsync( BlobContainerClient containerClient, string blobName, Stream input, - ProtocolType protocol = ProtocolType.COMPACT_PROTOCOL, CancellationToken cancellationToken = default); /// diff --git a/src/Azure/Azure.Quantum.Client/Storage/JobStorageHelper.cs b/src/Azure/Azure.Quantum.Client/Storage/JobStorageHelper.cs index 4898e24c6db..63234851d42 100644 --- a/src/Azure/Azure.Quantum.Client/Storage/JobStorageHelper.cs +++ b/src/Azure/Azure.Quantum.Client/Storage/JobStorageHelper.cs @@ -7,7 +7,6 @@ namespace Microsoft.Azure.Quantum.Storage using System.IO; using System.Threading; using System.Threading.Tasks; - using Bond; using global::Azure.Storage.Blobs; using Microsoft.Azure.Quantum.Exceptions; using Microsoft.Azure.Quantum.Utility; @@ -43,7 +42,6 @@ public JobStorageHelper(string connectionString) /// /// The job id. /// The input. - /// Serialization protocol of the input to upload. /// The cancellation token. /// /// Container uri + Input uri. @@ -51,7 +49,6 @@ public JobStorageHelper(string connectionString) public override async Task<(string containerUri, string inputUri)> UploadJobInputAsync( string jobId, Stream input, - ProtocolType protocol = ProtocolType.COMPACT_PROTOCOL, CancellationToken cancellationToken = default) { string containerName = GetContainerName(jobId); @@ -62,7 +59,6 @@ await this.StorageHelper.UploadBlobAsync( containerClient, Constants.Storage.InputBlobName, input, - protocol, cancellationToken); string containerUri = this.StorageHelper.GetBlobContainerSasUri( @@ -86,13 +82,11 @@ await this.StorageHelper.UploadBlobAsync( /// /// The job id. /// The job program output mapping. - /// Serialization protocol of the mapping to upload. /// The cancellation token. /// Container uri + Mapping uri. public override async Task<(string containerUri, string mappingUri)> UploadJobMappingAsync( string jobId, Stream mapping, - ProtocolType protocol = ProtocolType.COMPACT_PROTOCOL, CancellationToken cancellationToken = default) { string containerName = GetContainerName(jobId); @@ -102,7 +96,6 @@ await this.StorageHelper.UploadBlobAsync( containerClient, Constants.Storage.MappingBlobName, mapping, - protocol, cancellationToken); string containerUri = this.StorageHelper.GetBlobContainerSasUri( diff --git a/src/Azure/Azure.Quantum.Client/Storage/JobStorageHelperBase.cs b/src/Azure/Azure.Quantum.Client/Storage/JobStorageHelperBase.cs index 29f1c232016..92ea7fdb47f 100644 --- a/src/Azure/Azure.Quantum.Client/Storage/JobStorageHelperBase.cs +++ b/src/Azure/Azure.Quantum.Client/Storage/JobStorageHelperBase.cs @@ -7,7 +7,6 @@ namespace Microsoft.Azure.Quantum.Storage using System.IO; using System.Threading; using System.Threading.Tasks; - using Bond; using global::Azure.Storage.Blobs; using Microsoft.Azure.Quantum.Utility; @@ -38,20 +37,21 @@ public JobStorageHelperBase() /// The job id. /// The destination stream. /// The cancellation token. - /// Serialization protocol of the downloaded execution output. - public async Task DownloadJobOutputAsync( + /// Async task. + public async Task DownloadJobOutputAsync( string jobId, Stream destination, CancellationToken cancellationToken = default) { string containerName = GetContainerName(jobId); BlobContainerClient containerClient = await this.GetContainerClient(containerName); - - return await this.StorageHelper.DownloadBlobAsync( + await this.StorageHelper.DownloadBlobAsync( containerClient, "rawOutputData", // TODO: 14643 destination, cancellationToken); + + return; } /// @@ -59,13 +59,11 @@ public async Task DownloadJobOutputAsync( /// /// The job id. /// The input. - /// Serialization protocol of the input to upload. /// The cancellation token. /// Container uri + Input uri. public abstract Task<(string containerUri, string inputUri)> UploadJobInputAsync( string jobId, Stream input, - ProtocolType protocol = ProtocolType.COMPACT_PROTOCOL, CancellationToken cancellationToken = default); /// @@ -73,13 +71,11 @@ public async Task DownloadJobOutputAsync( /// /// The job id. /// The job program output mapping. - /// Serialization protocol of the mapping to upload. /// The cancellation token. /// Container uri + Mapping uri. public abstract Task<(string containerUri, string mappingUri)> UploadJobMappingAsync( string jobId, Stream mapping, - ProtocolType protocol = ProtocolType.COMPACT_PROTOCOL, CancellationToken cancellationToken = default); /// diff --git a/src/Azure/Azure.Quantum.Client/Storage/LinkedStorageJobHelper.cs b/src/Azure/Azure.Quantum.Client/Storage/LinkedStorageJobHelper.cs index 4d6dba0334c..e3e59f5f0b1 100644 --- a/src/Azure/Azure.Quantum.Client/Storage/LinkedStorageJobHelper.cs +++ b/src/Azure/Azure.Quantum.Client/Storage/LinkedStorageJobHelper.cs @@ -7,7 +7,6 @@ namespace Microsoft.Azure.Quantum.Storage using System.IO; using System.Threading; using System.Threading.Tasks; - using Bond; using global::Azure.Storage.Blobs; using Microsoft.Azure.Quantum.Utility; @@ -29,7 +28,6 @@ public LinkedStorageJobHelper(IWorkspace workspace) /// /// The job id. /// The input. - /// Serialization protocol of the input to upload. /// The cancellation token. /// /// Container uri + Input uri without SAS. @@ -37,7 +35,6 @@ public LinkedStorageJobHelper(IWorkspace workspace) public override async Task<(string containerUri, string inputUri)> UploadJobInputAsync( string jobId, Stream input, - ProtocolType protocol = ProtocolType.COMPACT_PROTOCOL, CancellationToken cancellationToken = default) { string containerName = GetContainerName(jobId); @@ -48,7 +45,6 @@ await this.StorageHelper.UploadBlobAsync( containerClient, Constants.Storage.InputBlobName, input, - protocol, cancellationToken); Uri inputUri = containerClient @@ -63,13 +59,11 @@ await this.StorageHelper.UploadBlobAsync( /// /// The job id. /// The job program output mapping. - /// Serialization protocol of the mapping to upload. /// The cancellation token. /// Container uri + Mapping uri without SAS. public override async Task<(string containerUri, string mappingUri)> UploadJobMappingAsync( string jobId, Stream mapping, - ProtocolType protocol = ProtocolType.COMPACT_PROTOCOL, CancellationToken cancellationToken = default) { string containerName = GetContainerName(jobId); @@ -79,7 +73,6 @@ await this.StorageHelper.UploadBlobAsync( containerClient, Constants.Storage.MappingBlobName, mapping, - protocol, cancellationToken); Uri mappingUri = containerClient diff --git a/src/Azure/Azure.Quantum.Client/Storage/StorageHelper.cs b/src/Azure/Azure.Quantum.Client/Storage/StorageHelper.cs index 2d4f80b713c..b385af601e7 100644 --- a/src/Azure/Azure.Quantum.Client/Storage/StorageHelper.cs +++ b/src/Azure/Azure.Quantum.Client/Storage/StorageHelper.cs @@ -7,7 +7,6 @@ namespace Microsoft.Azure.Quantum.Storage using System.IO; using System.Threading; using System.Threading.Tasks; - using Bond; using global::Azure.Storage.Blobs; using global::Azure.Storage.Blobs.Models; using Microsoft.Azure.Quantum.Exceptions; @@ -23,8 +22,8 @@ internal class StorageHelper : IStorageHelper /// Name of the BLOB. /// The destination. /// The cancellation token. - /// Serialization protocol of the downloaded BLOB. - public async Task DownloadBlobAsync( + /// Async task. + public async Task DownloadBlobAsync( BlobContainerClient containerClient, string blobName, Stream destination, @@ -40,7 +39,7 @@ public async Task DownloadBlobAsync( throw CreateException(ex, "Could not download BLOB", containerClient.Name, blobName); } - return ProtocolType.COMPACT_PROTOCOL; + return; } /// @@ -49,14 +48,12 @@ public async Task DownloadBlobAsync( /// Container client. /// Name of the BLOB. /// The input. - /// Serialization protocol of the BLOB to upload. /// The cancellation token. /// Async task. public async Task UploadBlobAsync( BlobContainerClient containerClient, string blobName, Stream input, - ProtocolType protocol = ProtocolType.COMPACT_PROTOCOL, CancellationToken cancellationToken = default) { try From 4a3eca470d79a0bb79e6beb270155f1d5bf3cc25 Mon Sep 17 00:00:00 2001 From: Sarah Marshall <33814365+samarsha@users.noreply.github.com> Date: Fri, 28 Aug 2020 14:58:36 -0700 Subject: [PATCH 3/5] Fix naming conflicts with generated C# members (#349) * Rename based on reserved word list * Update namespace encoding * Use underscores for Init and Factory * Use underscores for specialization names * Update underscores for Data{In,Out} * Update Body to __Body__ in property reflection * Use underscores for Deconstruct * Update tests * Add new tests * Update ItemN regex * Always append __ for referenced callable properties * Don't append __ when name already contains __ * Update tests * Add tests for #247 * Update remaining specialization names * Add Deconstruct to reserved words * Update tests --- src/Simulation/Common/SimulatorBase.cs | 12 +- src/Simulation/Core/AbstractCallable.cs | 6 +- src/Simulation/Core/Functions/Function.cs | 8 +- .../Core/Functions/FunctionPartial.cs | 10 +- src/Simulation/Core/Generics/Adjoint.cs | 2 +- src/Simulation/Core/Generics/Controlled.cs | 2 +- .../Core/Generics/GenericCallable.cs | 10 +- .../Core/Generics/GenericPartial.cs | 2 +- src/Simulation/Core/Operations/Adjoint.cs | 16 +- src/Simulation/Core/Operations/Controlled.cs | 22 +- src/Simulation/Core/Operations/Operation.cs | 20 +- .../Core/Operations/OperationPartial.cs | 34 +- src/Simulation/Core/Udts/UdtFactory.cs | 4 +- .../SimulationCodeTests.fs | 564 +++++++++--------- src/Simulation/CsharpGeneration/EntryPoint.fs | 4 +- .../CsharpGeneration/SimulationCode.fs | 94 +-- src/Simulation/QsharpCore/Bitwise/Bitwise.cs | 14 +- src/Simulation/QsharpCore/Convert/Convert.cs | 22 +- src/Simulation/QsharpCore/Core.cs | 10 +- src/Simulation/QsharpCore/Math/Math.cs | 72 +-- .../QsharpCore/Statements/Allocate.cs | 2 +- .../QsharpCore/Statements/Borrow.cs | 2 +- .../QsharpCore/Statements/Release.cs | 2 +- .../QsharpCore/Statements/Return.cs | 4 +- .../Simulators.Tests/Circuits/AssertEqual.cs | 2 +- .../Simulators.Tests/Circuits/MemberNames.qs | 89 +++ .../Circuits/NativeOperations.cs | 20 +- .../Simulators.Tests/GetQubitsTests.cs | 12 +- .../Simulators.Tests/OperationsTestHelper.cs | 16 +- .../Simulators.Tests/PartialMapperTests.cs | 4 +- .../QuantumSimulatorTests/BasicTests.cs | 4 +- .../Simulators.Tests/RuntimeMetadataTests.cs | 52 +- .../Simulators.Tests/SimulatorBaseTests.cs | 50 +- .../Simulators.Tests/StartOperationTests.cs | 16 +- .../Simulators.Tests/ToffoliSimulatorTests.cs | 4 +- .../QCTraceSimulator.ClassicalControl.cs | 36 +- .../QCTraceSimulator.Diagnostics.Dump.cs | 8 +- .../QCTraceSimulator.Interface.CX.cs | 4 +- .../QCTraceSimulator.Interface.Clifford.cs | 4 +- ...QCTraceSimulator.Interface.ForceMeasure.cs | 4 +- .../QCTraceSimulator.Interface.R.cs | 4 +- .../QCTraceSimulator.Interface.RFrac.cs | 4 +- .../QCTraceSimulator.Primitive.Assert.cs | 10 +- .../QCTraceSimulator.Primitive.AssertProb.cs | 10 +- .../QCTraceSimulator.Primitive.Measure.cs | 4 +- .../QCTraceSimulator.Primitive.random.cs | 2 +- .../Simulators/QuantumProcessor/Assert.cs | 8 +- .../Simulators/QuantumProcessor/AssertProb.cs | 8 +- .../QuantumProcessor/ClassicalControl.cs | 36 +- .../Simulators/QuantumProcessor/Dump.cs | 4 +- .../Simulators/QuantumProcessor/Exp.cs | 12 +- .../Simulators/QuantumProcessor/ExpFrac.cs | 12 +- .../Simulators/QuantumProcessor/H.cs | 4 +- .../Simulators/QuantumProcessor/M.cs | 2 +- .../Simulators/QuantumProcessor/Measure.cs | 2 +- .../Simulators/QuantumProcessor/R.cs | 12 +- .../Simulators/QuantumProcessor/R1.cs | 12 +- .../Simulators/QuantumProcessor/R1Frac.cs | 12 +- .../Simulators/QuantumProcessor/RFrac.cs | 12 +- .../Simulators/QuantumProcessor/Reset.cs | 2 +- .../Simulators/QuantumProcessor/S.cs | 8 +- .../Simulators/QuantumProcessor/SWAP.cs | 4 +- .../Simulators/QuantumProcessor/T.cs | 8 +- .../Simulators/QuantumProcessor/X.cs | 4 +- .../Simulators/QuantumProcessor/Y.cs | 4 +- .../Simulators/QuantumProcessor/Z.cs | 4 +- .../Simulators/QuantumProcessor/random.cs | 2 +- .../Simulators/QuantumSimulator/Assert.cs | 8 +- .../Simulators/QuantumSimulator/AssertProb.cs | 8 +- .../QuantumSimulator/ClassicalControl.cs | 36 +- .../Simulators/QuantumSimulator/Dump.cs | 4 +- .../Simulators/QuantumSimulator/Exp.cs | 14 +- .../Simulators/QuantumSimulator/ExpFrac.cs | 16 +- .../Simulators/QuantumSimulator/H.cs | 4 +- .../Simulators/QuantumSimulator/M.cs | 2 +- .../Simulators/QuantumSimulator/Measure.cs | 2 +- .../Simulators/QuantumSimulator/R.cs | 14 +- .../Simulators/QuantumSimulator/RFrac.cs | 16 +- .../Simulators/QuantumSimulator/S.cs | 10 +- .../Simulators/QuantumSimulator/T.cs | 10 +- .../Simulators/QuantumSimulator/X.cs | 4 +- .../Simulators/QuantumSimulator/Y.cs | 4 +- .../Simulators/QuantumSimulator/Z.cs | 4 +- .../Simulators/QuantumSimulator/random.cs | 2 +- .../Simulators/ToffoliSimulator/Assert.cs | 8 +- .../Simulators/ToffoliSimulator/AssertProb.cs | 8 +- .../Simulators/ToffoliSimulator/Dump.cs | 4 +- .../Simulators/ToffoliSimulator/Exp.cs | 8 +- .../Simulators/ToffoliSimulator/ExpFrac.cs | 8 +- .../Simulators/ToffoliSimulator/H.cs | 2 +- .../Simulators/ToffoliSimulator/M.cs | 2 +- .../Simulators/ToffoliSimulator/Measure.cs | 2 +- .../Simulators/ToffoliSimulator/R.cs | 8 +- .../Simulators/ToffoliSimulator/RFrac.cs | 8 +- .../Simulators/ToffoliSimulator/Random.cs | 2 +- .../Simulators/ToffoliSimulator/S.cs | 2 +- .../Simulators/ToffoliSimulator/SWAP.cs | 4 +- .../Simulators/ToffoliSimulator/T.cs | 2 +- .../Simulators/ToffoliSimulator/X.cs | 4 +- .../Simulators/ToffoliSimulator/Y.cs | 2 +- .../Simulators/ToffoliSimulator/Z.cs | 2 +- 101 files changed, 907 insertions(+), 796 deletions(-) create mode 100644 src/Simulation/Simulators.Tests/Circuits/MemberNames.qs diff --git a/src/Simulation/Common/SimulatorBase.cs b/src/Simulation/Common/SimulatorBase.cs index 849e0a82d1c..ffb9aef7f0c 100644 --- a/src/Simulation/Common/SimulatorBase.cs +++ b/src/Simulation/Common/SimulatorBase.cs @@ -105,7 +105,7 @@ public virtual I Get() where T : AbstractCallable, I public virtual void Init(AbstractCallable op) { - op.Init(); + op.__Init__(); } public override AbstractCallable CreateInstance(Type t) @@ -395,7 +395,7 @@ public Message(SimulatorBase m) : base(m) sim = m; } - public override Func Body => (msg) => + public override Func __Body__ => (msg) => { sim.OnLog?.Invoke(msg); return QVoid.Instance; @@ -414,7 +414,7 @@ public GetQubitsAvailableToUse(SimulatorBase m) : base(m) sim = m; } - public override Func Body => (arg) => sim.QubitManager.GetFreeQubitsCount(); + public override Func __Body__ => (arg) => sim.QubitManager.GetFreeQubitsCount(); } /// @@ -429,7 +429,7 @@ public GetQubitsAvailableToBorrow(SimulatorBase m) : base(m) sim = m; } - public override Func Body => (arg) => sim.QubitManager.GetParentQubitsAvailableToBorrowCount() + + public override Func __Body__ => (arg) => sim.QubitManager.GetParentQubitsAvailableToBorrowCount() + sim.QubitManager.GetFreeQubitsCount(); } @@ -446,7 +446,7 @@ public DrawRandomInt(SimulatorBase m) : base(m) sim = m; } - public override Func<(long, long), long> Body => arg => + public override Func<(long, long), long> __Body__ => arg => { var (min, max) = arg; if (max <= min) @@ -470,7 +470,7 @@ public DrawRandomDouble(SimulatorBase m) : base(m) sim = m; } - public override Func<(double, double), double> Body => arg => + public override Func<(double, double), double> __Body__ => arg => { var (min, max) = arg; if (max <= min) diff --git a/src/Simulation/Core/AbstractCallable.cs b/src/Simulation/Core/AbstractCallable.cs index 8fc7c712603..047c74065f5 100644 --- a/src/Simulation/Core/AbstractCallable.cs +++ b/src/Simulation/Core/AbstractCallable.cs @@ -21,15 +21,15 @@ public abstract class AbstractCallable : IApplyData public AbstractCallable(IOperationFactory m) { - this.Factory = m; + this.__Factory__ = m; } - public IOperationFactory Factory { get; private set; } + public IOperationFactory __Factory__ { get; private set; } /// /// This method is called once, to let the Operation initialize and verify its dependencies. /// - public abstract void Init(); + public abstract void __Init__(); /// /// Retrieves the runtime metadata of the Operation. If the Operation has no associated diff --git a/src/Simulation/Core/Functions/Function.cs b/src/Simulation/Core/Functions/Function.cs index 6c7bd93847c..6432ca277f8 100644 --- a/src/Simulation/Core/Functions/Function.cs +++ b/src/Simulation/Core/Functions/Function.cs @@ -29,15 +29,15 @@ public Function(IOperationFactory m) : base(m) OperationFunctor ICallable.Variant => OperationFunctor.Body; [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public abstract Func Body { get; } + public abstract Func __Body__ { get; } - public virtual IApplyData __dataIn(I data) => new QTuple(data); + public virtual IApplyData __DataIn__(I data) => new QTuple(data); - public virtual IApplyData __dataOut(O data) => new QTuple(data); + public virtual IApplyData __DataOut__(O data) => new QTuple(data); public O Apply(I a) { - var __result__ = this.Body(a); + var __result__ = this.__Body__(a); return __result__; } diff --git a/src/Simulation/Core/Functions/FunctionPartial.cs b/src/Simulation/Core/Functions/FunctionPartial.cs index 97d77437aa3..e46f656d596 100644 --- a/src/Simulation/Core/Functions/FunctionPartial.cs +++ b/src/Simulation/Core/Functions/FunctionPartial.cs @@ -14,7 +14,7 @@ namespace Microsoft.Quantum.Simulation.Core public class FunctionPartial : Function, ICallable { - public FunctionPartial(Function op, Func mapper) : base(op.Factory) + public FunctionPartial(Function op, Func mapper) : base(op.__Factory__) { Debug.Assert(op != null); Debug.Assert(mapper != null); @@ -23,7 +23,7 @@ public FunctionPartial(Function op, Func mapper) : base(op.Factory) this.Mapper = mapper; } - public FunctionPartial(Function op, object partialTuple) : base(op.Factory) + public FunctionPartial(Function op, object partialTuple) : base(op.__Factory__) { Debug.Assert(op != null); Debug.Assert(partialTuple != null); @@ -32,7 +32,7 @@ public FunctionPartial(Function op, object partialTuple) : base(op.Factory this.Mapper = PartialMapper.Create(partialTuple); } - public override void Init() { } + public override void __Init__() { } public ICallable BaseOp { get; } @@ -43,7 +43,7 @@ public override void Init() { } OperationFunctor ICallable.Variant => ((ICallable)this.BaseOp).Variant; - public override Func Body => (a) => + public override Func __Body__ => (a) => { var args = this.Mapper(a); return this.BaseOp.Apply(args); @@ -79,4 +79,4 @@ public DebuggerProxy(FunctionPartial op) : base(op) public ICallable Base => _op.BaseOp; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Core/Generics/Adjoint.cs b/src/Simulation/Core/Generics/Adjoint.cs index 45577250ebd..be38c67057f 100644 --- a/src/Simulation/Core/Generics/Adjoint.cs +++ b/src/Simulation/Core/Generics/Adjoint.cs @@ -25,7 +25,7 @@ public interface IAdjointable : ICallable [DebuggerTypeProxy(typeof(GenericAdjoint.DebuggerProxy))] public class GenericAdjoint : GenericCallable, IApplyData, IOperationWrapper { - public GenericAdjoint(GenericCallable baseOp) : base(baseOp.Factory, null) + public GenericAdjoint(GenericCallable baseOp) : base(baseOp.__Factory__, null) { this.BaseOp = baseOp; } diff --git a/src/Simulation/Core/Generics/Controlled.cs b/src/Simulation/Core/Generics/Controlled.cs index cc9b05fb994..f110cfef189 100644 --- a/src/Simulation/Core/Generics/Controlled.cs +++ b/src/Simulation/Core/Generics/Controlled.cs @@ -27,7 +27,7 @@ public partial interface IControllable : ICallable [DebuggerTypeProxy(typeof(GenericControlled.DebuggerProxy))] public class GenericControlled : GenericCallable, IApplyData, IOperationWrapper { - public GenericControlled(GenericCallable baseOp) : base(baseOp.Factory, null) + public GenericControlled(GenericCallable baseOp) : base(baseOp.__Factory__, null) { this.BaseOp = baseOp; } diff --git a/src/Simulation/Core/Generics/GenericCallable.cs b/src/Simulation/Core/Generics/GenericCallable.cs index cdd4ac3fce4..3dcd5b98b5a 100644 --- a/src/Simulation/Core/Generics/GenericCallable.cs +++ b/src/Simulation/Core/Generics/GenericCallable.cs @@ -54,7 +54,7 @@ public GenericCallable(IOperationFactory m, Type baseOp) : base(m) _controlled = new Lazy(() => new GenericControlled(this)); } - public override void Init() { } + public override void __Init__() { } public Type OperationType { get; } @@ -103,12 +103,12 @@ protected virtual ICallable CreateCallable(Type I, Type O) op = FindClosedType(I, O); } - var get = this.Factory.GetType() + var get = this.__Factory__.GetType() .GetMethod("Get", new Type[0]); var result = get .MakeGenericMethod(typeof(ICallable), op) - .Invoke(this.Factory, new object[] { }) + .Invoke(this.__Factory__, new object[] { }) as ICallable; return result; @@ -162,7 +162,7 @@ public virtual Type FindClosedType(Type I, Type O) // Get the list of Parameters of the Invoke method of the Body of the operation: var expectedParameters = this.OperationType - .GetProperty("Body").PropertyType + .GetProperty("__Body__").PropertyType .GetMethod("Invoke").GetParameters(); // Tuple in... @@ -171,7 +171,7 @@ public virtual Type FindClosedType(Type I, Type O) // Tuple out... var expectedReturn = this.OperationType - .GetProperty("Body").PropertyType + .GetProperty("__Body__").PropertyType .GetMethod("Invoke").ReturnType; Resolve(expectedReturn, O, typeArgs); diff --git a/src/Simulation/Core/Generics/GenericPartial.cs b/src/Simulation/Core/Generics/GenericPartial.cs index 8db1263639e..406dced1380 100644 --- a/src/Simulation/Core/Generics/GenericPartial.cs +++ b/src/Simulation/Core/Generics/GenericPartial.cs @@ -18,7 +18,7 @@ public class GenericPartial : GenericCallable, IApplyData, IOperationWrapper { private Lazy __qubits = null; - public GenericPartial(GenericCallable baseOp, object partialValues) : base(baseOp.Factory, null) + public GenericPartial(GenericCallable baseOp, object partialValues) : base(baseOp.__Factory__, null) { Debug.Assert(baseOp != null, "Received a null base operation"); Debug.Assert(partialValues != null, "Received a null partial value"); diff --git a/src/Simulation/Core/Operations/Adjoint.cs b/src/Simulation/Core/Operations/Adjoint.cs index 8e0efe35ad2..a4337c91436 100644 --- a/src/Simulation/Core/Operations/Adjoint.cs +++ b/src/Simulation/Core/Operations/Adjoint.cs @@ -43,7 +43,7 @@ public Adjointable(IOperationFactory m) : base(m) [DebuggerTypeProxy(typeof(AdjointedOperation<,>.DebuggerProxy))] public class AdjointedOperation : Unitary, IApplyData, ICallable, IOperationWrapper { - public AdjointedOperation(Operation op) : base(op.Factory) + public AdjointedOperation(Operation op) : base(op.__Factory__) { Debug.Assert(typeof(O) == typeof(QVoid)); Debug.Assert(op is Operation); @@ -54,25 +54,25 @@ public AdjointedOperation(Operation op) : base(op.Factory) public Operation BaseOp { get; } ICallable IOperationWrapper.BaseOperation => BaseOp; - public override void Init() { } + public override void __Init__() { } string ICallable.Name => ((ICallable)this.BaseOp).Name; string ICallable.FullName => ((ICallable)this.BaseOp).FullName; OperationFunctor ICallable.Variant => ((ICallable)this.BaseOp).AdjointVariant(); - public override Func Body => this.BaseOp.AdjointBody; + public override Func __Body__ => this.BaseOp.__AdjointBody__; - public override Func AdjointBody => this.BaseOp.Body; + public override Func __AdjointBody__ => this.BaseOp.__Body__; - public override Func<(IQArray, I), QVoid> ControlledBody => this.BaseOp.ControlledAdjointBody; + public override Func<(IQArray, I), QVoid> __ControlledBody__ => this.BaseOp.__ControlledAdjointBody__; - public override Func<(IQArray, I), QVoid> ControlledAdjointBody => this.BaseOp.ControlledBody; + public override Func<(IQArray, I), QVoid> __ControlledAdjointBody__ => this.BaseOp.__ControlledBody__; IEnumerable IApplyData.Qubits => ((IApplyData)this.BaseOp).Qubits; - public override IApplyData __dataIn(I data) => this.BaseOp.__dataIn(data); + public override IApplyData __DataIn__(I data) => this.BaseOp.__DataIn__(data); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; /// public override RuntimeMetadata? GetRuntimeMetadata(IApplyData args) diff --git a/src/Simulation/Core/Operations/Controlled.cs b/src/Simulation/Core/Operations/Controlled.cs index 770a9081f6f..5f0b823c576 100644 --- a/src/Simulation/Core/Operations/Controlled.cs +++ b/src/Simulation/Core/Operations/Controlled.cs @@ -60,7 +60,7 @@ public In((IQArray, IApplyData) data) IEnumerable IApplyData.Qubits => Qubit.Concat(Ctrls, BaseData?.Qubits); } - public ControlledOperation(Operation op) : base(op.Factory) + public ControlledOperation(Operation op) : base(op.__Factory__) { Debug.Assert(typeof(O) == typeof(QVoid)); Debug.Assert(op is Operation); @@ -71,17 +71,17 @@ public ControlledOperation(Operation op) : base(op.Factory) public Operation BaseOp { get; } ICallable IOperationWrapper.BaseOperation => BaseOp; - public override void Init() { } + public override void __Init__() { } string ICallable.Name => ((ICallable)this.BaseOp).Name; string ICallable.FullName => ((ICallable)this.BaseOp).FullName; OperationFunctor ICallable.Variant => ((ICallable)this.BaseOp).ControlledVariant(); - public override Func<(IQArray, I), QVoid> Body => this.BaseOp.ControlledBody; + public override Func<(IQArray, I), QVoid> __Body__ => this.BaseOp.__ControlledBody__; - public override Func<(IQArray, I), QVoid> AdjointBody => this.BaseOp.ControlledAdjointBody; + public override Func<(IQArray, I), QVoid> __AdjointBody__ => this.BaseOp.__ControlledAdjointBody__; - public override Func<(IQArray, (IQArray, I)), QVoid> ControlledBody + public override Func<(IQArray, (IQArray, I)), QVoid> __ControlledBody__ { get { @@ -89,12 +89,12 @@ public override void Init() { } { var (ctrl1, (ctrl2, args)) = __in; var ctrls = QArray.Add(ctrl1, ctrl2); - return this.BaseOp.ControlledBody.Invoke((ctrls, args)); + return this.BaseOp.__ControlledBody__.Invoke((ctrls, args)); }; } } - public override Func<(IQArray, (IQArray, I)), QVoid> ControlledAdjointBody + public override Func<(IQArray, (IQArray, I)), QVoid> __ControlledAdjointBody__ { get { @@ -102,16 +102,16 @@ public override void Init() { } { var (ctrl1, (ctrl2, args)) = __in; var ctrls = QArray.Add(ctrl1, ctrl2); - return this.BaseOp.ControlledAdjointBody.Invoke((ctrls, args)); + return this.BaseOp.__ControlledAdjointBody__.Invoke((ctrls, args)); }; } } IEnumerable IApplyData.Qubits => ((IApplyData)this.BaseOp).Qubits; - public override IApplyData __dataIn((IQArray, I) data) => new In((data.Item1, this.BaseOp.__dataIn(data.Item2))); + public override IApplyData __DataIn__((IQArray, I) data) => new In((data.Item1, this.BaseOp.__DataIn__(data.Item2))); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; /// public override RuntimeMetadata? GetRuntimeMetadata(IApplyData args) @@ -121,7 +121,7 @@ public override void Init() { } if (args.Value is ValueTuple, I> ctrlArgs) { var (controls, baseArgs) = ctrlArgs; - var baseMetadata = this.BaseOp.GetRuntimeMetadata(this.BaseOp.__dataIn(baseArgs)); + var baseMetadata = this.BaseOp.GetRuntimeMetadata(this.BaseOp.__DataIn__(baseArgs)); if (baseMetadata == null) return null; baseMetadata.IsControlled = true; baseMetadata.Controls = controls.Concat(baseMetadata.Controls); diff --git a/src/Simulation/Core/Operations/Operation.cs b/src/Simulation/Core/Operations/Operation.cs index 6a20d69af6c..3632ede3be5 100644 --- a/src/Simulation/Core/Operations/Operation.cs +++ b/src/Simulation/Core/Operations/Operation.cs @@ -55,21 +55,21 @@ public Operation(IOperationFactory m) : base(m) OperationFunctor ICallable.Variant => OperationFunctor.Body; - public virtual IApplyData __dataIn(I data) => new QTuple(data); + public virtual IApplyData __DataIn__(I data) => new QTuple(data); - public virtual IApplyData __dataOut(O data) => new QTuple(data); + public virtual IApplyData __DataOut__(O data) => new QTuple(data); [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public abstract Func Body { get; } + public abstract Func __Body__ { get; } [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public virtual Func AdjointBody => throw new NotImplementedException(); + public virtual Func __AdjointBody__ => throw new NotImplementedException(); [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public virtual Func<(IQArray, I), QVoid> ControlledBody => throw new NotImplementedException(); + public virtual Func<(IQArray, I), QVoid> __ControlledBody__ => throw new NotImplementedException(); [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public virtual Func<(IQArray, I), QVoid> ControlledAdjointBody => throw new NotImplementedException(); + public virtual Func<(IQArray, I), QVoid> __ControlledAdjointBody__ => throw new NotImplementedException(); [DebuggerBrowsable(DebuggerBrowsableState.Never)] public AdjointedOperation Adjoint => _adjoint.Value; @@ -92,17 +92,17 @@ public O Apply(I a) try { - this.Factory?.StartOperation(this, __dataIn(a)); - __result__ = this.Body(a); + this.__Factory__?.StartOperation(this, __DataIn__(a)); + __result__ = this.__Body__(a); } catch (Exception e) { - this.Factory?.Fail(System.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture(e)); + this.__Factory__?.Fail(System.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture(e)); throw; } finally { - this.Factory?.EndOperation(this, __dataOut(__result__)); + this.__Factory__?.EndOperation(this, __DataOut__(__result__)); } return __result__; diff --git a/src/Simulation/Core/Operations/OperationPartial.cs b/src/Simulation/Core/Operations/OperationPartial.cs index 5a68394d3eb..2dc02cc2946 100644 --- a/src/Simulation/Core/Operations/OperationPartial.cs +++ b/src/Simulation/Core/Operations/OperationPartial.cs @@ -29,7 +29,7 @@ public class In : IApplyData public In(Operation op, Func mapper, P data) { - this.__data = new Lazy(() => op?.__dataIn(mapper(data))); + this.__data = new Lazy(() => op?.__DataIn__(mapper(data))); } public object Value => __data.Value.Value; @@ -38,27 +38,27 @@ public In(Operation op, Func mapper, P data) } - public OperationPartial(Operation op, Func mapper) : base(op.Factory) + public OperationPartial(Operation op, Func mapper) : base(op.__Factory__) { Debug.Assert(op != null); Debug.Assert(mapper != null); this.BaseOp = op; this.Mapper = mapper; - this.__qubits = new Lazy(() => op?.__dataIn(mapper(default(P)))?.Qubits?.ToArray()); + this.__qubits = new Lazy(() => op?.__DataIn__(mapper(default(P)))?.Qubits?.ToArray()); } - public OperationPartial(Operation op, object partialTuple) : base(op.Factory) + public OperationPartial(Operation op, object partialTuple) : base(op.__Factory__) { Debug.Assert(op != null); Debug.Assert(partialTuple != null); this.BaseOp = op; this.Mapper = PartialMapper.Create(partialTuple); - this.__qubits = new Lazy(() => op?.__dataIn(this.Mapper(default(P)))?.Qubits?.ToArray()); + this.__qubits = new Lazy(() => op?.__DataIn__(this.Mapper(default(P)))?.Qubits?.ToArray()); } - public override void Init() { } + public override void __Init__() { } public Operation BaseOp { get; } ICallable IOperationWrapper.BaseOperation => BaseOp; @@ -70,39 +70,39 @@ public override void Init() { } OperationFunctor ICallable.Variant => ((ICallable)this.BaseOp).Variant; - public override IApplyData __dataIn(P data) => new In(this.BaseOp, this.Mapper, data); + public override IApplyData __DataIn__(P data) => new In(this.BaseOp, this.Mapper, data); - public override IApplyData __dataOut(O data) => this.BaseOp.__dataOut(data); + public override IApplyData __DataOut__(O data) => this.BaseOp.__DataOut__(data); - public override Func Body => (a) => + public override Func __Body__ => (a) => { var args = this.Mapper(a); - return this.BaseOp.Body.Invoke(args); + return this.BaseOp.__Body__.Invoke(args); }; - public override Func AdjointBody => (a) => + public override Func __AdjointBody__ => (a) => { Debug.Assert(typeof(O) == typeof(QVoid)); var op = this.BaseOp; var args = this.Mapper(a); - return op.AdjointBody.Invoke(args); + return op.__AdjointBody__.Invoke(args); }; - public override Func<(IQArray, P), QVoid> ControlledBody => (a) => + public override Func<(IQArray, P), QVoid> __ControlledBody__ => (a) => { Debug.Assert(typeof(O) == typeof(QVoid)); var op = this.BaseOp; var (ctrl, ps) = a; - return op.ControlledBody.Invoke((ctrl, this.Mapper(ps))); + return op.__ControlledBody__.Invoke((ctrl, this.Mapper(ps))); }; - public override Func<(IQArray, P), QVoid> ControlledAdjointBody => (a) => + public override Func<(IQArray, P), QVoid> __ControlledAdjointBody__ => (a) => { Debug.Assert(typeof(O) == typeof(QVoid)); var op = this.BaseOp; var (ctrl, ps) = a; - return op.ControlledAdjointBody.Invoke((ctrl, this.Mapper(ps))); + return op.__ControlledAdjointBody__.Invoke((ctrl, this.Mapper(ps))); }; IEnumerable IApplyData.Qubits => __qubits.Value; @@ -167,4 +167,4 @@ public DebuggerProxy(OperationPartial op) : base(op) public Operation Base => _op.BaseOp; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Core/Udts/UdtFactory.cs b/src/Simulation/Core/Udts/UdtFactory.cs index 90c7c27e655..d4677b98b63 100644 --- a/src/Simulation/Core/Udts/UdtFactory.cs +++ b/src/Simulation/Core/Udts/UdtFactory.cs @@ -47,7 +47,7 @@ public T Partial(object partialInfo) public ICallable Partial(object partialTuple) => this.Partial(partialTuple); - public override void Init() + public override void __Init__() { } } -} \ No newline at end of file +} diff --git a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs index 7de7c97eb5a..b20864f09ee 100644 --- a/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs +++ b/src/Simulation/CsharpGeneration.Tests/SimulationCodeTests.fs @@ -861,10 +861,10 @@ namespace N1 let context = createTestContext op let deps = op |> operationDependencies |> depsByName let actual = deps |> buildInit context |> formatSyntaxTree - let expected = sprintf "public override void Init() { %s }" (String.concat "" body) + let expected = sprintf "public override void __Init__() { %s }" (String.concat "" body) Assert.Equal (expected |> clearFormatting, actual |> clearFormatting) - let template = sprintf "this.%s = this.Factory.Get<%s>(typeof(%s));" + let template = sprintf "this.%s = this.__Factory__.Get<%s>(typeof(%s));" [ ] |> testOne emptyOperation @@ -878,37 +878,37 @@ namespace N1 |> testOne genU2 [ - template "Allocate" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" - template "MicrosoftQuantumIntrinsicH" "IUnitary" "global::Microsoft.Quantum.Intrinsic.H" - template "H" "ICallable" "H" - template "Release" "Release" "global::Microsoft.Quantum.Intrinsic.Release" - template "MicrosoftQuantumOverridesemptyFunction" "ICallable" "global::Microsoft.Quantum.Overrides.emptyFunction" - template "emptyFunction" "ICallable" "emptyFunction" + template "Allocate__" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" + template "Microsoft__Quantum__Intrinsic__H" "IUnitary" "global::Microsoft.Quantum.Intrinsic.H" + template "H__" "ICallable" "H" + template "Release__" "Release" "global::Microsoft.Quantum.Intrinsic.Release" + template "Microsoft__Quantum__Overrides__emptyFunction" "ICallable" "global::Microsoft.Quantum.Overrides.emptyFunction" + template "emptyFunction__" "ICallable" "emptyFunction" ] |> testOne duplicatedDefinitionsCaller [ - template "Allocate" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" - template "CNOT" "IAdjointable<(Qubit, Qubit)>" "global::Microsoft.Quantum.Intrinsic.CNOT" - template "MicrosoftQuantumTestingHold" "ICallable" "global::Microsoft.Quantum.Testing.Hold<>" - template "Release" "Release" "global::Microsoft.Quantum.Intrinsic.Release" - template "ResultToString" "ICallable" "ResultToString" - template "X" "IUnitary" "global::Microsoft.Quantum.Intrinsic.X" - template "genIter" "IUnitary" "genIter<>" - template "genMapper" "ICallable" "genMapper<,>" - template "genU1" "IUnitary" "genU1<>" - template "MicrosoftQuantumTestingnoOpGeneric" "IUnitary" "global::Microsoft.Quantum.Testing.noOpGeneric<>" - template "MicrosoftQuantumTestingnoOpResult" "IUnitary" "global::Microsoft.Quantum.Testing.noOpResult" + template "Allocate__" "Allocate" "global::Microsoft.Quantum.Intrinsic.Allocate" + template "CNOT__" "IAdjointable<(Qubit, Qubit)>" "global::Microsoft.Quantum.Intrinsic.CNOT" + template "Microsoft__Quantum__Testing__Hold" "ICallable" "global::Microsoft.Quantum.Testing.Hold<>" + template "Release__" "Release" "global::Microsoft.Quantum.Intrinsic.Release" + template "ResultToString__" "ICallable" "ResultToString" + template "X__" "IUnitary" "global::Microsoft.Quantum.Intrinsic.X" + template "genIter__" "IUnitary" "genIter<>" + template "genMapper__" "ICallable" "genMapper<,>" + template "genU1__" "IUnitary" "genU1<>" + template "Microsoft__Quantum__Testing__noOpGeneric" "IUnitary" "global::Microsoft.Quantum.Testing.noOpGeneric<>" + template "Microsoft__Quantum__Testing__noOpResult" "IUnitary" "global::Microsoft.Quantum.Testing.noOpResult" ] |> testOne usesGenerics [ - template "genericWithMultipleTypeParams" "ICallable" "genericWithMultipleTypeParams<,,>" + template "genericWithMultipleTypeParams__" "ICallable" "genericWithMultipleTypeParams<,,>" ] |> testOne callsGenericWithMultipleTypeParams [ - template "Z" "IUnitary" "global::Microsoft.Quantum.Intrinsic.Z" + template "Z__" "IUnitary" "global::Microsoft.Quantum.Intrinsic.Z" "this.self = this;" ] |> testOne selfInvokingOperation @@ -981,27 +981,27 @@ namespace N1 let template = sprintf @"protected %s %s { get; set; }" [ - template "Allocate" "Allocate" - template "IAdjointable<(Qubit,Qubit)>" "CNOT" - template "ICallable" "MicrosoftQuantumTestingHold" - template "Release" "Release" - template "ICallable" "ResultToString" - template "IUnitary" "X" - template "IUnitary" "genIter" - template "ICallable" "genMapper" - template "IUnitary" "genU1" - template "IUnitary" "MicrosoftQuantumTestingnoOpGeneric" - template "IUnitary" "MicrosoftQuantumTestingnoOpResult" + template "Allocate" "Allocate__" + template "IAdjointable<(Qubit,Qubit)>" "CNOT__" + template "ICallable" "Microsoft__Quantum__Testing__Hold" + template "Release" "Release__" + template "ICallable" "ResultToString__" + template "IUnitary" "X__" + template "IUnitary" "genIter__" + template "ICallable" "genMapper__" + template "IUnitary" "genU1__" + template "IUnitary" "Microsoft__Quantum__Testing__noOpGeneric" + template "IUnitary" "Microsoft__Quantum__Testing__noOpResult" ] |> testOne usesGenerics [ - template "ICallable" "genericWithMultipleTypeParams" + template "ICallable" "genericWithMultipleTypeParams__" ] |> testOne callsGenericWithMultipleTypeParams [ - template "IUnitary" "Z" + template "IUnitary" "Z__" template "IAdjointable" "self" ] |> testOne selfInvokingOperation @@ -1015,7 +1015,7 @@ namespace N1 let ``buildOperationInfoProperty test`` () = let testOne (_, op) expectedCodeString = let context = {createTestContext op with entryPoints = ImmutableArray.Create op.FullName} - let (_, operationName) = findClassName context op + let (_, operationName) = findClassName op let inType = op.Signature.ArgumentType |> roslynTypeName context let outType = op.Signature.ReturnType |> roslynTypeName context let codeString = @@ -1094,37 +1094,37 @@ namespace N1 |> testOne (applyVisitor zeroQubitOperation) [ - "X.Apply(q1);" + "X__.Apply(q1);" ] |> testOne (applyVisitor oneQubitOperation) [ - "X.Adjoint.Apply(q1);" + "X__.Adjoint.Apply(q1);" ] |> testOne (adjointVisitor oneQubitOperation) [ "var (q2, r) = t1; " - "CNOT.Apply((q1,q2)); " - "R.Apply((r,q1)); " + "CNOT__.Apply((q1,q2)); " + "R__.Apply((r,q1)); " ] |> testOne (applyVisitor twoQubitOperation) [ "var (q2, r) = t1; " - "R.Adjoint.Apply((r,q1));" - "CNOT.Adjoint.Apply((q1,q2));" + "R__.Adjoint.Apply((r,q1));" + "CNOT__.Adjoint.Apply((q1,q2));" ] |> testOne (adjointVisitor twoQubitOperation) [ - "three_op1.Apply((q1,q2));" - "three_op1.Apply((q2,q1));" - "three_op1.Apply((q1,q2));" + "three_op1__.Apply((q1,q2));" + "three_op1__.Apply((q2,q1));" + "three_op1__.Apply((q1,q2));" ] |> testOne (applyVisitor threeQubitOperation) [ - "Z.Adjoint.Apply(q1);" + "Z__.Adjoint.Apply(q1);" "self.Apply(q1);" ] |> testOne (adjointVisitor selfInvokingOperation) @@ -1166,7 +1166,7 @@ namespace N1 let testOne = testOneBody [ - "X.Apply(q1);" + "X__.Apply(q1);" ] |> testOne (applyVisitor oneQubitOperation) @@ -1180,7 +1180,7 @@ namespace N1 |> testOne (applyVisitor composeImpl) [ - "return composeImpl.Partial((second, first, _));" + "return composeImpl__.Partial((second, first, _));" ] |> testOne (applyVisitor compose) @@ -1189,22 +1189,22 @@ namespace N1 let ``usesGenerics body`` () = [ "var a = (IQArray)new QArray(Result.One, Result.Zero, Result.Zero);" - "var s = (IQArray)new QArray(ResultToString.Apply(a[0L]), ResultToString.Apply(a[1L]));" - "MicrosoftQuantumTestingnoOpResult.Apply(a[0L]);" + "var s = (IQArray)new QArray(ResultToString__.Apply(a[0L]), ResultToString__.Apply(a[1L]));" + "Microsoft__Quantum__Testing__noOpResult.Apply(a[0L]);" """ { - var qubits = Allocate.Apply(3L); + var qubits = Allocate__.Apply(3L); #line hidden bool __arg1__ = true; try { - var op = MicrosoftQuantumTestingHold.Partial(new Func((__arg2__) => (CNOT, (qubits[0L], qubits[1L]), __arg2__))); + var op = Microsoft__Quantum__Testing__Hold.Partial(new Func((__arg2__) => (CNOT__, (qubits[0L], qubits[1L]), __arg2__))); op.Apply(QVoid.Instance); - MicrosoftQuantumTestingnoOpGeneric.Apply(qubits[0L]); - MicrosoftQuantumTestingnoOpGeneric.Apply(a[0L]); - genIter.Apply((X, qubits)); + Microsoft__Quantum__Testing__noOpGeneric.Apply(qubits[0L]); + Microsoft__Quantum__Testing__noOpGeneric.Apply(a[0L]); + genIter__.Apply((X__, qubits)); } #line hidden catch @@ -1217,17 +1217,17 @@ namespace N1 { if (__arg1__) { - Release.Apply(qubits); + Release__.Apply(qubits); } } } """ - "genIter.Apply((MicrosoftQuantumTestingnoOpResult, a));" + "genIter__.Apply((Microsoft__Quantum__Testing__noOpResult, a));" """ - genIter.Apply((genU1, genMapper.Apply>((ResultToString, a)))); + genIter__.Apply((genU1__, genMapper__.Apply>((ResultToString__, a)))); """ - "genIter.Apply((genU1, s));" - "genIter.Apply((genU1, a));" + "genIter__.Apply((genU1__, s));" + "genIter__.Apply((genU1__, a));" ] |> testOneBody (applyVisitor usesGenerics) @@ -1235,20 +1235,20 @@ namespace N1 [] let ``callTests body`` () = [ - "var plain = new call_plain(X);" - "var adj = new call_adj(X);" - "var ctr = new call_ctr(X);" - "var uni = new call_uni(X);" + "var plain = new call_plain(X__);" + "var adj = new call_adj(X__);" + "var ctr = new call_ctr(X__);" + "var uni = new call_uni(X__);" - "X.Apply(qubits.Data[0L]);" - "X.Adjoint.Apply(qubits.Data[0L]);" - "X.Controlled.Apply((qubits.Data.Slice(new QRange(1L,5L)), qubits.Data[0L]));" + "X__.Apply(qubits.Data[0L]);" + "X__.Adjoint.Apply(qubits.Data[0L]);" + "X__.Controlled.Apply((qubits.Data.Slice(new QRange(1L,5L)), qubits.Data[0L]));" - "call_target1.Apply((1L, X, X, X, X));" - "call_target1.Apply((1L, plain.Data, adj.Data, ctr.Data, uni.Data));" + "call_target1__.Apply((1L, X__, X__, X__, X__));" + "call_target1__.Apply((1L, plain.Data, adj.Data, ctr.Data, uni.Data));" - "call_target2.Apply((1L, (Result.Zero, X), (Result.Zero, X), (Result.Zero, X), (Result.Zero, X)));" - "call_target2.Apply((2L, (Result.One, plain.Data), (Result.One, adj.Data), (Result.One, ctr.Data), (Result.One, uni.Data)));" + "call_target2__.Apply((1L, (Result.Zero, X__), (Result.Zero, X__), (Result.Zero, X__), (Result.Zero, X__)));" + "call_target2__.Apply((2L, (Result.One, plain.Data), (Result.One, adj.Data), (Result.One, ctr.Data), (Result.One, uni.Data)));" ] |> testOneBody (applyVisitor callTests) @@ -1258,7 +1258,7 @@ namespace N1 [ "var q2 = q1;" - "var r = M.Apply(q1);" + "var r = M__.Apply(q1);" "var i = 1.1D;" "var iZero = 0L;" @@ -1291,7 +1291,7 @@ namespace N1 "var __arg1__ = t;" "var __arg2__ = t;" - "return let_f0.Apply(n);" + "return let_f0__.Apply(n);" ] |> testOneBody (applyVisitor letsOperations) @@ -1334,7 +1334,7 @@ namespace N1 """ if ((r == Result.One)) { - n = (if_f0.Apply(QVoid.Instance) * i); + n = (if_f0__.Apply(QVoid.Instance) * i); } """ """ @@ -1358,7 +1358,7 @@ namespace N1 } else { - return ((p==Pauli.PauliI)?3L:if_f0.Apply(QVoid.Instance)); + return ((p==Pauli.PauliI)?3L:if_f0__.Apply(QVoid.Instance)); } """ ] @@ -1382,7 +1382,7 @@ namespace N1 @"foreach (var n in range) #line hidden { - result = ((range.End + result) + (n * -(foreach_f2.Apply((n, 4L))))); + result = ((range.End + result) + (n * -(foreach_f2__.Apply((n, 4L))))); }" """ if ((result > 10L)) @@ -1420,7 +1420,7 @@ namespace N1 [] let ``test Length dependency`` () = [ - "iter.Apply((Length, new QArray>(new QArray(Result.One), new QArray(Result.Zero, Result.One))));" + "iter__.Apply((Length__, new QArray>(new QArray(Result.One), new QArray(Result.Zero, Result.One))));" ] |> testOneBody (applyVisitor testLengthDependency) @@ -1481,22 +1481,22 @@ namespace N1 [ """ { - var qubits = Allocate.Apply(i); + var qubits = Allocate__.Apply(i); #line hidden bool __arg1__ = true; try { while (true) { - var res = repeat_op0.Apply(new repeat_udt0((0L, qubits))); + var res = repeat_op0__.Apply(new repeat_udt0((0L, qubits))); - if ((repeat_op1.Apply((0L, qubits)) == Result.One)) + if ((repeat_op1__.Apply((0L, qubits)) == Result.One)) { break; } else { - res = repeat_op2.Apply((3D, new repeat_udt0(((i-1L), qubits)))); + res = repeat_op2__.Apply((3D, new repeat_udt0(((i-1L), qubits)))); } } } @@ -1511,7 +1511,7 @@ namespace N1 { if (__arg1__) { - Release.Apply(qubits); + Release__.Apply(qubits); } } } @@ -1524,14 +1524,14 @@ namespace N1 [ """ { - var q = Allocate.Apply(); + var q = Allocate__.Apply(); #line hidden bool __arg1__ = true; try { var flag = true; - (flag ? X : Z).Apply(q); - alloc_op0.Apply(q); + (flag ? X__ : Z__).Apply(q); + alloc_op0__.Apply(q); } #line hidden catch @@ -1544,18 +1544,18 @@ namespace N1 { if (__arg1__) { - Release.Apply(q); + Release__.Apply(q); } } }""" """ { - var qs = Allocate.Apply(n); + var qs = Allocate__.Apply(n); #line hidden bool __arg2__ = true; try { - alloc_op0.Apply(qs[(n-1L)]); + alloc_op0__.Apply(qs[(n-1L)]); } #line hidden catch @@ -1568,19 +1568,19 @@ namespace N1 { if (__arg2__) { - Release.Apply(qs); + Release__.Apply(qs); } } }""" """ { - var (q1, (q2, (__arg3__, q3, __arg4__, q4))) = (Allocate.Apply(), ((Allocate.Apply(), Allocate.Apply(2L)), (Allocate.Apply(), Allocate.Apply(n), Allocate.Apply((n-1L)), Allocate.Apply(4L)))); + var (q1, (q2, (__arg3__, q3, __arg4__, q4))) = (Allocate__.Apply(), ((Allocate__.Apply(), Allocate__.Apply(2L)), (Allocate__.Apply(), Allocate__.Apply(n), Allocate__.Apply((n-1L)), Allocate__.Apply(4L)))); #line hidden bool __arg5__ = true; try { - alloc_op0.Apply(q1); - alloc_op0.Apply(q3[1L]); + alloc_op0__.Apply(q1); + alloc_op0__.Apply(q3[1L]); } #line hidden catch @@ -1593,13 +1593,13 @@ namespace N1 { if (__arg5__) { - Release.Apply(q1); - Release.Apply(q2.Item1); - Release.Apply(q2.Item2); - Release.Apply(__arg3__); - Release.Apply(q3); - Release.Apply(__arg4__); - Release.Apply(q4); + Release__.Apply(q1); + Release__.Apply(q2.Item1); + Release__.Apply(q2.Item2); + Release__.Apply(__arg3__); + Release__.Apply(q3); + Release__.Apply(__arg4__); + Release__.Apply(q4); } } }""" @@ -1609,12 +1609,12 @@ namespace N1 [ """ { - var b = Borrow.Apply(n); + var b = Borrow__.Apply(n); #line hidden bool __arg1__ = true; try { - alloc_op0.Apply(b[(n-1L)]); + alloc_op0__.Apply(b[(n-1L)]); } #line hidden catch @@ -1627,25 +1627,25 @@ namespace N1 { if (__arg1__) { - Return.Apply(b); + Return__.Apply(b); } } }""" """ { - var (q1, (q2, (__arg2__, q3))) = (Borrow.Apply(), (Borrow.Apply(2L), (Borrow.Apply(), (Borrow.Apply(n), Borrow.Apply(4L))))); + var (q1, (q2, (__arg2__, q3))) = (Borrow__.Apply(), (Borrow__.Apply(2L), (Borrow__.Apply(), (Borrow__.Apply(n), Borrow__.Apply(4L))))); #line hidden bool __arg3__ = true; try { { - var qt = (Allocate.Apply(), (Allocate.Apply(1L), Allocate.Apply(2L))); + var qt = (Allocate__.Apply(), (Allocate__.Apply(1L), Allocate__.Apply(2L))); #line hidden bool __arg4__ = true; try { var (qt1, qt2) = ((Qubit, (IQArray, IQArray)))qt; - alloc_op0.Apply(qt1); + alloc_op0__.Apply(qt1); } #line hidden catch @@ -1658,15 +1658,15 @@ namespace N1 { if (__arg4__) { - Release.Apply(qt.Item1); - Release.Apply(qt.Item2.Item1); - Release.Apply(qt.Item2.Item2); + Release__.Apply(qt.Item1); + Release__.Apply(qt.Item2.Item1); + Release__.Apply(qt.Item2.Item2); } } } - alloc_op0.Apply(q1); - alloc_op0.Apply(q2[1L]); + alloc_op0__.Apply(q1); + alloc_op0__.Apply(q2[1L]); } #line hidden catch @@ -1679,11 +1679,11 @@ namespace N1 { if (__arg3__) { - Return.Apply(q1); - Return.Apply(q2); - Return.Apply(__arg2__); - Return.Apply(q3.Item1); - Return.Apply(q3.Item2); + Return__.Apply(q1); + Return__.Apply(q2); + Return__.Apply(__arg2__); + Return__.Apply(q3.Item1); + Return__.Apply(q3.Item2); } } }""" @@ -1732,7 +1732,7 @@ namespace N1 |> testOne randomAbstractOperation Some """ - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { #line hidden return QVoid.Instance; @@ -1740,11 +1740,11 @@ namespace N1 |> testOne zeroQubitOperation Some """ - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { var q1 = __in__; - X.Apply(q1); + X__.Apply(q1); #line hidden return QVoid.Instance; }; @@ -1752,14 +1752,14 @@ namespace N1 |> testOne oneQubitOperation Some """ - public override Func<(Qubit,(Qubit,Double)), QVoid> Body => (__in__) => + public override Func<(Qubit,(Qubit,Double)), QVoid> __Body__ => (__in__) => { var (q1,t1) = __in__; var (q2,r) = t1; - CNOT.Apply((q1, q2)); - R.Apply((r, q1)); + CNOT__.Apply((q1, q2)); + R__.Apply((r, q1)); #line hidden return QVoid.Instance; @@ -1769,14 +1769,14 @@ namespace N1 Some """ - public override Func<(Qubit,Qubit,IQArray), QVoid> Body => (__in__) => + public override Func<(Qubit,Qubit,IQArray), QVoid> __Body__ => (__in__) => { var (q1,q2,arr1) = __in__; - da_op0.Apply(QVoid.Instance); - da_op1.Adjoint.Apply(q1); - da_op2.Controlled.Apply((new QArray(q1), (1L, q2))); - da_op3.Controlled.Adjoint.Apply((new QArray(q1, q2), (1.1D, Result.One, arr1.Length))); + da_op0__.Apply(QVoid.Instance); + da_op1__.Adjoint.Apply(q1); + da_op2__.Controlled.Apply((new QArray(q1), (1L, q2))); + da_op3__.Controlled.Adjoint.Apply((new QArray(q1, q2), (1.1D, Result.One, arr1.Length))); #line hidden return QVoid.Instance; @@ -1796,10 +1796,10 @@ namespace N1 let op4 = "IUnitary"; let f1 = "ICallable" Some (sprintf """ - public override Func<(Qubit, %s, %s, %s, (%s, %s), %s), %s> Body => (__in__) => + public override Func<(Qubit, %s, %s, %s, (%s, %s), %s), %s> __Body__ => (__in__) => { var (q1, op0, op1, op2, t1, f1) = __in__; - op1.Apply(OP_1); + op1.Apply(OP_1__); var v0 = op0; var r0 = v0.Apply(q1); var (op3, op4) = t1; @@ -1863,7 +1863,7 @@ namespace N1 "var s1 = (IQArray)qubits.Slice(new QRange(0L,10L));" "var s2 = (IQArray)qubits.Slice(r2);" "var s3 = (IQArray)qubits.Slice(ranges[3L]);" - "var s4 = (IQArray)qubits.Slice(GetMeARange.Apply(QVoid.Instance));" + "var s4 = (IQArray)qubits.Slice(GetMeARange__.Apply(QVoid.Instance));" "return qubits.Slice(new QRange(10L,-(3L),0L));" ] @@ -1925,17 +1925,17 @@ namespace N1 None |> testOne oneQubitAbstractOperation - Some "public override Func AdjointBody => Body;" + Some "public override Func __AdjointBody__ => __Body__;" |> testOne oneQubitSelfAdjointAbstractOperation None |> testOne randomAbstractOperation - Some "public override Func AdjointBody => Body;" + Some "public override Func __AdjointBody__ => __Body__;" |> testOne oneQubitSelfAdjointOperation Some """ - public override Func AdjointBody => (__in__) => + public override Func __AdjointBody__ => (__in__) => { #line hidden return QVoid.Instance; @@ -1943,10 +1943,10 @@ namespace N1 |> testOne zeroQubitOperation Some """ - public override Func AdjointBody => (__in__) => + public override Func __AdjointBody__ => (__in__) => { var q1 = __in__; - X.Adjoint.Apply(q1); + X__.Adjoint.Apply(q1); #line hidden return QVoid.Instance; @@ -1954,14 +1954,14 @@ namespace N1 |> testOne oneQubitOperation Some """ - public override Func<(Qubit,(Qubit,Double)), QVoid> AdjointBody => (__in__) => + public override Func<(Qubit,(Qubit,Double)), QVoid> __AdjointBody__ => (__in__) => { var (q1,t1) = __in__; var (q2,r) = t1; - R.Adjoint.Apply((r, q1)); - CNOT.Adjoint.Apply((q1, q2)); + R__.Adjoint.Apply((r, q1)); + CNOT__.Adjoint.Apply((q1, q2)); #line hidden return QVoid.Instance; @@ -1969,19 +1969,19 @@ namespace N1 |> testOne twoQubitOperation Some """ - public override Func<(Qubit,Qubit,Qubits), QVoid> AdjointBody => (__in__) => + public override Func<(Qubit,Qubit,Qubits), QVoid> __AdjointBody__ => (__in__) => { var (q1,q2,arr1) = __in__; - three_op1.Adjoint.Apply((q1, q2)); - three_op1.Adjoint.Apply((q2, q1)); - three_op1.Adjoint.Apply((q1, q2)); + three_op1__.Adjoint.Apply((q1, q2)); + three_op1__.Adjoint.Apply((q2, q1)); + three_op1__.Adjoint.Apply((q1, q2)); #line hidden return QVoid.Instance; };""" |> testOne threeQubitOperation - Some "public override Func<__T__, QVoid> AdjointBody => Body;" + Some "public override Func<__T__, QVoid> __AdjointBody__ => __Body__;" |> testOne genAdj1 [] @@ -1998,7 +1998,7 @@ namespace N1 |> testOne randomAbstractOperation Some """ - public override Func<(IQArray,QVoid), QVoid> ControlledBody => (__in__) => + public override Func<(IQArray,QVoid), QVoid> __ControlledBody__ => (__in__) => { var (__controlQubits__, __unitArg__) = __in__; @@ -2008,11 +2008,11 @@ namespace N1 |> testOne zeroQubitOperation Some """ - public override Func<(IQArray,Qubit), QVoid> ControlledBody => (__in__) => + public override Func<(IQArray,Qubit), QVoid> __ControlledBody__ => (__in__) => { var (c, q1) = __in__; - X.Controlled.Apply((c, q1)); + X__.Controlled.Apply((c, q1)); #line hidden return QVoid.Instance; @@ -2020,13 +2020,13 @@ namespace N1 |> testOne oneQubitOperation Some """ - public override Func<(IQArray,(Qubit,Qubit,Qubits)), QVoid> ControlledBody => (__in__) => + public override Func<(IQArray,(Qubit,Qubit,Qubits)), QVoid> __ControlledBody__ => (__in__) => { var (c, (q1, q2, arr1)) = __in__; - three_op1.Controlled.Apply((c, (q1, q2))); - three_op1.Controlled.Apply((c, (q2, q1))); - three_op1.Controlled.Apply((c, (q1, q2))); + three_op1__.Controlled.Apply((c, (q1, q2))); + three_op1__.Controlled.Apply((c, (q2, q1))); + three_op1__.Controlled.Apply((c, (q1, q2))); #line hidden return QVoid.Instance; @@ -2040,14 +2040,14 @@ namespace N1 None |> testOne oneQubitAbstractOperation - Some "public override Func<(IQArray,Qubit), QVoid> ControlledAdjointBody => ControlledBody;" + Some "public override Func<(IQArray,Qubit), QVoid> __ControlledAdjointBody__ => __ControlledBody__;" |> testOne oneQubitSelfAdjointAbstractOperation None |> testOne randomAbstractOperation Some """ - public override Func<(IQArray,QVoid), QVoid> ControlledAdjointBody => (__in__) => + public override Func<(IQArray,QVoid), QVoid> __ControlledAdjointBody__ => (__in__) => { var (__controlQubits__, __unitArg__) = __in__; @@ -2057,10 +2057,10 @@ namespace N1 |> testOne zeroQubitOperation Some """ - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => (__in__) => + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => (__in__) => { var (c,q1) = __in__; - X.Controlled.Adjoint.Apply((c, q1)); + X__.Controlled.Adjoint.Apply((c, q1)); #line hidden return QVoid.Instance; };""" @@ -2068,13 +2068,13 @@ namespace N1 |> testOne oneQubitOperation Some """ - public override Func<(IQArray,(Qubit,Qubit,Qubits)), QVoid> ControlledAdjointBody => (__in__) => + public override Func<(IQArray,(Qubit,Qubit,Qubits)), QVoid> __ControlledAdjointBody__ => (__in__) => { var (c,(q1,q2,arr1)) = __in__; - three_op1.Controlled.Adjoint.Apply((c, (q1, q2))); - three_op1.Controlled.Adjoint.Apply((c, (q2, q1))); - three_op1.Controlled.Adjoint.Apply((c, (q1, q2))); + three_op1__.Controlled.Adjoint.Apply((c, (q1, q2))); + three_op1__.Controlled.Adjoint.Apply((c, (q2, q1))); + three_op1__.Controlled.Adjoint.Apply((c, (q1, q2))); #line hidden return QVoid.Instance; @@ -2085,40 +2085,40 @@ namespace N1 let ``partial application`` () = [ //todo: "partial1Args.Partial(_).Apply(1L);" - "partial3Args + "partial3Args__ .Partial(new Func<(Int64,Double,Result), (Int64,Double,Result)>((__arg1__) => (__arg1__.Item1, __arg1__.Item2, __arg1__.Item3))) .Apply((1L, 3.5D, Result.One));" - "partial3Args + "partial3Args__ .Partial(new Func((__arg2__) => (1L, __arg2__, Result.Zero))) .Apply(3.5D);" - "partial3Args + "partial3Args__ .Partial(new Func<(Int64,Result), (Int64,Double,Result)>((__arg3__) => (__arg3__.Item1, 3.5D, __arg3__.Item2))) .Apply((1L, Result.Zero));" - "partial3Args + "partial3Args__ .Partial(new Func((__arg4__) => (1L, 3.5D, __arg4__))) .Apply(Result.Zero);" - "partial3Args + "partial3Args__ .Partial(new Func<(Double,Result), (Int64,Double,Result)>((__arg5__) => (1L, __arg5__.Item1, __arg5__.Item2))) .Apply((3.5D, Result.Zero));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func<(Int64,(Double,Result)), (Int64,(Double,Result))>((__arg6__) => (__arg6__.Item1, (__arg6__.Item2.Item1, __arg6__.Item2.Item2)))) .Apply((1L, (3.5D, Result.One)));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func<(Int64,(Double,Result)), (Int64,(Double,Result))>((__arg7__) => (__arg7__.Item1, (__arg7__.Item2.Item1, __arg7__.Item2.Item2)))) .Apply((1L, (3.5D, Result.Zero)));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func<(Double,Result), (Int64,(Double,Result))>((__arg8__) => (1L, (__arg8__.Item1, __arg8__.Item2)))) .Apply((3.5D, Result.Zero));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func<(Int64,Result), (Int64,(Double,Result))>((__arg9__) => (__arg9__.Item1, (3.5D, __arg9__.Item2)))) .Apply((1L, Result.Zero));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func<(Int64,Double), (Int64,(Double,Result))>((__arg10__) => (__arg10__.Item1, (__arg10__.Item2, Result.One)))) .Apply((1L, 3.5D));" - "partialInnerTuple + "partialInnerTuple__ .Partial(new Func((__arg11__) => (1L, (3.5D, __arg11__)))) .Apply(Result.One);" - "partialNestedArgsOp + "partialNestedArgsOp__ .Partial(new Func<((Int64,Int64,Int64),((Double,Double),(Result,Result,Result))), ((Int64,Int64,Int64),((Double,Double),(Result,Result,Result)))>((__arg12__) => ( (__arg12__.Item1.Item1, __arg12__.Item1.Item2, __arg12__.Item1.Item3), @@ -2138,7 +2138,7 @@ namespace N1 ) )) .Apply((1L, ((3.3D, 2D), Result.Zero)));" - "partialNestedArgsOp + "partialNestedArgsOp__ .Partial(new Func<(Int64,((Double,Double),Result)), ((Int64,Int64,Int64),((Double,Double),(Result,Result,Result)))>((__arg14__) => ( (1L, i, __arg14__.Item1), @@ -2158,7 +2158,7 @@ namespace N1 ) )) .Apply((3.3D, Result.Zero));" - "partialNestedArgsOp + "partialNestedArgsOp__ .Partial(new Func<(Int64,(Double,Result)), ((Int64,Int64,Int64),((Double,Double),(Result,Result,Result)))>((__arg16__) => ( (i, __arg16__.Item1, 1L), @@ -2174,20 +2174,20 @@ namespace N1 ) )) .Apply(3.3D);" - "partialGeneric1 + "partialGeneric1__ .Partial(new Func((__arg18__) => (0L, Result.Zero, (__arg18__, Result.One)) )) .Apply(1L);" - "partialGeneric1 + "partialGeneric1__ .Partial(new Func<(Int64, Result), (Int64, Result, (Int64, Result))>((__arg19__) => (__arg19__.Item1, __arg19__.Item2, (1L, Result.One)) )) .Apply((0L, Result.Zero));" - "partialGeneric1.Partial((0L, _, (1L, _))).Apply((Result.Zero, Result.One));" - "partialGeneric2.Partial((0L, Result.Zero, (_, Result.One))).Apply(1L);" - "partialGeneric2.Partial((_, _, (1L, Result.One))).Apply((0L, Result.Zero));" - "partialGeneric2.Partial((0L, _, (1L, _))).Apply((Result.Zero, Result.One));" + "partialGeneric1__.Partial((0L, _, (1L, _))).Apply((Result.Zero, Result.One));" + "partialGeneric2__.Partial((0L, Result.Zero, (_, Result.One))).Apply(1L);" + "partialGeneric2__.Partial((_, _, (1L, Result.One))).Apply((0L, Result.Zero));" + "partialGeneric2__.Partial((0L, _, (1L, _))).Apply((Result.Zero, Result.One));" "partialInput .Partial(new Func<(Double,(Result,Result)), (Int64,(Double,Double),(Result,Result,Result))>((__arg20__) => ( @@ -2202,7 +2202,7 @@ namespace N1 .Partial(new Func, (Double,ICallable,IQArray)>((__arg21__) => ( 1.1D, - partialFunction.Partial(new Func<(Int64,Double), (Int64,Double,Pauli)>((__arg22__) => + partialFunction__.Partial(new Func<(Int64,Double), (Int64,Double,Pauli)>((__arg22__) => ( __arg22__.Item1, __arg22__.Item2, @@ -2216,10 +2216,10 @@ namespace N1 |> testOneBody (applyVisitor partialApplicationTest) [ - "var r1 = partialFunction + "var r1 = partialFunction__ .Partial(new Func<(Int64,Double,Pauli), (Int64,Double,Pauli)>((__arg1__) => (__arg1__.Item1, __arg1__.Item2, __arg1__.Item3))) .Apply((2L, 2.2D, Pauli.PauliY));" - "var r2 = partialFunction + "var r2 = partialFunction__ .Partial(new Func<(Double,Pauli), (Int64,Double,Pauli)>((__arg2__) => (1L, __arg2__.Item1, __arg2__.Item2))) .Partial(new Func((__arg3__) => (3.3D, __arg3__))) .Apply(Pauli.PauliZ);" @@ -2234,7 +2234,7 @@ namespace N1 let ``buildRun test`` () = let testOne (_,op) expected = let context = createTestContext op - let (name, nonGenericName) = findClassName context op + let _, nonGenericName = findClassName op let actual = buildRun context nonGenericName op.ArgumentTuple op.Signature.ArgumentType op.Signature.ReturnType |> formatSyntaxTree Assert.Equal(expected |> clearFormatting, actual |> clearFormatting) @@ -2357,10 +2357,10 @@ namespace N1 public static HoneywellEntryPointInfo Info => new HoneywellEntryPointInfo(typeof(emptyOperation)); - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); @@ -2396,10 +2396,10 @@ namespace N1 public static IonQEntryPointInfo<(Qubit, Basis, (Pauli, IQArray>, Boolean), Int64), QVoid> Info => new IonQEntryPointInfo<(Qubit, Basis, (Pauli, IQArray>, Boolean), Int64), QVoid>(typeof(randomAbstractOperation)); - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn((Qubit,Basis,(Pauli,IQArray>,Boolean),Int64) data) => new In(data); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__((Qubit,Basis,(Pauli,IQArray>,Boolean),Int64) data) => new In(data); + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Qubit q1, Basis b, (Pauli,IQArray>,Boolean) t, Int64 i) { return __m__.Run>,Boolean),Int64), QVoid>((q1, b, t, i)); @@ -2424,52 +2424,52 @@ namespace N1 public static QCIEntryPointInfo Info => new QCIEntryPointInfo(typeof(oneQubitOperation)); - protected IUnitary X { get; set; } + protected IUnitary X__ { get; set; } - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { var q1 = __in__; - X.Apply(q1); + X__.Apply(q1); #line hidden return QVoid.Instance; } ; - public override Func AdjointBody => (__in__) => + public override Func __AdjointBody__ => (__in__) => { var q1 = __in__; - X.Adjoint.Apply(q1); + X__.Adjoint.Apply(q1); #line hidden return QVoid.Instance; } ; - public override Func<(IQArray,Qubit), QVoid> ControlledBody => (__in__) => + public override Func<(IQArray,Qubit), QVoid> __ControlledBody__ => (__in__) => { var (c,q1) = __in__; - X.Controlled.Apply((c, q1)); + X__.Controlled.Apply((c, q1)); #line hidden return QVoid.Instance; } ; - public override Func<(IQArray,Qubit), QVoid> ControlledAdjointBody => (__in__) => + public override Func<(IQArray,Qubit), QVoid> __ControlledAdjointBody__ => (__in__) => { var (c,q1) = __in__; - X.Controlled.Adjoint.Apply((c, q1)); + X__.Controlled.Adjoint.Apply((c, q1)); #line hidden return QVoid.Instance; } ; - public override void Init() + public override void __Init__() { - this.X = this.Factory.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); + this.X__ = this.__Factory__.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); } - public override IApplyData __dataIn(Qubit data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(Qubit data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Qubit q1) { return __m__.Run(q1); @@ -2510,10 +2510,10 @@ namespace N1 public static HoneywellEntryPointInfo<(__X__, (Int64, (__Y__, __Z__), Result)), QVoid> Info => new HoneywellEntryPointInfo<(__X__, (Int64, (__Y__, __Z__), Result)), QVoid>(typeof(genCtrl3<__X__,__Y__,__Z__>)); - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn((__X__,(Int64,(__Y__,__Z__),Result)) data) => new In(data); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__((__X__,(Int64,(__Y__,__Z__),Result)) data) => new In(data); + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, __X__ arg1, (Int64,(__Y__,__Z__),Result) arg2) { return __m__.Run, (__X__,(Int64,(__Y__,__Z__),Result)), QVoid>((arg1, arg2)); @@ -2551,7 +2551,7 @@ namespace N1 public static IonQEntryPointInfo<(ICallable, ICallable, __B__), QVoid> Info => new IonQEntryPointInfo<(ICallable, ICallable, __B__), QVoid>(typeof(composeImpl<__A__,__B__>)); - public override Func<(ICallable,ICallable,__B__), QVoid> Body => (__in__) => + public override Func<(ICallable,ICallable,__B__), QVoid> __Body__ => (__in__) => { var (second,first,arg) = __in__; second.Apply(first.Apply<__A__>(arg)); @@ -2559,10 +2559,10 @@ namespace N1 return QVoid.Instance; }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn((ICallable,ICallable,__B__) data) => new In(data); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__((ICallable,ICallable,__B__) data) => new In(data); + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, ICallable second, ICallable first, __B__ arg) { return __m__.Run, (ICallable,ICallable,__B__), QVoid>((second, first, arg)); @@ -2585,10 +2585,10 @@ namespace N1 public static QCIEntryPointInfo<__A__, QVoid> Info => new QCIEntryPointInfo<__A__, QVoid>(typeof(genF1<__A__>)); - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(__A__ data) => new QTuple<__A__>(data); - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(__A__ data) => new QTuple<__A__>(data); + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, __A__ arg) { return __m__.Run, __A__, QVoid>(arg); @@ -2611,19 +2611,19 @@ internal partial class EmptyInternalFunction : Function, ICallable String ICallable.FullName => "Microsoft.Quantum.Compiler.Generics.EmptyInternalFunction"; public static EntryPointInfo Info => new EntryPointInfo(typeof(EmptyInternalFunction)); - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { #line hidden return QVoid.Instance; }; - public override void Init() + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { @@ -2645,19 +2645,19 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Compiler.Generics.EmptyInternalOperation"; public static EntryPointInfo Info => new EntryPointInfo(typeof(EmptyInternalOperation)); - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { #line hidden return QVoid.Instance; }; - public override void Init() + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { @@ -2671,17 +2671,17 @@ internal partial class EmptyInternalOperation : Operation, ICallab [] let ``duplicatedDefinitionsCaller body`` () = [ - "emptyFunction.Apply(QVoid.Instance);" - "MicrosoftQuantumOverridesemptyFunction.Apply(QVoid.Instance);" + "emptyFunction__.Apply(QVoid.Instance);" + "Microsoft__Quantum__Overrides__emptyFunction.Apply(QVoid.Instance);" """ { - var qubits = Allocate.Apply(1L); + var qubits = Allocate__.Apply(1L); #line hidden bool __arg1__ = true; try { - H.Apply(qubits[0L]); - MicrosoftQuantumIntrinsicH.Apply(qubits[0L]); + H__.Apply(qubits[0L]); + Microsoft__Quantum__Intrinsic__H.Apply(qubits[0L]); } #line hidden catch @@ -2694,7 +2694,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab { if (__arg1__) { - Release.Apply(qubits); + Release__.Apply(qubits); } } }""" @@ -2709,12 +2709,12 @@ internal partial class EmptyInternalOperation : Operation, ICallab let expected = [ - template "Allocate" "Allocate" - template "IUnitary" "MicrosoftQuantumIntrinsicH" - template "ICallable" "H" - template "Release" "Release" - template "ICallable" "MicrosoftQuantumOverridesemptyFunction" - template "ICallable" "emptyFunction" + template "Allocate" "Allocate__" + template "IUnitary" "Microsoft__Quantum__Intrinsic__H" + template "ICallable" "H__" + template "Release" "Release__" + template "ICallable" "Microsoft__Quantum__Overrides__emptyFunction" + template "ICallable" "emptyFunction__" ] let (_,op) = duplicatedDefinitionsCaller @@ -2730,7 +2730,7 @@ internal partial class EmptyInternalOperation : Operation, ICallab [] let ``buildOpsProperties - internal callables`` () = - let property = sprintf "private protected %s %s { get; set; }" + let property = sprintf "private protected %s %s__ { get; set; }" let expected = [ property "ICallable" "EmptyInternalFunction" @@ -2762,17 +2762,17 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Compiler.Generics.UpdateUdtItems"; public static EntryPointInfo Info => new EntryPointInfo(typeof(UpdateUdtItems)); - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { var udt = __in__; vararr=QArray.Create(10L); return new MyType2((1L,udt.Data.Item2,(arr?.Copy(),udt.Data.Item3.Item2))); }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(MyType2data) => data; - public override IApplyData __dataOut(MyType2data) => data; + public override IApplyData __DataIn__(MyType2data) => data; + public override IApplyData __DataOut__(MyType2data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, MyType2 udt) { return __m__.Run(udt); @@ -2793,10 +2793,10 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Overrides.emptyFunction"; public static EntryPointInfo Info => new EntryPointInfo(typeof(emptyFunction)); - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); @@ -2817,15 +2817,15 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Testing.intFunction"; public static EntryPointInfo Info => new EntryPointInfo(typeof(intFunction)); - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { return 1L; }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(Int64 data) => new QTuple(data); + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(Int64 data) => new QTuple(data); public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); @@ -2855,16 +2855,16 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Testing.powFunction"; public static EntryPointInfo<(Int64, Int64), Int64> Info => new EntryPointInfo<(Int64, Int64), Int64>(typeof(powFunction)); - public override Func<(Int64,Int64), Int64> Body => (__in__) => + public override Func<(Int64,Int64), Int64> __Body__ => (__in__) => { var (x,y) = __in__; return x.Pow(y); }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn((Int64,Int64) data) => new In(data); - public override IApplyData __dataOut(Int64 data) => new QTuple(data); + public override IApplyData __DataIn__((Int64,Int64) data) => new In(data); + public override IApplyData __DataOut__(Int64 data) => new QTuple(data); public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Int64 x, Int64 y) { return __m__.Run((x, y)); @@ -2894,16 +2894,16 @@ internal partial class EmptyInternalOperation : Operation, ICallab String ICallable.FullName => "Microsoft.Quantum.Testing.bigPowFunction"; public static EntryPointInfo<(System.Numerics.BigInteger, Int64), System.Numerics.BigInteger> Info => new EntryPointInfo<(System.Numerics.BigInteger, Int64), System.Numerics.BigInteger>(typeof(bigPowFunction)); - public override Func<(System.Numerics.BigInteger,Int64), System.Numerics.BigInteger> Body => (__in__) => + public override Func<(System.Numerics.BigInteger,Int64), System.Numerics.BigInteger> __Body__ => (__in__) => { var (x,y) = __in__; return x.Pow(y); }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn((System.Numerics.BigInteger,Int64) data) => new In(data); - public override IApplyData __dataOut(System.Numerics.BigInteger data) => new QTuple(data); + public override IApplyData __DataIn__((System.Numerics.BigInteger,Int64) data) => new In(data); + public override IApplyData __DataOut__(System.Numerics.BigInteger data) => new QTuple(data); public static System.Threading.Tasks.Task Run(IOperationFactory __m__, System.Numerics.BigInteger x, Int64 y) { return __m__.Run((x, y)); @@ -3277,9 +3277,9 @@ namespace Microsoft.Quantum String ICallable.Name => "emptyFunction"; String ICallable.FullName => "Microsoft.Quantum.emptyFunction"; - public override void Init() { } - public override IApplyData __dataIn(Pair data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override void __Init__() { } + public override IApplyData __DataIn__(Pair data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Pair p) { return __m__.Run(p); @@ -3294,9 +3294,9 @@ namespace Microsoft.Quantum String ICallable.Name => "emptyOperation"; String ICallable.FullName => "Microsoft.Quantum.emptyOperation"; - public override void Init() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override void __Init__() { } + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); @@ -3432,7 +3432,7 @@ namespace Microsoft.Quantum.Tests.Inline String ICallable.Name => "HelloWorld"; String ICallable.FullName => "Microsoft.Quantum.Tests.Inline.HelloWorld"; - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { var n = __in__; #line 9 "%%" @@ -3441,10 +3441,10 @@ namespace Microsoft.Quantum.Tests.Inline return r; }; - public override void Init() { } + public override void __Init__() { } - public override IApplyData __dataIn(Int64 data) => new QTuple(data); - public override IApplyData __dataOut(Int64 data) => new QTuple(data); + public override IApplyData __DataIn__(Int64 data) => new QTuple(data); + public override IApplyData __DataOut__(Int64 data) => new QTuple(data); public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Int64 n) { return __m__.Run(n); @@ -3489,25 +3489,25 @@ namespace Microsoft.Quantum.Tests.LineNumbers String ICallable.Name => "TestLineInBlocks"; String ICallable.FullName => "Microsoft.Quantum.Tests.LineNumbers.TestLineInBlocks"; - protected Allocate Allocate + protected Allocate Allocate__ { get; set; } - protected Release Release + protected Release Release__ { get; set; } - protected IUnitary X + protected IUnitary X__ { get; set; } - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { var n = __in__; #line 11 "%%" @@ -3515,7 +3515,7 @@ namespace Microsoft.Quantum.Tests.LineNumbers #line hidden { #line 13 "%%" - var (ctrls,q) = (Allocate.Apply(r), Allocate.Apply()); + var (ctrls,q) = (Allocate__.Apply(r), Allocate__.Apply()); #line hidden bool __arg1__ = true; try @@ -3524,7 +3524,7 @@ namespace Microsoft.Quantum.Tests.LineNumbers if ((n == 0L)) { #line 16 "%%" - X.Apply(q); + X__.Apply(q); } else { @@ -3533,7 +3533,7 @@ namespace Microsoft.Quantum.Tests.LineNumbers #line hidden { #line 21 "%%" - X.Controlled.Apply((new QArray(c), q)); + X__.Controlled.Apply((new QArray(c), q)); } } } @@ -3549,9 +3549,9 @@ namespace Microsoft.Quantum.Tests.LineNumbers if (__arg1__) { #line hidden - Release.Apply(ctrls); + Release__.Apply(ctrls); #line hidden - Release.Apply(q); + Release__.Apply(q); } } } @@ -3561,15 +3561,15 @@ namespace Microsoft.Quantum.Tests.LineNumbers } ; - public override void Init() + public override void __Init__() { - this.Allocate = this.Factory.Get(typeof(global::Microsoft.Quantum.Intrinsic.Allocate)); - this.Release = this.Factory.Get(typeof(global::Microsoft.Quantum.Intrinsic.Release)); - this.X = this.Factory.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); + this.Allocate__ = this.__Factory__.Get(typeof(global::Microsoft.Quantum.Intrinsic.Allocate)); + this.Release__ = this.__Factory__.Get(typeof(global::Microsoft.Quantum.Intrinsic.Release)); + this.X__ = this.__Factory__.Get>(typeof(global::Microsoft.Quantum.Intrinsic.X)); } - public override IApplyData __dataIn(Int64 data) => new QTuple(data); - public override IApplyData __dataOut(Result data) => new QTuple(data); + public override IApplyData __DataIn__(Int64 data) => new QTuple(data); + public override IApplyData __DataOut__(Result data) => new QTuple(data); public static System.Threading.Tasks.Task Run(IOperationFactory __m__, Int64 n) { return __m__.Run(n); @@ -3728,19 +3728,19 @@ namespace Microsoft.Quantum.Tests.UnitTests String ICallable.Name => "UnitTest1"; String ICallable.FullName => "Microsoft.Quantum.Tests.UnitTests.UnitTest1"; - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { #line hidden return QVoid.Instance; } ; - public override void Init() + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); @@ -3789,19 +3789,19 @@ namespace Microsoft.Quantum.Tests.UnitTests String ICallable.Name => "UnitTest2"; String ICallable.FullName => "Microsoft.Quantum.Tests.UnitTests.UnitTest2"; - public override Func Body => (__in__) => + public override Func __Body__ => (__in__) => { #line hidden return QVoid.Instance; } ; - public override void Init() + public override void __Init__() { } - public override IApplyData __dataIn(QVoid data) => data; - public override IApplyData __dataOut(QVoid data) => data; + public override IApplyData __DataIn__(QVoid data) => data; + public override IApplyData __DataOut__(QVoid data) => data; public static System.Threading.Tasks.Task Run(IOperationFactory __m__) { return __m__.Run(QVoid.Instance); diff --git a/src/Simulation/CsharpGeneration/EntryPoint.fs b/src/Simulation/CsharpGeneration/EntryPoint.fs index 5ac2196043b..a1937bcf88b 100644 --- a/src/Simulation/CsharpGeneration/EntryPoint.fs +++ b/src/Simulation/CsharpGeneration/EntryPoint.fs @@ -112,7 +112,9 @@ let private createArgument context entryPoint = /// A tuple of the callable's name, argument type name, and return type name. let private callableTypeNames context (callable : QsCallable) = - let callableName = sprintf "global::%s.%s" callable.FullName.Namespace.Value callable.FullName.Name.Value + let callableName = + SimulationCode.userDefinedName None callable.FullName.Name.Value + |> sprintf "global::%s.%s" callable.FullName.Namespace.Value let argTypeName = SimulationCode.roslynTypeName context callable.Signature.ArgumentType let returnTypeName = SimulationCode.roslynTypeName context callable.Signature.ReturnType callableName, argTypeName, returnTypeName diff --git a/src/Simulation/CsharpGeneration/SimulationCode.fs b/src/Simulation/CsharpGeneration/SimulationCode.fs index 3a419aac894..d1dafb7b4bf 100644 --- a/src/Simulation/CsharpGeneration/SimulationCode.fs +++ b/src/Simulation/CsharpGeneration/SimulationCode.fs @@ -8,6 +8,7 @@ open System.Collections.Generic open System.Collections.Immutable open System.Linq open System.Reflection +open System.Text.RegularExpressions open Microsoft.CodeAnalysis open Microsoft.CodeAnalysis.CSharp.Syntax @@ -51,11 +52,22 @@ module SimulationCode = ("Step", { Namespace = "Microsoft.Quantum.Core" |> NonNullable.New; Name = "RangeStep" |> NonNullable.New } ) ] + let internal userDefinedName (parent : QsQualifiedName option) name = + let isReserved = + match name with + | "Data" + | "Deconstruct" + | "Info" + | "Run" -> true + | _ -> + Regex.IsMatch (name, @"^Item\d+$") || + parent |> Option.exists (fun current' -> name = current'.Name.Value) + if isReserved then name + "__" else name + let isCurrentOp context n = match context.current with | None -> false | Some name -> name = n let prependNamespaceString (name : QsQualifiedName) = - let pieces = name.Namespace.Value.Split([|'.'|]) |> String.Concat - pieces + name.Name.Value + name.Namespace.Value.Replace (".", "__") + "__" + name.Name.Value let needsFullPath context (op:QsQualifiedName) = let hasMultipleDefinitions() = if context.byName.ContainsKey op.Name then context.byName.[op.Name].Length > 1 else false @@ -68,6 +80,11 @@ module SimulationCode = else not (autoNamespaces |> List.contains op.Namespace.Value) + let getOpName context n = + if isCurrentOp context n then Directives.Self + elif needsFullPath context n then prependNamespaceString n + else n.Name.Value + "__" + let getTypeParameters types = let findAll (t: ResolvedType) = t.ExtractAll (fun item -> item.Resolution |> function | QsTypeKind.TypeParameter tp -> seq{ yield tp } @@ -88,7 +105,8 @@ module SimulationCode = let hasTypeParameters types = not (getTypeParameters types).IsEmpty let justTheName context (n: QsQualifiedName) = - if needsFullPath context n then n.Namespace.Value + "." + n.Name.Value else n.Name.Value + let name = userDefinedName None n.Name.Value + if needsFullPath context n then n.Namespace.Value + "." + name else name let isGeneric context (n: QsQualifiedName) = if context.allCallables.ContainsKey n then @@ -160,7 +178,7 @@ module SimulationCode = and roslynCallableTypeName context (name:QsQualifiedName) = if not (context.allCallables.ContainsKey name) then - name.Name.Value + userDefinedName None name.Name.Value else let signature = context.allCallables.[name].Signature let tIn = signature.ArgumentType @@ -393,9 +411,16 @@ module SimulationCode = and buildNamedItem ex acc = match acc with - | LocalVariable name -> (buildExpression ex) <|.|> (``ident`` name.Value) -// TODO: Diagnostics - | _ -> failwith "Invalid identifier for named item" + | LocalVariable name -> + let name' = + match ex.ResolvedType.Resolution with + | UserDefinedType udt -> + name.Value |> userDefinedName (Some { Namespace = udt.Namespace; Name = udt.Name }) + | _ -> name.Value + buildExpression ex <|.|> ident name' + | _ -> + // TODO: Diagnostics + failwith "Invalid identifier for named item" and buildAddExpr (exType : ResolvedType) lhs rhs = match exType.Resolution |> QArrayType with @@ -410,16 +435,10 @@ module SimulationCode = and buildId id : ExpressionSyntax = match id with - | LocalVariable n-> n.Value |> ``ident`` :> ExpressionSyntax - | GlobalCallable n -> - if isCurrentOp context n then - Directives.Self |> ``ident`` :> ExpressionSyntax - elif needsFullPath context n then - prependNamespaceString n |> ``ident`` :> ExpressionSyntax - else - n.Name.Value |> ``ident`` :> ExpressionSyntax -// TODO: Diagnostics + | LocalVariable n -> n.Value |> ident :> ExpressionSyntax + | GlobalCallable n -> getOpName context n |> ident :> ExpressionSyntax | InvalidIdentifier -> + // TODO: Diagnostics failwith "Received InvalidIdentifier" and buildCopyAndUpdateExpression (lhsEx : TypedExpression, accEx : TypedExpression, rhsEx) = @@ -761,8 +780,8 @@ module SimulationCode = override this.OnQubitScope (using:QsQubitScope) = let (alloc, release) = match using.Kind with - | Allocate -> ("Allocate", "Release") - | Borrow -> ("Borrow", "Return") + | Allocate -> "Allocate__", "Release__" + | Borrow -> "Borrow__", "Return__" let rec removeDiscarded sym = match sym with | VariableName _ -> sym @@ -848,15 +867,13 @@ module SimulationCode = seeker.Namespaces.OnCallableDeclaration od |> ignore seeker.SharedState |> Seq.toList - let getOpName context n = - if needsFullPath context n then prependNamespaceString n - else if isCurrentOp context n then Directives.Self - else n.Name.Value - let getTypeOfOp context (n: QsQualifiedName) = let name = let sameNamespace = match context.current with | None -> false | Some o -> o.Namespace = n.Namespace - let opName = if sameNamespace then n.Name.Value else "global::" + n.Namespace.Value + "." + n.Name.Value + let opName = + if sameNamespace + then userDefinedName None n.Name.Value + else "global::" + n.Namespace.Value + "." + userDefinedName None n.Name.Value if isGeneric context n then let signature = context.allCallables.[n].Signature let count = signature.TypeParameters.Length @@ -877,12 +894,12 @@ module SimulationCode = "this" |> ``ident`` :> ExpressionSyntax else let signature = roslynCallableTypeName context n - let factoryGet = (``ident`` "this" <|.|> ``ident`` "Factory" <|.|> (generic "Get" ``<<`` [ signature ] ``>>``)) + let factoryGet = (``ident`` "this" <|.|> ``ident`` "__Factory__" <|.|> (generic "Get" ``<<`` [ signature ] ``>>``)) (``invoke`` factoryGet ``(`` [ (getTypeOfOp context n) ] ``)``) statement (lhs <-- rhs) operations |> List.map buildOne - ``method`` "void" "Init" ``<<`` [] ``>>`` + ``method`` "void" "__Init__" ``<<`` [] ``>>`` ``(`` parameters ``)`` [ ``public``; ``override`` ] ``{`` body ``}`` @@ -979,10 +996,10 @@ module SimulationCode = | Generated SelfInverse -> let adjointedBodyName = match sp.Kind with - | QsAdjoint -> "Body" - | QsControlledAdjoint -> "ControlledBody" + | QsAdjoint -> "__Body__" + | QsControlledAdjoint -> "__ControlledBody__" //TODO: diagnostics. - | _ -> "Body" + | _ -> "__Body__" Some (``ident`` adjointedBodyName :> ExpressionSyntax) | _ -> None @@ -1021,7 +1038,7 @@ module SimulationCode = match body with | Some body -> - let bodyName = if bodyName = "Body" then bodyName else bodyName + "Body" + let bodyName = if bodyName = "Body" then "__Body__" else "__" + bodyName + "Body__" let impl = ``property-arrow_get`` propertyType bodyName [``public``; ``override``] ``get`` @@ -1273,7 +1290,7 @@ module SimulationCode = let buildMethod t body = let baseType = (roslynTypeName context t) let args = [ (``param`` "data" ``of`` (``type`` (roslynTypeName context t)) ) ] - ``arrow_method`` "IApplyData" (sprintf "__data%s" name) ``<<`` [] ``>>`` + ``arrow_method`` "IApplyData" (sprintf "__Data%s__" name) ``<<`` [] ``>>`` ``(`` args ``)`` [``public``; ``override``] ( Some ( ``=>`` body) ) @@ -1295,8 +1312,8 @@ module SimulationCode = let name = function | ValidName n -> sprintf "__%s__" n.Value | InvalidName -> "__" signature.TypeParameters |> Seq.map name |> Seq.sort |> Seq.toList - let findClassName context (op: QsCallable) = - let name = op.FullName.Name.Value + let findClassName (op: QsCallable) = + let name = userDefinedName None op.FullName.Name.Value let typeParameters = typeParametersNames op.Signature let nonGeneric = if typeParameters.IsEmpty then name else sprintf "%s<%s>" name (String.Join(",", typeParameters)) (name, nonGeneric) @@ -1346,7 +1363,7 @@ module SimulationCode = // Builds the .NET class for the given operation. let buildOperationClass (globalContext:CodegenContext) (op: QsCallable) = let context = globalContext.setCallable op - let (name, nonGenericName) = findClassName context op + let (name, nonGenericName) = findClassName op let opNames = operationDependencies op let inType = op.Signature.ArgumentType |> roslynTypeName context let outType = op.Signature.ReturnType |> roslynTypeName context @@ -1424,7 +1441,7 @@ module SimulationCode = let buildUdtClass (globalContext:CodegenContext) (udt: QsCustomType) = let context = globalContext.setUdt udt - let name = udt.FullName.Name.Value + let name = userDefinedName None udt.FullName.Name.Value let qsharpType = udt.Type let buildEmtpyConstructor = let baseTupleType = @@ -1452,8 +1469,11 @@ module SimulationCode = :> MemberDeclarationSyntax let buildNamedItemFields = let produceProperty (decl : LocalVariableDeclaration>) valueExpr = - ``property-arrow_get`` (roslynTypeName context decl.Type) decl.VariableName.Value [ ``public`` ] - ``get`` (``=>`` valueExpr) :> MemberDeclarationSyntax + ``property-arrow_get`` + (roslynTypeName context decl.Type) + (userDefinedName context.current decl.VariableName.Value) + [ ``public`` ] ``get`` (``=>`` valueExpr) + :> MemberDeclarationSyntax let rec buildProps current = function | QsTuple items -> items |> Seq.mapi (fun i x -> buildProps (current <|.|> ``ident`` ("Item" + (i+1).ToString())) x) |> Seq.collect id | QsTupleItem (Anonymous _) -> Seq.empty diff --git a/src/Simulation/QsharpCore/Bitwise/Bitwise.cs b/src/Simulation/QsharpCore/Bitwise/Bitwise.cs index 67e69c8fc72..20bd48d40b1 100644 --- a/src/Simulation/QsharpCore/Bitwise/Bitwise.cs +++ b/src/Simulation/QsharpCore/Bitwise/Bitwise.cs @@ -11,7 +11,7 @@ public partial class Xor public class Native : Xor { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, long), long> Body => (arg) => (arg.Item1 ^ arg.Item2); + public override Func<(long, long), long> __Body__ => (arg) => (arg.Item1 ^ arg.Item2); } } @@ -20,7 +20,7 @@ public partial class And public class Native : And { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, long), long> Body => (arg) => (arg.Item1 & arg.Item2); + public override Func<(long, long), long> __Body__ => (arg) => (arg.Item1 & arg.Item2); } } @@ -29,7 +29,7 @@ public partial class Or public class Native : Or { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, long), long> Body => (arg) => (arg.Item1 | arg.Item2); + public override Func<(long, long), long> __Body__ => (arg) => (arg.Item1 | arg.Item2); } } @@ -38,7 +38,7 @@ public partial class Not public class Native : Not { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => (~arg); + public override Func __Body__ => (arg) => (~arg); } } @@ -57,7 +57,7 @@ static long ParityFunc(long val) } public Native(IOperationFactory m) : base(m) { } - public override Func Body => ParityFunc; + public override Func __Body__ => ParityFunc; } } @@ -81,7 +81,7 @@ static long XBitsFunc(IQArray pauli) } public Native(IOperationFactory m) : base(m) { } - public override Func, long> Body => XBitsFunc; + public override Func, long> __Body__ => XBitsFunc; } } @@ -105,7 +105,7 @@ static long ZBitsFunc(IQArray pauli) } public Native(IOperationFactory m) : base(m) { } - public override Func, long> Body => ZBitsFunc; + public override Func, long> __Body__ => ZBitsFunc; } } } diff --git a/src/Simulation/QsharpCore/Convert/Convert.cs b/src/Simulation/QsharpCore/Convert/Convert.cs index 8fe30c2bc61..a86ac9dfa39 100644 --- a/src/Simulation/QsharpCore/Convert/Convert.cs +++ b/src/Simulation/QsharpCore/Convert/Convert.cs @@ -12,7 +12,7 @@ public partial class IntAsDouble public class Native : IntAsDouble { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToDouble(arg); + public override Func __Body__ => (arg) => System.Convert.ToDouble(arg); } } @@ -21,7 +21,7 @@ public partial class IntAsBigInt public class Native : IntAsBigInt { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => new BigInteger(arg); + public override Func __Body__ => (arg) => new BigInteger(arg); } } @@ -43,7 +43,7 @@ public class Native : MaybeBigIntAsInt } public Native(IOperationFactory m) : base(m) { } - public override Func Body => MaybeBigIntAsIntFunc; + public override Func __Body__ => MaybeBigIntAsIntFunc; } } @@ -73,7 +73,7 @@ static IQArray BigIntAsBoolArrayFunc(BigInteger x) } public Native(IOperationFactory m) : base(m) { } - public override Func> Body => BigIntAsBoolArrayFunc; + public override Func> __Body__ => BigIntAsBoolArrayFunc; } } @@ -110,7 +110,7 @@ static BigInteger BoolArrayAsBigIntFunc(IQArray x) } public Native(IOperationFactory m) : base(m) { } - public override Func, BigInteger> Body => BoolArrayAsBigIntFunc; + public override Func, BigInteger> __Body__ => BoolArrayAsBigIntFunc; } } @@ -119,7 +119,7 @@ public partial class BoolAsString public class Native : BoolAsString { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToString(arg); + public override Func __Body__ => (arg) => System.Convert.ToString(arg); } } @@ -128,7 +128,7 @@ public partial class DoubleAsString public class Native : DoubleAsString { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToString(arg); + public override Func __Body__ => (arg) => System.Convert.ToString(arg); } } @@ -137,7 +137,7 @@ public partial class DoubleAsStringWithFormat public class Native : DoubleAsStringWithFormat { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, string), string> Body => (arg) => arg.Item1.ToString(arg.Item2); + public override Func<(double, string), string> __Body__ => (arg) => arg.Item1.ToString(arg.Item2); } } @@ -146,7 +146,7 @@ public partial class IntAsString public class Native : IntAsString { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToString(arg); + public override Func __Body__ => (arg) => System.Convert.ToString(arg); } } @@ -155,7 +155,7 @@ public partial class IntAsStringWithFormat public class Native : IntAsStringWithFormat { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, string), string> Body => (arg) => arg.Item1.ToString(arg.Item2); + public override Func<(long, string), string> __Body__ => (arg) => arg.Item1.ToString(arg.Item2); } } @@ -194,7 +194,7 @@ static long PauliBitsFunc(IQArray pauli) } public Native(IOperationFactory m) : base(m) { } - public override Func, long> Body => PauliBitsFunc; + public override Func, long> __Body__ => PauliBitsFunc; } } } diff --git a/src/Simulation/QsharpCore/Core.cs b/src/Simulation/QsharpCore/Core.cs index 8de6a4b760f..d075f510f49 100644 --- a/src/Simulation/QsharpCore/Core.cs +++ b/src/Simulation/QsharpCore/Core.cs @@ -11,7 +11,7 @@ public partial class Length<__T__> public class Native : Length<__T__> { public Native(IOperationFactory m) : base(m) { } - public override Func, long> Body => (arg) => (arg.Length); + public override Func, long> __Body__ => (arg) => (arg.Length); } } @@ -20,7 +20,7 @@ public partial class RangeStart public class Native : RangeStart { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => (arg.Start); + public override Func __Body__ => (arg) => (arg.Start); } } @@ -29,7 +29,7 @@ public partial class RangeEnd public class Native : RangeEnd { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => (arg.End); + public override Func __Body__ => (arg) => (arg.End); } } @@ -38,7 +38,7 @@ public partial class RangeStep public class Native : RangeStep { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => (arg.Step); + public override Func __Body__ => (arg) => (arg.Step); } } @@ -47,7 +47,7 @@ public partial class RangeReverse public class Native : RangeReverse { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => (arg.Reverse()); + public override Func __Body__ => (arg) => (arg.Reverse()); } } } diff --git a/src/Simulation/QsharpCore/Math/Math.cs b/src/Simulation/QsharpCore/Math/Math.cs index dd1dcbb8673..25e43a1b1ba 100644 --- a/src/Simulation/QsharpCore/Math/Math.cs +++ b/src/Simulation/QsharpCore/Math/Math.cs @@ -12,7 +12,7 @@ public partial class AbsD public class Native : AbsD { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Abs; + public override Func __Body__ => System.Math.Abs; } } @@ -21,7 +21,7 @@ public partial class AbsI public class Native : AbsI { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Abs; + public override Func __Body__ => System.Math.Abs; } } @@ -30,7 +30,7 @@ public partial class AbsL public class Native : AbsL { public Native(IOperationFactory m) : base(m) { } - public override Func Body => BigInteger.Abs; + public override Func __Body__ => BigInteger.Abs; } } @@ -39,7 +39,7 @@ public partial class ArcCos public class Native : ArcCos { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Acos; + public override Func __Body__ => System.Math.Acos; } } @@ -48,7 +48,7 @@ public partial class ArcSin public class Native : ArcSin { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Asin; + public override Func __Body__ => System.Math.Asin; } } @@ -57,7 +57,7 @@ public partial class ArcTan public class Native : ArcTan { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Atan; + public override Func __Body__ => System.Math.Atan; } } @@ -67,7 +67,7 @@ public partial class ArcTan2 public class Native : ArcTan2 { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, double), double> Body => (args) => System.Math.Atan2(args.Item1, args.Item2); + public override Func<(double, double), double> __Body__ => (args) => System.Math.Atan2(args.Item1, args.Item2); } } @@ -76,7 +76,7 @@ public partial class Ceiling public class Native : Ceiling { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToInt64(System.Math.Ceiling(arg)); + public override Func __Body__ => (arg) => System.Convert.ToInt64(System.Math.Ceiling(arg)); } } @@ -85,7 +85,7 @@ public partial class Cos public class Native : Cos { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Cos; + public override Func __Body__ => System.Math.Cos; } } @@ -94,7 +94,7 @@ public partial class Cosh public class Native : Cosh { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Cosh; + public override Func __Body__ => System.Math.Cosh; } } @@ -110,7 +110,7 @@ private static (BigInteger, BigInteger) Impl((BigInteger, BigInteger) arg) var div = BigInteger.DivRem(arg.Item1, arg.Item2, out rem); return (div, rem); } - public override Func<(BigInteger, BigInteger), (BigInteger, BigInteger)> Body => Impl; + public override Func<(BigInteger, BigInteger), (BigInteger, BigInteger)> __Body__ => Impl; } } @@ -119,7 +119,7 @@ public partial class E public class Native : E { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Math.E; + public override Func __Body__ => (arg) => System.Math.E; } } @@ -128,7 +128,7 @@ public partial class ExpD public class Native : ExpD { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Exp; + public override Func __Body__ => System.Math.Exp; } } @@ -137,7 +137,7 @@ public partial class Floor public class Native : Floor { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToInt64(System.Math.Floor(arg)); + public override Func __Body__ => (arg) => System.Convert.ToInt64(System.Math.Floor(arg)); } } @@ -146,7 +146,7 @@ public partial class IEEERemainder public class Native : IEEERemainder { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, double), double> Body => (arg) => System.Math.IEEERemainder(arg.Item1, arg.Item2); + public override Func<(double, double), double> __Body__ => (arg) => System.Math.IEEERemainder(arg.Item1, arg.Item2); } } @@ -155,7 +155,7 @@ public partial class Log public class Native : Log { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Log; + public override Func __Body__ => System.Math.Log; } } @@ -164,7 +164,7 @@ public partial class Log10 public class Native : Log10 { public Native(IOperationFactory m) : base(m) { } - public override Func Body => System.Math.Log10; + public override Func __Body__ => System.Math.Log10; } } @@ -173,7 +173,7 @@ public partial class MaxD public class Native : MaxD { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, double), double> Body => (args) => System.Math.Max(args.Item1, args.Item2); + public override Func<(double, double), double> __Body__ => (args) => System.Math.Max(args.Item1, args.Item2); } } @@ -182,7 +182,7 @@ public partial class MaxI public class Native : MaxI { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, long), long> Body => (args) => System.Math.Max(args.Item1, args.Item2); + public override Func<(long, long), long> __Body__ => (args) => System.Math.Max(args.Item1, args.Item2); } } @@ -191,7 +191,7 @@ public partial class MaxL public class Native : MaxL { public Native(IOperationFactory m) : base(m) { } - public override Func<(BigInteger, BigInteger), BigInteger> Body => (args) => BigInteger.Max(args.Item1, args.Item2); + public override Func<(BigInteger, BigInteger), BigInteger> __Body__ => (args) => BigInteger.Max(args.Item1, args.Item2); } } @@ -200,7 +200,7 @@ public partial class MinD public class Native : MinD { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, double), double> Body => (args) => System.Math.Min(args.Item1, args.Item2); + public override Func<(double, double), double> __Body__ => (args) => System.Math.Min(args.Item1, args.Item2); } } @@ -209,7 +209,7 @@ public partial class MinI public class Native : MinI { public Native(IOperationFactory m) : base(m) { } - public override Func<(long, long), long> Body => (args) => System.Math.Min(args.Item1, args.Item2); + public override Func<(long, long), long> __Body__ => (args) => System.Math.Min(args.Item1, args.Item2); } } @@ -218,7 +218,7 @@ public partial class MinL public class Native : MinL { public Native(IOperationFactory m) : base(m) { } - public override Func<(BigInteger, BigInteger), BigInteger> Body => (args) => BigInteger.Min(args.Item1, args.Item2); + public override Func<(BigInteger, BigInteger), BigInteger> __Body__ => (args) => BigInteger.Min(args.Item1, args.Item2); } } @@ -227,7 +227,7 @@ public partial class ModPowL public class Native : ModPowL { public Native(IOperationFactory m) : base(m) { } - public override Func<(BigInteger, BigInteger, BigInteger), BigInteger> Body => (args) => BigInteger.ModPow(args.Item1, args.Item2, args.Item3); + public override Func<(BigInteger, BigInteger, BigInteger), BigInteger> __Body__ => (args) => BigInteger.ModPow(args.Item1, args.Item2, args.Item3); } } @@ -236,7 +236,7 @@ public partial class PI : Function public class Native : PI { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Math.PI; + public override Func __Body__ => (arg) => System.Math.PI; } } @@ -245,7 +245,7 @@ public partial class PowD public class Native : PowD { public Native(IOperationFactory m) : base(m) { } - public override Func<(double, double), double> Body => (arg) => System.Math.Pow(arg.Item1, arg.Item2); + public override Func<(double, double), double> __Body__ => (arg) => System.Math.Pow(arg.Item1, arg.Item2); } } @@ -254,7 +254,7 @@ public partial class Round public class Native : Round { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToInt64(System.Math.Round(arg)); + public override Func __Body__ => (arg) => System.Convert.ToInt64(System.Math.Round(arg)); } } @@ -263,7 +263,7 @@ public partial class Sin public class Native : Sin { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (theta) => System.Math.Sin(theta); + public override Func __Body__ => (theta) => System.Math.Sin(theta); } } @@ -272,7 +272,7 @@ public partial class SignD public class Native : SignD { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Math.Sign(arg); + public override Func __Body__ => (arg) => System.Math.Sign(arg); } } @@ -281,7 +281,7 @@ public partial class SignI public class Native : SignI { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Math.Sign(arg); + public override Func __Body__ => (arg) => System.Math.Sign(arg); } } @@ -290,7 +290,7 @@ public partial class SignL public class Native : SignL { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => arg.Sign; + public override Func __Body__ => (arg) => arg.Sign; } } @@ -299,7 +299,7 @@ public partial class Sinh public class Native : Sinh { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (theta) => System.Math.Sinh(theta); + public override Func __Body__ => (theta) => System.Math.Sinh(theta); } } @@ -308,7 +308,7 @@ public partial class Sqrt public class Native : Sqrt { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Math.Sqrt(arg); + public override Func __Body__ => (arg) => System.Math.Sqrt(arg); } } @@ -317,7 +317,7 @@ public partial class Tan public class Native : Tan { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (theta) => System.Math.Tan(theta); + public override Func __Body__ => (theta) => System.Math.Tan(theta); } } @@ -326,7 +326,7 @@ public partial class Tanh public class Native : Tanh { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (theta) => System.Math.Tanh(theta); + public override Func __Body__ => (theta) => System.Math.Tanh(theta); } } @@ -335,7 +335,7 @@ public partial class Truncate public class Native : Truncate { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => System.Convert.ToInt64(System.Math.Truncate(arg)); + public override Func __Body__ => (arg) => System.Convert.ToInt64(System.Math.Truncate(arg)); } } } diff --git a/src/Simulation/QsharpCore/Statements/Allocate.cs b/src/Simulation/QsharpCore/Statements/Allocate.cs index e2746586d8a..0b7f862445a 100644 --- a/src/Simulation/QsharpCore/Statements/Allocate.cs +++ b/src/Simulation/QsharpCore/Statements/Allocate.cs @@ -13,6 +13,6 @@ public Allocate(IOperationFactory m) : base(m) { } public abstract IQArray Apply(long count); - public override void Init() { } + public override void __Init__() { } } } diff --git a/src/Simulation/QsharpCore/Statements/Borrow.cs b/src/Simulation/QsharpCore/Statements/Borrow.cs index 7d24e4c1adb..09bfebc7e82 100644 --- a/src/Simulation/QsharpCore/Statements/Borrow.cs +++ b/src/Simulation/QsharpCore/Statements/Borrow.cs @@ -13,7 +13,7 @@ public Borrow(IOperationFactory m) : base(m) { } public abstract IQArray Apply(long count); - public override void Init() { } + public override void __Init__() { } } } diff --git a/src/Simulation/QsharpCore/Statements/Release.cs b/src/Simulation/QsharpCore/Statements/Release.cs index 4400dd0275c..6db24712412 100644 --- a/src/Simulation/QsharpCore/Statements/Release.cs +++ b/src/Simulation/QsharpCore/Statements/Release.cs @@ -13,6 +13,6 @@ public Release(IOperationFactory m) : base(m) { } public abstract void Apply(IQArray qubits); - public override void Init() { } + public override void __Init__() { } } } diff --git a/src/Simulation/QsharpCore/Statements/Return.cs b/src/Simulation/QsharpCore/Statements/Return.cs index f3306225227..291c6d78856 100644 --- a/src/Simulation/QsharpCore/Statements/Return.cs +++ b/src/Simulation/QsharpCore/Statements/Return.cs @@ -13,6 +13,6 @@ public Return(IOperationFactory m) : base(m) { } public abstract void Apply(IQArray qubits); - public override void Init() { } + public override void __Init__() { } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators.Tests/Circuits/AssertEqual.cs b/src/Simulation/Simulators.Tests/Circuits/AssertEqual.cs index 960c140c19f..2ce12272593 100644 --- a/src/Simulation/Simulators.Tests/Circuits/AssertEqual.cs +++ b/src/Simulation/Simulators.Tests/Circuits/AssertEqual.cs @@ -13,7 +13,7 @@ public class Native : AssertEqual<__T__> { public Native(IOperationFactory m) : base(m) { } - public override Func<(__T__, __T__), QVoid> Body => (_args) => + public override Func<(__T__, __T__), QVoid> __Body__ => (_args) => { var (expected, actual) = _args; Assert.Equal(expected, actual); diff --git a/src/Simulation/Simulators.Tests/Circuits/MemberNames.qs b/src/Simulation/Simulators.Tests/Circuits/MemberNames.qs new file mode 100644 index 00000000000..cf7f7948e98 --- /dev/null +++ b/src/Simulation/Simulators.Tests/Circuits/MemberNames.qs @@ -0,0 +1,89 @@ +namespace Microsoft.Quantum.Simulation.Simulators.Tests.Circuits.MemberNames { + open Microsoft.Quantum.Diagnostics; + open Microsoft.Quantum.Intrinsic; + open Microsoft.Quantum.Simulation.Simulators.Tests.Circuits; + + newtype Foo = (Foo : Int); + + newtype Items = (Item2 : Int, Item1 : Int); + + // TODO: + // newtype Bar = (Data : Int); + + operation Body() : Unit { } + + operation AdjointBody() : Unit is Adj { } + + operation ControlledBody() : Unit is Ctl { } + + operation ControlledAdjointBody() : Unit is Adj + Ctl { } + + operation Init() : Unit { } + + operation Run() : Unit { } + + operation Info() : Unit { } + + @Test("QuantumSimulator") + operation SupportsReservedOperationNames() : Unit { + Body(); + AdjointBody(); + ControlledBody(); + ControlledAdjointBody(); + Init(); + Run(); + Info(); + } + + @Test("QuantumSimulator") + operation SupportsConfusingQualifiedNames() : Unit { + FooBar.Baz(); + Foo.Bar.Baz(); + } + + @Test("QuantumSimulator") + operation SupportsReservedNamedItems() : Unit { + let foo = Foo(7); + AssertEqual(7, foo::Foo); + + let items = Items(3, 4); + AssertEqual(3, items::Item2); + AssertEqual(4, items::Item1); + + // TODO: + // let bar = Bar(10); + // AssertEqual(10, bar::Data); + } + + @Test("QuantumSimulator") + operation AvoidsOperationPropertyShadowing1() : Unit { + using (q = Qubit()) { + let MicrosoftQuantumIntrinsicX = Z; + X(q); + AssertEqual(One, M(q)); + } + } +} + +namespace Microsoft.Quantum.Simulation.Simulators.Tests.Circuits.MemberNames2 { + open Microsoft.Quantum.Diagnostics; + open Microsoft.Quantum.Intrinsic as Intrinsic; + open Microsoft.Quantum.Simulation.Simulators.Tests.Circuits; + + @Test("QuantumSimulator") + operation AvoidsOperationPropertyShadowing2() : Unit { + using (q = Qubit()) { + let X = Intrinsic.Z; + Intrinsic.X(q); + AssertEqual(One, Intrinsic.M(q)); + } + } +} + +namespace FooBar { + function Baz() : Unit { } +} + +namespace Foo.Bar { + function Baz() : Unit { } +} diff --git a/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs b/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs index 342a4fb7acb..f0e63cc9dc1 100644 --- a/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs +++ b/src/Simulation/Simulators.Tests/Circuits/NativeOperations.cs @@ -20,7 +20,7 @@ public class Native : IntrinsicBody { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => + public override Func __Body__ => (arg) => { return RESULT; }; @@ -34,18 +34,18 @@ public class Native : DefaultBody { public Native(IOperationFactory m) : base(m) { } - public override Func Body => (arg) => + public override Func __Body__ => (arg) => { - if (this.Factory is QuantumSimulator) + if (this.__Factory__ is QuantumSimulator) { return "Simulator"; } - else if (this.Factory is ToffoliSimulator) + else if (this.__Factory__ is ToffoliSimulator) { return "Toffoli"; } - return base.Body(arg); + return base.__Body__(arg); }; } } @@ -58,7 +58,7 @@ public class Other1 : IntrinsicBodyGeneric<__T__> { public Other1(IOperationFactory m) : base(m) { } - public override Func<__T__, string> Body => throw new NotImplementedException(); + public override Func<__T__, string> __Body__ => throw new NotImplementedException(); } // This one should not be used, it has the same number of Type parameters, @@ -70,7 +70,7 @@ public class Emulation : IntrinsicBodyGeneric<__T__> { public Emulation(IOperationFactory m) : base(m) { } - public override Func<__T__, string> Body => (arg) => + public override Func<__T__, string> __Body__ => (arg) => { if (arg is string s) { @@ -92,7 +92,7 @@ public class Emulation : DefaultBodyGeneric<__T__> { public Emulation(IOperationFactory m) : base(m) { } - public override Func<__T__, __T__> Body => (arg) => + public override Func<__T__, __T__> __Body__ => (arg) => { if (arg is string s) { @@ -100,9 +100,9 @@ public Emulation(IOperationFactory m) : base(m) { } } else { - return base.Body(arg); + return base.__Body__(arg); } }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators.Tests/GetQubitsTests.cs b/src/Simulation/Simulators.Tests/GetQubitsTests.cs index c952d210e5a..ffc19827f88 100644 --- a/src/Simulation/Simulators.Tests/GetQubitsTests.cs +++ b/src/Simulation/Simulators.Tests/GetQubitsTests.cs @@ -22,27 +22,27 @@ internal class UnitaryNoOp : Unitary, ICallable { public UnitaryNoOp() : base(null) { } - public override void Init() { } + public override void __Init__() { } - public override Func<(IQArray, TInput), QVoid> ControlledAdjointBody => (arg) => + public override Func<(IQArray, TInput), QVoid> __ControlledAdjointBody__ => (arg) => { Debug.Write("NoOp:ControlledAdjointBody:" + typeof(TInput).FullName); return QVoid.Instance; }; - public override Func AdjointBody => (arg) => + public override Func __AdjointBody__ => (arg) => { Debug.Write("NoOp:AdjointBody:" + typeof(TInput).FullName); return QVoid.Instance; }; - public override Func<(IQArray, TInput), QVoid> ControlledBody => (arg) => + public override Func<(IQArray, TInput), QVoid> __ControlledBody__ => (arg) => { Debug.Write("NoOp:ControlledBody:" + typeof(TInput).FullName); return QVoid.Instance; }; - public override Func Body => (TInput arg) => + public override Func __Body__ => (TInput arg) => { Debug.Write("NoOp:Body:" + typeof(TInput).FullName); return QVoid.Instance; @@ -392,4 +392,4 @@ private static void AssertIDataQubits(IApplyData d, params Qubit[] expected) AssertEnumerable(expected, d.Qubits); } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators.Tests/OperationsTestHelper.cs b/src/Simulation/Simulators.Tests/OperationsTestHelper.cs index 7fa82ca1077..a14adfa3021 100644 --- a/src/Simulation/Simulators.Tests/OperationsTestHelper.cs +++ b/src/Simulation/Simulators.Tests/OperationsTestHelper.cs @@ -103,10 +103,10 @@ public TracerImpl(IOperationFactory m) : base(m) this.Log = new Log(); } - public override Func Body => (tag) => this.Log.Record(OperationFunctor.Body, tag); - public override Func AdjointBody => (tag) => this.Log.Record(OperationFunctor.Adjoint, tag); - public override Func<(IQArray, string), QVoid> ControlledBody => (args) => this.Log.Record(OperationFunctor.Controlled, args.Item2); - public override Func<(IQArray, string), QVoid> ControlledAdjointBody => (args) => this.Log.Record(OperationFunctor.ControlledAdjoint, args.Item2); + public override Func __Body__ => (tag) => this.Log.Record(OperationFunctor.Body, tag); + public override Func __AdjointBody__ => (tag) => this.Log.Record(OperationFunctor.Adjoint, tag); + public override Func<(IQArray, string), QVoid> __ControlledBody__ => (args) => this.Log.Record(OperationFunctor.Controlled, args.Item2); + public override Func<(IQArray, string), QVoid> __ControlledAdjointBody__ => (args) => this.Log.Record(OperationFunctor.ControlledAdjoint, args.Item2); public Log Log { get; } } @@ -118,10 +118,10 @@ public TraceImpl(IOperationFactory m) : base(m) this.Log = new Log(); } - public override Func Body => (tag) => this.Log.Record(OperationFunctor.Body, tag); - public override Func AdjointBody => (tag) => this.Log.Record(OperationFunctor.Adjoint, tag); - public override Func<(IQArray, T), QVoid> ControlledBody => (args) => this.Log.Record(OperationFunctor.Controlled, args.Item2); - public override Func<(IQArray, T), QVoid> ControlledAdjointBody => (args) => this.Log.Record(OperationFunctor.ControlledAdjoint, args.Item2); + public override Func __Body__ => (tag) => this.Log.Record(OperationFunctor.Body, tag); + public override Func __AdjointBody__ => (tag) => this.Log.Record(OperationFunctor.Adjoint, tag); + public override Func<(IQArray, T), QVoid> __ControlledBody__ => (args) => this.Log.Record(OperationFunctor.Controlled, args.Item2); + public override Func<(IQArray, T), QVoid> __ControlledAdjointBody__ => (args) => this.Log.Record(OperationFunctor.ControlledAdjoint, args.Item2); public int GetNumberOfCalls(OperationFunctor functor, T tag) => this.Log.GetNumberOfCalls(functor, tag); diff --git a/src/Simulation/Simulators.Tests/PartialMapperTests.cs b/src/Simulation/Simulators.Tests/PartialMapperTests.cs index f945357366d..7498a6467ff 100644 --- a/src/Simulation/Simulators.Tests/PartialMapperTests.cs +++ b/src/Simulation/Simulators.Tests/PartialMapperTests.cs @@ -19,9 +19,9 @@ public NoOp(IOperationFactory m) : base(m) { } string ICallable.FullName => "NoOp"; - public override Func Body => (a) => QVoid.Instance; + public override Func __Body__ => (a) => QVoid.Instance; - public override void Init() { } + public override void __Init__() { } } private void TestOneTupleNoSubstitution(I original, params object[] expected) diff --git a/src/Simulation/Simulators.Tests/QuantumSimulatorTests/BasicTests.cs b/src/Simulation/Simulators.Tests/QuantumSimulatorTests/BasicTests.cs index 092106269f0..682e35e7630 100644 --- a/src/Simulation/Simulators.Tests/QuantumSimulatorTests/BasicTests.cs +++ b/src/Simulation/Simulators.Tests/QuantumSimulatorTests/BasicTests.cs @@ -62,7 +62,7 @@ public void QSimX() var measure = sim.Get(); var set = sim.Get(); - var ctrlX = x.ControlledBody.AsAction(); + var ctrlX = x.__ControlledBody__.AsAction(); OperationsTestHelper.ctrlTestShell(sim, ctrlX, (enabled, ctrls, q) => { set.Apply((Result.Zero, q)); @@ -70,7 +70,7 @@ public void QSimX() var expected = Result.Zero; Assert.Equal(expected, result); - x.ControlledBody((ctrls, q)); + x.__ControlledBody__((ctrls, q)); result = measure.Apply(q); expected = (enabled) ? Result.One : Result.Zero; Assert.Equal(expected, result); diff --git a/src/Simulation/Simulators.Tests/RuntimeMetadataTests.cs b/src/Simulation/Simulators.Tests/RuntimeMetadataTests.cs index 2d8ee9a75cd..8ba1e3cd373 100644 --- a/src/Simulation/Simulators.Tests/RuntimeMetadataTests.cs +++ b/src/Simulation/Simulators.Tests/RuntimeMetadataTests.cs @@ -189,7 +189,7 @@ public void CNOT() var control = new FreeQubit(1); var target = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((control, target)); + var args = op.__DataIn__((control, target)); var expected = new RuntimeMetadata() { Label = "X", @@ -213,7 +213,7 @@ public void CCNOT() var control2 = new FreeQubit(2); var target = new FreeQubit(1); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((control1, control2, target)); + var args = op.__DataIn__((control1, control2, target)); var expected = new RuntimeMetadata() { Label = "X", @@ -236,7 +236,7 @@ public void Swap() var q1 = new FreeQubit(0); var q2 = new FreeQubit(1); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((q1, q2)); + var args = op.__DataIn__((q1, q2)); var expected = new RuntimeMetadata() { Label = "SWAP", @@ -258,7 +258,7 @@ public void Ry() { var target = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((2.1, target)); + var args = op.__DataIn__((2.1, target)); var expected = new RuntimeMetadata() { Label = "Ry", @@ -280,7 +280,7 @@ public void M() { var measureQubit = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(measureQubit); + var args = op.__DataIn__(measureQubit); var expected = new RuntimeMetadata() { Label = "M", @@ -302,7 +302,7 @@ public void Reset() { var target = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(target); + var args = op.__DataIn__(target); var expected = new RuntimeMetadata() { Label = "Reset", @@ -324,7 +324,7 @@ public void ResetAll() { IQArray targets = new QArray(new[] { new FreeQubit(0) }); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(targets); + var args = op.__DataIn__(targets); var expected = new RuntimeMetadata() { Label = "ResetAll", @@ -349,7 +349,7 @@ public void MResetX() { var measureQubit = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(measureQubit); + var args = op.__DataIn__(measureQubit); var expected = new RuntimeMetadata() { Label = "MResetX", @@ -371,7 +371,7 @@ public void MResetY() { var measureQubit = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(measureQubit); + var args = op.__DataIn__(measureQubit); var expected = new RuntimeMetadata() { Label = "MResetY", @@ -393,7 +393,7 @@ public void MResetZ() { var measureQubit = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(measureQubit); + var args = op.__DataIn__(measureQubit); var expected = new RuntimeMetadata() { Label = "MResetZ", @@ -418,7 +418,7 @@ public void EmptyOperation() { var measureQubit = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(QVoid.Instance); + var args = op.__DataIn__(QVoid.Instance); var expected = new RuntimeMetadata() { Label = "Empty", @@ -441,7 +441,7 @@ public void OperationAsArgument() var q = new FreeQubit(0); var opArg = new QuantumSimulator().Get(); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((opArg, q)); + var args = op.__DataIn__((opArg, q)); var expected = new RuntimeMetadata() { Label = "WrapperOp", @@ -462,7 +462,7 @@ public void OperationAsArgument() public void NestedOperation() { var op = new QuantumSimulator().Get(); - var args = op.__dataIn(QVoid.Instance); + var args = op.__DataIn__(QVoid.Instance); var expected = new RuntimeMetadata() { Label = "NestedOp", @@ -484,7 +484,7 @@ public void DuplicateQubitArgs() { var q = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn((q, q)); + var args = op.__DataIn__((q, q)); var expected = new RuntimeMetadata() { Label = "TwoQubitOp", @@ -506,7 +506,7 @@ public void QArrayArgs() { var op = new QuantumSimulator().Get(); IQArray bits = new QArray(new bool[] { false, true }); - var args = op.__dataIn(bits); + var args = op.__DataIn__(bits); var expected = new RuntimeMetadata() { Label = "BoolArrayOp", @@ -531,7 +531,7 @@ public void FooUDTOp() { Qubit target = new FreeQubit(0); var op = new QuantumSimulator().Get(); - var args = op.__dataIn(new Circuits.FooUDT(("bar", (target, 2.1)))); + var args = op.__DataIn__(new Circuits.FooUDT(("bar", (target, 2.1)))); var expected = new RuntimeMetadata() { Label = "FooUDTOp", @@ -557,7 +557,7 @@ public void ControlledH() IQArray controls = new QArray(new[] { new FreeQubit(0) }); Qubit target = new FreeQubit(1); var op = new QuantumSimulator().Get().Controlled; - var args = op.__dataIn((controls, target)); + var args = op.__DataIn__((controls, target)); var expected = new RuntimeMetadata() { Label = "H", @@ -580,7 +580,7 @@ public void ControlledX() IQArray controls = new QArray(new[] { new FreeQubit(0) }); Qubit target = new FreeQubit(1); var op = new QuantumSimulator().Get().Controlled; - var args = op.__dataIn((controls, target)); + var args = op.__DataIn__((controls, target)); var expected = new RuntimeMetadata() { Label = "X", @@ -604,7 +604,7 @@ public void ControlledCNOT() Qubit control = new FreeQubit(1); Qubit target = new FreeQubit(2); var op = new QuantumSimulator().Get().Controlled; - var args = op.__dataIn((controls, (control, target))); + var args = op.__DataIn__((controls, (control, target))); var expected = new RuntimeMetadata() { Label = "X", @@ -630,7 +630,7 @@ public void ControlledCCNOT() Qubit target = new FreeQubit(3); IQArray controls = new QArray(new[] { control1 }); var op = new QuantumSimulator().Get().Controlled; - var args = op.__dataIn((controls, (control2, control3, target))); + var args = op.__DataIn__((controls, (control2, control3, target))); var expected = new RuntimeMetadata() { Label = "X", @@ -655,7 +655,7 @@ public void AdjointH() { Qubit target = new FreeQubit(0); var op = new QuantumSimulator().Get().Adjoint; - var args = op.__dataIn(target); + var args = op.__DataIn__(target); var expected = new RuntimeMetadata() { Label = "H", @@ -677,7 +677,7 @@ public void AdjointX() { Qubit target = new FreeQubit(0); var op = new QuantumSimulator().Get().Adjoint; - var args = op.__dataIn(target); + var args = op.__DataIn__(target); var expected = new RuntimeMetadata() { Label = "X", @@ -699,7 +699,7 @@ public void AdjointAdjointH() { Qubit target = new FreeQubit(0); var op = new QuantumSimulator().Get().Adjoint.Adjoint; - var args = op.__dataIn(target); + var args = op.__DataIn__(target); var expected = new RuntimeMetadata() { Label = "H", @@ -723,7 +723,7 @@ public void ControlledAdjointH() Qubit target = new FreeQubit(1); var op1 = new QuantumSimulator().Get().Controlled.Adjoint; var op2 = new QuantumSimulator().Get().Adjoint.Controlled; - var args = op1.__dataIn((controls, target)); + var args = op1.__DataIn__((controls, target)); var expected = new RuntimeMetadata() { Label = "H", @@ -749,7 +749,7 @@ public void ControlledAdjointAdjointH() var op1 = new QuantumSimulator().Get().Controlled.Adjoint.Adjoint; var op2 = new QuantumSimulator().Get().Adjoint.Controlled.Adjoint; var op3 = new QuantumSimulator().Get().Adjoint.Adjoint.Controlled; - var args = op1.__dataIn((controls, target)); + var args = op1.__DataIn__((controls, target)); var expected = new RuntimeMetadata() { Label = "H", @@ -778,7 +778,7 @@ public void PartialRy() var target = new FreeQubit(0); var op = new QuantumSimulator().Get().Partial((double d) => new ValueTuple(d, target)); - var args = op.__dataIn(2.1); + var args = op.__DataIn__(2.1); var expected = new RuntimeMetadata() { Label = "Ry", diff --git a/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs b/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs index f9b73e477e9..84c78044fdb 100644 --- a/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs +++ b/src/Simulation/Simulators.Tests/SimulatorBaseTests.cs @@ -328,9 +328,9 @@ public DummyX(IOperationFactory m) : base(m) { } - public override Func Body => throw new NotImplementedException(); + public override Func __Body__ => throw new NotImplementedException(); - public override Func<(IQArray, Qubit), QVoid> ControlledBody => throw new NotImplementedException(); + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => throw new NotImplementedException(); } /// @@ -343,9 +343,9 @@ public DummyM(IOperationFactory m) : base(m) { } - public override Func Body => throw new NotImplementedException(); + public override Func __Body__ => throw new NotImplementedException(); - public override void Init() + public override void __Init__() { } } @@ -363,12 +363,12 @@ public DependsOnX(IOperationFactory m) : base(m) public IUnitary X { get; set; } - public override void Init() + public override void __Init__() { - this.X = this.Factory.Get, Intrinsic.X>(); + this.X = this.__Factory__.Get, Intrinsic.X>(); } - public override Func Body => throw new NotImplementedException(); + public override Func __Body__ => throw new NotImplementedException(); } /// @@ -384,15 +384,15 @@ public LikeX(IOperationFactory m) : base(m) string ICallable.FullName => "LikeX"; - public override void Init() { } + public override void __Init__() { } - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => throw new NotImplementedException(); + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => throw new NotImplementedException(); - public override Func AdjointBody => throw new NotImplementedException(); + public override Func __AdjointBody__ => throw new NotImplementedException(); - public override Func<(IQArray, Qubit), QVoid> ControlledBody => throw new NotImplementedException(); + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => throw new NotImplementedException(); - public override Func Body => throw new NotImplementedException(); + public override Func __Body__ => throw new NotImplementedException(); } @@ -407,14 +407,14 @@ public A(IOperationFactory m) : base(m) public ICallable B { get; set; } - public override void Init() + public override void __Init__() { - this.B = this.Factory.Get(); + this.B = this.__Factory__.Get(); } string ICallable.FullName => "A"; - public override Func Body => (_) => { return QVoid.Instance; }; + public override Func __Body__ => (_) => { return QVoid.Instance; }; } /// @@ -430,12 +430,12 @@ public B(IOperationFactory m) : base(m) public ICallable A { get; set; } - public override void Init() + public override void __Init__() { - this.A = this.Factory.Get(); + this.A = this.__Factory__.Get(); } - public override Func Body => (_) => { return QVoid.Instance; }; + public override Func __Body__ => (_) => { return QVoid.Instance; }; } public class Gen : Operation, ICallable @@ -446,16 +446,16 @@ public Gen(IOperationFactory m) : base(m) string ICallable.FullName => "Gen"; - public override Func Body => (_) => { return QVoid.Instance; }; + public override Func __Body__ => (_) => { return QVoid.Instance; }; public ICallable A { get; set; } public IUnitary X { get; set; } - public override void Init() + public override void __Init__() { - this.A = this.Factory.Get(); - this.X = this.Factory.Get, Intrinsic.X>(); + this.A = this.__Factory__.Get(); + this.X = this.__Factory__.Get, Intrinsic.X>(); } } @@ -470,11 +470,11 @@ public DependsOnGen(IOperationFactory m) : base(m) public ICallable Gen { get; set; } - public override Func Body => (_) => { return QVoid.Instance; }; + public override Func __Body__ => (_) => { return QVoid.Instance; }; - public override void Init() + public override void __Init__() { - this.Gen = this.Factory.Get(typeof(Gen<>)); + this.Gen = this.__Factory__.Get(typeof(Gen<>)); } } } diff --git a/src/Simulation/Simulators.Tests/StartOperationTests.cs b/src/Simulation/Simulators.Tests/StartOperationTests.cs index d07af93db07..f4fb50f8cfd 100644 --- a/src/Simulation/Simulators.Tests/StartOperationTests.cs +++ b/src/Simulation/Simulators.Tests/StartOperationTests.cs @@ -141,11 +141,11 @@ Helper. RunWithMultipleSimulators((s) => var p1 = basic.Partial(m1); var p2 = p1.Partial(m2); - AssertTuple(expected, p1.__dataIn((q2, q3)).Value); - AssertTuple(expected, p2.__dataIn((q2)).Value); + AssertTuple(expected, p1.__DataIn__((q2, q3)).Value); + AssertTuple(expected, p2.__DataIn__((q2)).Value); - Assert.Equal(new Qubit[] { q1, q2, q3 }, p1.__dataIn((q2, q3)).Qubits); - Assert.Equal(new Qubit[] { q1, q2, q3 }, p2.__dataIn(q2).Qubits); + Assert.Equal(new Qubit[] { q1, q2, q3 }, p1.__DataIn__((q2, q3)).Qubits); + Assert.Equal(new Qubit[] { q1, q2, q3 }, p2.__DataIn__(q2).Qubits); Assert.Null(((IApplyData)basic).Qubits); Assert.Equal(new Qubit[] { q1, null, null }, ((IApplyData)p1).Qubits); @@ -169,11 +169,11 @@ public void StartUDTDataIn() var p1 = ((Basic)basic.Data).Partial(m1); var p2 = p1.Partial(m2); - AssertTuple(expected, p1.__dataIn((q2, q3)).Value); - AssertTuple(expected, p2.__dataIn((q2)).Value); + AssertTuple(expected, p1.__DataIn__((q2, q3)).Value); + AssertTuple(expected, p2.__DataIn__((q2)).Value); - Assert.Equal(new Qubit[] { q1, q2, q3 }, p1.__dataIn((q2, q3)).Qubits); - Assert.Equal(new Qubit[] { q1, q2, q3 }, p2.__dataIn(q2).Qubits); + Assert.Equal(new Qubit[] { q1, q2, q3 }, p1.__DataIn__((q2, q3)).Qubits); + Assert.Equal(new Qubit[] { q1, q2, q3 }, p2.__DataIn__(q2).Qubits); Assert.Null(((IApplyData)basic).Qubits); Assert.Equal(new Qubit[] { q1, null, null }, ((IApplyData)p1).Qubits); diff --git a/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs b/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs index 74e031df283..ec72438eb1c 100644 --- a/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs +++ b/src/Simulation/Simulators.Tests/ToffoliSimulatorTests.cs @@ -113,12 +113,12 @@ public void ToffoliXCtrl() var measure = sim.Get(); var set = sim.Get(); - var ctrlX = x.ControlledBody.AsAction(); + var ctrlX = x.__ControlledBody__.AsAction(); OperationsTestHelper.ctrlTestShell(sim, ctrlX, (enabled, ctrls, q) => { set.Apply((Result.Zero, q)); - x.ControlledBody((ctrls, q)); + x.__ControlledBody__((ctrls, q)); var result = measure.Apply(q); var expected = (enabled) ? Result.One : Result.Zero; diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs index c9b52f916e4..c00427bac1d 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.ClassicalControl.cs @@ -123,7 +123,7 @@ public TracerApplyIfElse(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(Result, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(Result, ICallable, ICallable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); @@ -139,13 +139,13 @@ public TracerApplyIfElseA(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(Result, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(Result, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Adjoint, null); @@ -161,13 +161,13 @@ public TracerApplyIfElseC(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(Result, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(Result, IControllable, IControllable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); @@ -184,26 +184,26 @@ public TracerApplyIfElseCA(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(Result, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(Result, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(Result, IUnitary, IUnitary), QVoid> AdjointBody => (q) => + public override Func<(Result, IUnitary, IUnitary), QVoid> __AdjointBody__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Adjoint, null); }; - public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); return ExecuteConditionalStatement(measurementResult, onZero, onOne, type, ctrls); }; - public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> ControlledAdjointBody => (q) => + public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> __ControlledAdjointBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.ControlledAdjoint, ctrls); @@ -224,7 +224,7 @@ public TracerApplyConditionally(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); @@ -240,13 +240,13 @@ public TracerApplyConditionallyA(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); @@ -262,13 +262,13 @@ public TracerApplyConditionallyC(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(IQArray, IQArray, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IControllable, IControllable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); @@ -285,26 +285,26 @@ public TracerApplyConditionallyCA(QCTraceSimulatorImpl m) : base(m) this.tracerCore = m; } - public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, type, ctrls); }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledAdjointBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledAdjointBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.ControlledAdjoint, ctrls); diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs index bd42f186292..2b5b1fd5d34 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Diagnostics.Dump.cs @@ -17,13 +17,13 @@ public TracerDumpMachine(QCTraceSimulatorImpl m) : base(m) core = m; } - public override Func Body => (location) => + public override Func __Body__ => (location) => { if (location == null) { throw new ArgumentNullException(nameof(location)); } var filename = (location is QVoid) ? "" : location.ToString(); var msg = "QCTraceSimulator doesn't support state dump."; - var logMessage = this.Factory.Get, Intrinsic.Message>(); + var logMessage = this.__Factory__.Get, Intrinsic.Message>(); if (string.IsNullOrEmpty(filename)) { @@ -54,7 +54,7 @@ public TracerDumpRegister(QCTraceSimulatorImpl m) : base(m) core = m; } - public override Func<(T, IQArray), QVoid> Body => (__in) => + public override Func<(T, IQArray), QVoid> __Body__ => (__in) => { var (location, qubits) = __in; @@ -62,7 +62,7 @@ public TracerDumpRegister(QCTraceSimulatorImpl m) : base(m) var filename = (location is QVoid) ? "" : location.ToString(); var msg = "QCTraceSimulator doesn't support state dump."; - var logMessage = this.Factory.Get, Intrinsic.Message>(); + var logMessage = this.__Factory__.Get, Intrinsic.Message>(); if (string.IsNullOrEmpty(filename)) { diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.CX.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.CX.cs index 2482a43281e..beee69de0f7 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.CX.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.CX.cs @@ -15,7 +15,7 @@ public TracerCX(QCTraceSimulatorImpl m) : base(m){ tracerCore = m; } - public override Func<(Qubit, Qubit), QVoid> Body + public override Func<(Qubit, Qubit), QVoid> __Body__ => (arg) => { (Qubit control, Qubit target) = arg; @@ -24,4 +24,4 @@ public TracerCX(QCTraceSimulatorImpl m) : base(m){ }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.Clifford.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.Clifford.cs index 5c072910b32..c4876d2da46 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.Clifford.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.Clifford.cs @@ -16,7 +16,7 @@ public TracerClifford(QCTraceSimulatorImpl m) : base(m){ tracerCore = m; } - public override Func<(long, Pauli, Qubit), QVoid> Body + public override Func<(long, Pauli, Qubit), QVoid> __Body__ => (arg) => { (long id , Pauli pauli, Qubit target) = arg; @@ -25,4 +25,4 @@ public TracerClifford(QCTraceSimulatorImpl m) : base(m){ }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.ForceMeasure.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.ForceMeasure.cs index ef48f019ece..6cb50a73c88 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.ForceMeasure.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.ForceMeasure.cs @@ -15,7 +15,7 @@ public TracerForceMeasure(QCTraceSimulatorImpl m) : base(m){ tracerCore = m; } - public override Func<(IQArray, IQArray, Result), QVoid> Body + public override Func<(IQArray, IQArray, Result), QVoid> __Body__ => (arg) => { (IQArray observable, IQArray target, Result result) = arg; @@ -24,4 +24,4 @@ public TracerForceMeasure(QCTraceSimulatorImpl m) : base(m){ }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.R.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.R.cs index 5015fd6e31f..c847ea0608f 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.R.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.R.cs @@ -17,7 +17,7 @@ public TracerR(QCTraceSimulatorImpl m) : base(m){ } public override Func<(Pauli, double, Qubit), QVoid> - Body => (arg) => + __Body__ => (arg) => { (Pauli axis, double angle, Qubit target) = arg; tracerCore.R(axis, angle, target); @@ -25,4 +25,4 @@ public TracerR(QCTraceSimulatorImpl m) : base(m){ }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.RFrac.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.RFrac.cs index 1b79a24e643..6a0c7cc1a55 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.RFrac.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Interface.RFrac.cs @@ -16,7 +16,7 @@ public TracerRFrac(QCTraceSimulatorImpl m) : base(m){ tracerCore = m; } - public override Func<(Pauli, long, long, Qubit), QVoid> Body + public override Func<(Pauli, long, long, Qubit), QVoid> __Body__ => (arg) => { (Pauli axis, long numerator, long denomPower, Qubit target) = arg; @@ -25,4 +25,4 @@ public TracerRFrac(QCTraceSimulatorImpl m) : base(m){ }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Assert.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Assert.cs index 71357de0bd7..fe3c66c409c 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Assert.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Assert.cs @@ -17,7 +17,7 @@ public TracerAssert(QCTraceSimulatorImpl m) : base(m) core = m.tracingCore; } - public override Func<(IQArray, IQArray, Result, string), QVoid> Body + public override Func<(IQArray, IQArray, Result, string), QVoid> __Body__ => (arg) => { (IQArray observable, IQArray target, Result result, string msg) = arg; @@ -25,11 +25,11 @@ public TracerAssert(QCTraceSimulatorImpl m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, string), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, string), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.AssertProb.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.AssertProb.cs index 705d5d3ae1d..bcdc7374424 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.AssertProb.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.AssertProb.cs @@ -16,7 +16,7 @@ public TracerAssertProb(QCTraceSimulatorImpl m) : base(m){ core = m.tracingCore; } - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> Body + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __Body__ => (args) => { (IQArray observable, @@ -29,11 +29,11 @@ public TracerAssertProb(QCTraceSimulatorImpl m) : base(m){ return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Measure.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Measure.cs index 50ee25450f2..963c13b25bd 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Measure.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.Measure.cs @@ -16,7 +16,7 @@ public TracerMeasure(QCTraceSimulatorImpl m) : base(m){ } public override Func<(IQArray, IQArray), Result> - Body => (args) => + __Body__ => (args) => { (IQArray observable, IQArray target) = args; return core.Measure(observable, target); @@ -25,4 +25,4 @@ public TracerMeasure(QCTraceSimulatorImpl m) : base(m){ } -} \ No newline at end of file +} diff --git a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.random.cs b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.random.cs index 14523f44531..61325997347 100644 --- a/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.random.cs +++ b/src/Simulation/Simulators/QCTraceSimulator/QCTraceSimulator.Primitive.random.cs @@ -17,7 +17,7 @@ public TracerRandom(QCTraceSimulatorImpl m) : base(m) core = m; } - public override Func, Int64> Body => (p) => + public override Func, Int64> __Body__ => (p) => { return CommonUtils.SampleDistribution(p, core.RandomGenerator.NextDouble()); }; diff --git a/src/Simulation/Simulators/QuantumProcessor/Assert.cs b/src/Simulation/Simulators/QuantumProcessor/Assert.cs index a0badd62007..3af8563429d 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Assert.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Assert.cs @@ -18,7 +18,7 @@ public QuantumProcessorDispatcherAssert(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, Result, string), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, string), QVoid> __Body__ => (_args) => { (IQArray paulis, IQArray qubits, Result result, string msg) = _args; if (paulis.Length != qubits.Length) @@ -33,11 +33,11 @@ public QuantumProcessorDispatcherAssert(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, string), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, string), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/QuantumProcessor/AssertProb.cs b/src/Simulation/Simulators/QuantumProcessor/AssertProb.cs index 9f4d87e085e..0789f86e80b 100644 --- a/src/Simulation/Simulators/QuantumProcessor/AssertProb.cs +++ b/src/Simulation/Simulators/QuantumProcessor/AssertProb.cs @@ -18,7 +18,7 @@ public QuantumProcessorDispatcherAssertProb(QuantumProcessorDispatcher m) : base this.Simulator = m; } - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __Body__ => (_args) => { (IQArray paulis, IQArray qubits, Result result, double expectedPr, string msg, double tol) = _args; if (paulis.Length != qubits.Length) @@ -33,11 +33,11 @@ public QuantumProcessorDispatcherAssertProb(QuantumProcessorDispatcher m) : base return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/QuantumProcessor/ClassicalControl.cs b/src/Simulation/Simulators/QuantumProcessor/ClassicalControl.cs index 506fb79ac3c..8b19da839c7 100644 --- a/src/Simulation/Simulators/QuantumProcessor/ClassicalControl.cs +++ b/src/Simulation/Simulators/QuantumProcessor/ClassicalControl.cs @@ -89,7 +89,7 @@ public class QuantumProcessorApplyIfElse : Extensions.ApplyIfElseIntrinsic public QuantumProcessorApplyIfElse(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(Result, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(Result, ICallable, ICallable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Body, null); @@ -102,13 +102,13 @@ public class QuantumProcessorApplyIfElseA : Extensions.ApplyIfElseIntrinsicA public QuantumProcessorApplyIfElseA(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(Result, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(Result, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Adjoint, null); @@ -121,13 +121,13 @@ public class QuantumProcessorApplyIfElseC : Extensions.ApplyIfElseIntrinsicC public QuantumProcessorApplyIfElseC(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(Result, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(Result, IControllable, IControllable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; if ((ctrls == null) || (ctrls.Count == 0)) @@ -147,19 +147,19 @@ public class QuantumProcessorApplyIfElseCA : Extensions.ApplyIfElseIntrinsicCA public QuantumProcessorApplyIfElseCA(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(Result, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(Result, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(Result, IUnitary, IUnitary), QVoid> AdjointBody => (q) => + public override Func<(Result, IUnitary, IUnitary), QVoid> __AdjointBody__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(Simulator, measurementResult, Result.Zero, onZero, onOne, OperationFunctor.Adjoint, null); }; - public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; @@ -173,7 +173,7 @@ public class QuantumProcessorApplyIfElseCA : Extensions.ApplyIfElseIntrinsicCA } }; - public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> ControlledAdjointBody => (q) => + public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> __ControlledAdjointBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; @@ -196,7 +196,7 @@ public class QuantumProcessorApplyConditionally : Extensions.ApplyConditionallyI public QuantumProcessorApplyConditionally(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); @@ -209,13 +209,13 @@ public class QuantumProcessorApplyConditionallyA : Extensions.ApplyConditionally public QuantumProcessorApplyConditionallyA(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); @@ -228,13 +228,13 @@ public class QuantumProcessorApplyConditionallyC : Extensions.ApplyConditionally public QuantumProcessorApplyConditionallyC(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(IQArray, IQArray, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IControllable, IControllable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp)) = q; @@ -255,19 +255,19 @@ public class QuantumProcessorApplyConditionallyCA : Extensions.ApplyConditionall public QuantumProcessorApplyConditionallyCA(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(Simulator, measurementResults, resultsValues, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp)) = q; @@ -281,7 +281,7 @@ public class QuantumProcessorApplyConditionallyCA : Extensions.ApplyConditionall } }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledAdjointBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledAdjointBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray resultsValues, ICallable onEqualOp, ICallable onNonEqualOp)) = q; diff --git a/src/Simulation/Simulators/QuantumProcessor/Dump.cs b/src/Simulation/Simulators/QuantumProcessor/Dump.cs index a0b2ce227f7..5383d0157cc 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Dump.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Dump.cs @@ -17,7 +17,7 @@ public QuantumProcessorDispatcherDumpMachine(QuantumProcessorDispatcher m) : bas this.Simulator = m; } - public override Func Body => (location) => + public override Func __Body__ => (location) => { if (location == null) { throw new ArgumentNullException(nameof(location)); } @@ -36,7 +36,7 @@ public QuantumProcessorDispatcherDumpRegister(QuantumProcessorDispatcher m) : ba this.Simulator = m; } - public override Func<(T, IQArray), QVoid> Body => (__in) => + public override Func<(T, IQArray), QVoid> __Body__ => (__in) => { var (location, qubits) = __in; diff --git a/src/Simulation/Simulators/QuantumProcessor/Exp.cs b/src/Simulation/Simulators/QuantumProcessor/Exp.cs index d714d9d364d..4c871241f65 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Exp.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Exp.cs @@ -18,7 +18,7 @@ public QuantumProcessorDispatcherExp(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(IQArray, double, IQArray), QVoid> Body => (_args) => + public override Func<(IQArray, double, IQArray), QVoid> __Body__ => (_args) => { (IQArray paulis, double angle, IQArray qubits) = _args; @@ -35,14 +35,14 @@ public QuantumProcessorDispatcherExp(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, double, IQArray), QVoid> AdjointBody => (_args) => + public override Func<(IQArray, double, IQArray), QVoid> __AdjointBody__ => (_args) => { (IQArray paulis, double angle, IQArray qubits) = _args; - return this.Body.Invoke((paulis, -angle, qubits)); + return this.__Body__.Invoke((paulis, -angle, qubits)); }; - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, (IQArray paulis, double angle, IQArray qubits)) = _args; @@ -66,11 +66,11 @@ public QuantumProcessorDispatcherExp(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (IQArray paulis, double angle, IQArray qubits)) = _args; - return this.ControlledBody.Invoke((ctrls, (paulis, -angle, qubits))); + return this.__ControlledBody__.Invoke((ctrls, (paulis, -angle, qubits))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/ExpFrac.cs b/src/Simulation/Simulators/QuantumProcessor/ExpFrac.cs index 7f5438e00d7..f76e657cc01 100644 --- a/src/Simulation/Simulators/QuantumProcessor/ExpFrac.cs +++ b/src/Simulation/Simulators/QuantumProcessor/ExpFrac.cs @@ -15,7 +15,7 @@ public class QuantumProcessorDispatcherExpFrac : Quantum.Intrinsic.ExpFrac public QuantumProcessorDispatcherExpFrac(QuantumProcessorDispatcher m) : base(m) { this.Simulator = m; } - public override Func<(IQArray, long, long, IQArray), QVoid> Body => (_args) => + public override Func<(IQArray, long, long, IQArray), QVoid> __Body__ => (_args) => { (IQArray paulis, long nom, long den, IQArray qubits) = _args; @@ -31,15 +31,15 @@ public class QuantumProcessorDispatcherExpFrac : Quantum.Intrinsic.ExpFrac return QVoid.Instance; }; - public override Func<(IQArray, long, long, IQArray), QVoid> AdjointBody => (_args) => + public override Func<(IQArray, long, long, IQArray), QVoid> __AdjointBody__ => (_args) => { (IQArray paulis, long nom, long den, IQArray qubits) = _args; - return this.Body.Invoke((paulis, -nom, den, qubits)); + return this.__Body__.Invoke((paulis, -nom, den, qubits)); }; public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> - ControlledBody => (_args) => + __ControlledBody__ => (_args) => { (IQArray ctrls, (IQArray paulis, long nom, long den, IQArray qubits)) = _args; @@ -64,11 +64,11 @@ public class QuantumProcessorDispatcherExpFrac : Quantum.Intrinsic.ExpFrac }; public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> - ControlledAdjointBody => (_args) => + __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (IQArray paulis, long nom, long den, IQArray qubits)) = _args; - return this.ControlledBody.Invoke((ctrls, (paulis, -nom, den, qubits))); + return this.__ControlledBody__.Invoke((ctrls, (paulis, -nom, den, qubits))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/H.cs b/src/Simulation/Simulators/QuantumProcessor/H.cs index 9ded09a1739..55dcff8d113 100644 --- a/src/Simulation/Simulators/QuantumProcessor/H.cs +++ b/src/Simulation/Simulators/QuantumProcessor/H.cs @@ -17,14 +17,14 @@ public QuantumProcessorDispatcherH(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.H(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (args) => { (IQArray ctrls, Qubit q1) = args; diff --git a/src/Simulation/Simulators/QuantumProcessor/M.cs b/src/Simulation/Simulators/QuantumProcessor/M.cs index adf46ea18ef..f8491f4eb4f 100644 --- a/src/Simulation/Simulators/QuantumProcessor/M.cs +++ b/src/Simulation/Simulators/QuantumProcessor/M.cs @@ -17,7 +17,7 @@ public QuantumProcessorDispatcherM(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q) => + public override Func __Body__ => (q) => { return Simulator.QuantumProcessor.M(q); }; diff --git a/src/Simulation/Simulators/QuantumProcessor/Measure.cs b/src/Simulation/Simulators/QuantumProcessor/Measure.cs index fe430df2e16..6b93ead8be5 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Measure.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Measure.cs @@ -18,7 +18,7 @@ public QuantumProcessorDispatcherMeasure(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray), Result> Body => (_args) => + public override Func<(IQArray, IQArray), Result> __Body__ => (_args) => { (IQArray paulis, IQArray qubits) = _args; diff --git a/src/Simulation/Simulators/QuantumProcessor/R.cs b/src/Simulation/Simulators/QuantumProcessor/R.cs index 448aab417cf..87ae641a570 100644 --- a/src/Simulation/Simulators/QuantumProcessor/R.cs +++ b/src/Simulation/Simulators/QuantumProcessor/R.cs @@ -19,7 +19,7 @@ public QuantumProcessorDispatcherR(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(Pauli, double, Qubit), QVoid> Body => (_args) => + public override Func<(Pauli, double, Qubit), QVoid> __Body__ => (_args) => { (Pauli basis, double angle, Qubit q1) = _args; if (basis != Pauli.PauliI) @@ -29,13 +29,13 @@ public QuantumProcessorDispatcherR(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(Pauli, double, Qubit), QVoid> AdjointBody => (_args) => + public override Func<(Pauli, double, Qubit), QVoid> __AdjointBody__ => (_args) => { (Pauli basis, double angle, Qubit q1) = _args; - return this.Body.Invoke((basis, -angle, q1)); + return this.__Body__.Invoke((basis, -angle, q1)); }; - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, (Pauli basis, double angle, Qubit q1)) = _args; @@ -52,10 +52,10 @@ public QuantumProcessorDispatcherR(QuantumProcessorDispatcher m) : base(m) }; - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (Pauli basis, double angle, Qubit q1)) = _args; - return this.ControlledBody.Invoke((ctrls, (basis, -angle, q1))); + return this.__ControlledBody__.Invoke((ctrls, (basis, -angle, q1))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/R1.cs b/src/Simulation/Simulators/QuantumProcessor/R1.cs index 65d3c8570ef..9fb71677223 100644 --- a/src/Simulation/Simulators/QuantumProcessor/R1.cs +++ b/src/Simulation/Simulators/QuantumProcessor/R1.cs @@ -18,20 +18,20 @@ public QuantumProcessorDispatcherR1(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(double, Qubit), QVoid> Body => (_args) => + public override Func<(double, Qubit), QVoid> __Body__ => (_args) => { (double angle, Qubit q1) = _args; Simulator.QuantumProcessor.R1(angle, q1); return QVoid.Instance; }; - public override Func<(double, Qubit), QVoid> AdjointBody => (_args) => + public override Func<(double, Qubit), QVoid> __AdjointBody__ => (_args) => { (double angle, Qubit q1) = _args; - return this.Body.Invoke((-angle, q1)); + return this.__Body__.Invoke((-angle, q1)); }; - public override Func<(IQArray, ( double, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, ( double, Qubit)), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, (double angle, Qubit q1)) = _args; @@ -48,10 +48,10 @@ public QuantumProcessorDispatcherR1(QuantumProcessorDispatcher m) : base(m) }; - public override Func<(IQArray, (double, Qubit)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (double, Qubit)), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (double angle, Qubit q1)) = _args; - return this.ControlledBody.Invoke((ctrls, (-angle, q1))); + return this.__ControlledBody__.Invoke((ctrls, (-angle, q1))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/R1Frac.cs b/src/Simulation/Simulators/QuantumProcessor/R1Frac.cs index 60a07ff2cbe..99ab7ce0d7f 100644 --- a/src/Simulation/Simulators/QuantumProcessor/R1Frac.cs +++ b/src/Simulation/Simulators/QuantumProcessor/R1Frac.cs @@ -19,7 +19,7 @@ public QuantumProcessorDispatcherR1Frac(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(long, long, Qubit), QVoid> Body => (_args) => + public override Func<(long, long, Qubit), QVoid> __Body__ => (_args) => { (long num, long denom, Qubit q1) = _args; (long numNew, long denomNew) = CommonUtils.Reduce(num, denom); @@ -27,13 +27,13 @@ public QuantumProcessorDispatcherR1Frac(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(long, long, Qubit), QVoid> AdjointBody => (_args) => + public override Func<(long, long, Qubit), QVoid> __AdjointBody__ => (_args) => { (long num, long denom, Qubit q1) = _args; - return this.Body.Invoke((-num, denom, q1)); + return this.__Body__.Invoke((-num, denom, q1)); }; - public override Func<(IQArray, (long, long, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (long, long, Qubit)), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, (long num, long denom, Qubit q1)) = _args; (long numNew, long denomNew) = CommonUtils.Reduce(num, denom); @@ -50,10 +50,10 @@ public QuantumProcessorDispatcherR1Frac(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, (long, long, Qubit)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (long, long, Qubit)), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (long num, long denom, Qubit q1)) = _args; - return this.ControlledBody.Invoke((ctrls, (-num, denom, q1))); + return this.__ControlledBody__.Invoke((ctrls, (-num, denom, q1))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/RFrac.cs b/src/Simulation/Simulators/QuantumProcessor/RFrac.cs index 88d24466659..01d4b0c6621 100644 --- a/src/Simulation/Simulators/QuantumProcessor/RFrac.cs +++ b/src/Simulation/Simulators/QuantumProcessor/RFrac.cs @@ -20,7 +20,7 @@ public QuantumProcessorDispatcherRFrac(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(Pauli, long, long, Qubit), QVoid> Body => (_args) => + public override Func<(Pauli, long, long, Qubit), QVoid> __Body__ => (_args) => { (Pauli basis, long num, long denom, Qubit q1) = _args; if (basis != Pauli.PauliI) @@ -31,13 +31,13 @@ public QuantumProcessorDispatcherRFrac(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(Pauli, long, long, Qubit), QVoid> AdjointBody => (_args) => + public override Func<(Pauli, long, long, Qubit), QVoid> __AdjointBody__ => (_args) => { (Pauli basis, long num, long denom, Qubit q1) = _args; - return this.Body.Invoke((basis, -num, denom, q1)); + return this.__Body__.Invoke((basis, -num, denom, q1)); }; - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, (Pauli basis, long num, long denom, Qubit q1)) = _args; (long numNew, long denomNew) = CommonUtils.Reduce(num, denom); @@ -54,10 +54,10 @@ public QuantumProcessorDispatcherRFrac(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, (Pauli basis, long num, long denom, Qubit q1)) = _args; - return this.ControlledBody.Invoke((ctrls, (basis, -num, denom, q1))); + return this.__ControlledBody__.Invoke((ctrls, (basis, -num, denom, q1))); }; } } diff --git a/src/Simulation/Simulators/QuantumProcessor/Reset.cs b/src/Simulation/Simulators/QuantumProcessor/Reset.cs index 4ebee59437a..b7511af1995 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Reset.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Reset.cs @@ -17,7 +17,7 @@ public QuantumProcessorDispatcherReset(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.Reset(q1); return QVoid.Instance; diff --git a/src/Simulation/Simulators/QuantumProcessor/S.cs b/src/Simulation/Simulators/QuantumProcessor/S.cs index c9081b09345..aa9c891ef16 100644 --- a/src/Simulation/Simulators/QuantumProcessor/S.cs +++ b/src/Simulation/Simulators/QuantumProcessor/S.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherS(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.S(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; @@ -39,13 +39,13 @@ public QuantumProcessorDispatcherS(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func AdjointBody => (q1) => + public override Func __AdjointBody__ => (q1) => { Simulator.QuantumProcessor.SAdjoint(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumProcessor/SWAP.cs b/src/Simulation/Simulators/QuantumProcessor/SWAP.cs index 98fe3d1347e..39ce5592307 100644 --- a/src/Simulation/Simulators/QuantumProcessor/SWAP.cs +++ b/src/Simulation/Simulators/QuantumProcessor/SWAP.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherSWAP(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func<(Qubit,Qubit), QVoid> Body => (q1) => + public override Func<(Qubit,Qubit), QVoid> __Body__ => (q1) => { Simulator.QuantumProcessor.SWAP(q1.Item1, q1.Item2); return QVoid.Instance; }; - public override Func<(IQArray, (Qubit, Qubit)), QVoid> ControlledBody => (args) => + public override Func<(IQArray, (Qubit, Qubit)), QVoid> __ControlledBody__ => (args) => { (IQArray ctrls, (Qubit q1, Qubit q2) ) = args; diff --git a/src/Simulation/Simulators/QuantumProcessor/T.cs b/src/Simulation/Simulators/QuantumProcessor/T.cs index 440e82677bf..1960e0fc35c 100644 --- a/src/Simulation/Simulators/QuantumProcessor/T.cs +++ b/src/Simulation/Simulators/QuantumProcessor/T.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherT(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.T(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; @@ -32,13 +32,13 @@ public QuantumProcessorDispatcherT(QuantumProcessorDispatcher m) : base(m) return QVoid.Instance; }; - public override Func AdjointBody => (q1) => + public override Func __AdjointBody__ => (q1) => { Simulator.QuantumProcessor.TAdjoint(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumProcessor/X.cs b/src/Simulation/Simulators/QuantumProcessor/X.cs index e9e3c7b7b73..db46166c238 100644 --- a/src/Simulation/Simulators/QuantumProcessor/X.cs +++ b/src/Simulation/Simulators/QuantumProcessor/X.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherX(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.X(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (args) => { (IQArray ctrls, Qubit q1) = args; diff --git a/src/Simulation/Simulators/QuantumProcessor/Y.cs b/src/Simulation/Simulators/QuantumProcessor/Y.cs index 271f6872750..e8418cdd5e7 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Y.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Y.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherY(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.Y(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumProcessor/Z.cs b/src/Simulation/Simulators/QuantumProcessor/Z.cs index e4fc24859ba..36d6c537a99 100644 --- a/src/Simulation/Simulators/QuantumProcessor/Z.cs +++ b/src/Simulation/Simulators/QuantumProcessor/Z.cs @@ -17,13 +17,13 @@ public QuantumProcessorDispatcherZ(QuantumProcessorDispatcher m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.QuantumProcessor.Z(q1); return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumProcessor/random.cs b/src/Simulation/Simulators/QuantumProcessor/random.cs index 4badfd98802..407db21dc8d 100644 --- a/src/Simulation/Simulators/QuantumProcessor/random.cs +++ b/src/Simulation/Simulators/QuantumProcessor/random.cs @@ -18,7 +18,7 @@ public QuantumProcessorDispatcherRandom(QuantumProcessorDispatcher m) : base(m) Simulator = m; } - public override Func, Int64> Body => (p) => + public override Func, Int64> __Body__ => (p) => { return CommonUtils.SampleDistribution(p, Simulator.RandomGenerator.NextDouble()); }; diff --git a/src/Simulation/Simulators/QuantumSimulator/Assert.cs b/src/Simulation/Simulators/QuantumSimulator/Assert.cs index 69d1b035d69..917a4c16053 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Assert.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Assert.cs @@ -24,7 +24,7 @@ public QSimAssert(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, Result, string), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, string), QVoid> __Body__ => (_args) => { var (paulis, qubits, result, msg) = _args; @@ -50,11 +50,11 @@ public QSimAssert(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, string), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, string), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs b/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs index 39e3901e592..2e3550bfd25 100644 --- a/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs +++ b/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs @@ -25,7 +25,7 @@ public QSimAssertProb(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __Body__ => (_args) => { var (paulis, qubits, result, expectedPr, msg, tol) = _args; @@ -68,11 +68,11 @@ public QSimAssertProb(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/QuantumSimulator/ClassicalControl.cs b/src/Simulation/Simulators/QuantumSimulator/ClassicalControl.cs index 6ebb57e15dd..c86e5abe4f0 100644 --- a/src/Simulation/Simulators/QuantumSimulator/ClassicalControl.cs +++ b/src/Simulation/Simulators/QuantumSimulator/ClassicalControl.cs @@ -122,7 +122,7 @@ public QSimApplyIfElse(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(Result, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(Result, ICallable, ICallable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); @@ -138,13 +138,13 @@ public QSimApplyIfElseA(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(Result, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(Result, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(Result, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Adjoint, null); @@ -160,13 +160,13 @@ public QSimApplyIfElseC(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(Result, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(Result, IControllable, IControllable), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (Result, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); @@ -183,26 +183,26 @@ public QSimApplyIfElseCA(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(Result, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(Result, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Body, null); }; - public override Func<(Result, IUnitary, IUnitary), QVoid> AdjointBody => (q) => + public override Func<(Result, IUnitary, IUnitary), QVoid> __AdjointBody__ => (q) => { (Result measurementResult, ICallable onZero, ICallable onOne) = q; return ExecuteConditionalStatement(measurementResult, onZero, onOne, OperationFunctor.Adjoint, null); }; - public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); return ExecuteConditionalStatement(measurementResult, onZero, onOne, type, ctrls); }; - public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> ControlledAdjointBody => (q) => + public override Func<(IQArray, (Result, IUnitary, IUnitary)), QVoid> __ControlledAdjointBody__ => (q) => { (IQArray ctrls, (Result measurementResult, ICallable onZero, ICallable onOne)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.ControlledAdjoint, ctrls); @@ -223,7 +223,7 @@ public QSimApplyConditionally(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, ICallable, ICallable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); @@ -239,13 +239,13 @@ public QSimApplyConditionallyA(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IAdjointable, IAdjointable), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); @@ -261,13 +261,13 @@ public QSimApplyConditionallyC(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, IControllable, IControllable), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IControllable, IControllable), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IControllable, IControllable)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); @@ -284,26 +284,26 @@ public QSimApplyConditionallyCA(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> Body => (q) => + public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> __Body__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Body, null); }; - public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> AdjointBody => (q) => + public override Func<(IQArray, IQArray, IUnitary, IUnitary), QVoid> __AdjointBody__ => (q) => { (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp) = q; return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, OperationFunctor.Adjoint, null); }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.Controlled, ctrls); return ExecuteConditionalStatement(measurementResults, comparisonResults, onEqualOp, onNonEqualOp, type, ctrls); }; - public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> ControlledAdjointBody => (q) => + public override Func<(IQArray, (IQArray, IQArray, IUnitary, IUnitary)), QVoid> __ControlledAdjointBody__ => (q) => { (IQArray ctrls, (IQArray measurementResults, IQArray comparisonResults, ICallable onEqualOp, ICallable onNonEqualOp)) = q; OperationFunctor type = AdjustForNoControls(OperationFunctor.ControlledAdjoint, ctrls); diff --git a/src/Simulation/Simulators/QuantumSimulator/Dump.cs b/src/Simulation/Simulators/QuantumSimulator/Dump.cs index 5845114baf4..5cd3a4dd2a3 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Dump.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Dump.cs @@ -73,7 +73,7 @@ public QsimDumpMachine(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (location) => + public override Func __Body__ => (location) => { if (location == null) { throw new ArgumentNullException(nameof(location)); } @@ -91,7 +91,7 @@ public QSimDumpRegister(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(T, IQArray), QVoid> Body => (__in) => + public override Func<(T, IQArray), QVoid> __Body__ => (__in) => { var (location, qubits) = __in; diff --git a/src/Simulation/Simulators/QuantumSimulator/Exp.cs b/src/Simulation/Simulators/QuantumSimulator/Exp.cs index 10559904cef..00f495f368e 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Exp.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Exp.cs @@ -26,7 +26,7 @@ public QSimExp(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, double, IQArray), QVoid> Body => (_args) => + public override Func<(IQArray, double, IQArray), QVoid> __Body__ => (_args) => { var (paulis, theta, qubits) = _args; @@ -43,14 +43,14 @@ public QSimExp(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, double, IQArray), QVoid> AdjointBody => (_args) => + public override Func<(IQArray, double, IQArray), QVoid> __AdjointBody__ => (_args) => { var (paulis, angle, qubits) = _args; - return this.Body.Invoke((paulis, -angle, qubits)); + return this.__Body__.Invoke((paulis, -angle, qubits)); }; - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (paulis, angle, qubits)) = _args; @@ -63,17 +63,17 @@ public QSimExp(QuantumSimulator m) : base(m) } SafeControlled(ctrls, - () => this.Body.Invoke((paulis, angle, qubits)), + () => this.__Body__.Invoke((paulis, angle, qubits)), (count, ids) => MCExp(Simulator.Id, (uint)paulis.Length, paulis.ToArray(), angle, count, ids, qubits.GetIds())); return QVoid.Instance; }; - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledAdjointBody__ => (_args) => { var (ctrls, (paulis, angle, qubits)) = _args; - return this.ControlledBody.Invoke((ctrls, (paulis, -angle, qubits))); + return this.__ControlledBody__.Invoke((ctrls, (paulis, -angle, qubits))); }; } } diff --git a/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs b/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs index cc1a18b25a6..83bfd33862b 100644 --- a/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs +++ b/src/Simulation/Simulators/QuantumSimulator/ExpFrac.cs @@ -19,32 +19,32 @@ public QSimExpFrac(QuantumSimulator m) : base(m) public static double Angle(long numerator, long power) => (System.Math.PI * numerator) / (1 << (int)power); - public override Func<(IQArray, long, long, IQArray), QVoid> Body => (args) => + public override Func<(IQArray, long, long, IQArray), QVoid> __Body__ => (args) => { var (paulis, numerator, power, qubits) = args; var angle = Angle(numerator, power); - return Exp.Apply((paulis, angle, qubits)); + return Exp__.Apply((paulis, angle, qubits)); }; - public override Func<(IQArray, long, long, IQArray), QVoid> AdjointBody => (args) => + public override Func<(IQArray, long, long, IQArray), QVoid> __AdjointBody__ => (args) => { var (paulis, numerator, power, qubits) = args; var angle = Angle(numerator, power); - return Exp.Adjoint.Apply((paulis, angle, qubits)); + return Exp__.Adjoint.Apply((paulis, angle, qubits)); }; - public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> ControlledBody => (args) => + public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> __ControlledBody__ => (args) => { var (ctrls, (paulis, numerator, power, qubits)) = args; var angle = Angle(numerator, power); - return Exp.Controlled.Apply((ctrls, (paulis, angle, qubits))); + return Exp__.Controlled.Apply((ctrls, (paulis, angle, qubits))); }; - public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> ControlledAdjointBody => (args) => + public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> __ControlledAdjointBody__ => (args) => { var (ctrls, (paulis, numerator, power, qubits)) = args; var angle = Angle(numerator, power); - return Exp.Adjoint.Controlled.Apply((ctrls, (paulis, angle, qubits))); + return Exp__.Adjoint.Controlled.Apply((ctrls, (paulis, angle, qubits))); }; } } diff --git a/src/Simulation/Simulators/QuantumSimulator/H.cs b/src/Simulation/Simulators/QuantumSimulator/H.cs index 86d70eec1f2..fc2b0a89d4d 100644 --- a/src/Simulation/Simulators/QuantumSimulator/H.cs +++ b/src/Simulation/Simulators/QuantumSimulator/H.cs @@ -25,7 +25,7 @@ public QSimH(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); @@ -35,7 +35,7 @@ public QSimH(QuantumSimulator m) : base(m) }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (args) => { var (ctrls, q1) = args; diff --git a/src/Simulation/Simulators/QuantumSimulator/M.cs b/src/Simulation/Simulators/QuantumSimulator/M.cs index 6f2766ea333..2b4fee0874d 100644 --- a/src/Simulation/Simulators/QuantumSimulator/M.cs +++ b/src/Simulation/Simulators/QuantumSimulator/M.cs @@ -24,7 +24,7 @@ public QSimM(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q) => + public override Func __Body__ => (q) => { Simulator.CheckQubit(q); //setting qubit as measured to allow for release diff --git a/src/Simulation/Simulators/QuantumSimulator/Measure.cs b/src/Simulation/Simulators/QuantumSimulator/Measure.cs index 40661c9b4d9..25eb5caed95 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Measure.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Measure.cs @@ -22,7 +22,7 @@ public QSimMeasure(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(IQArray, IQArray), Result> Body => (_args) => + public override Func<(IQArray, IQArray), Result> __Body__ => (_args) => { var (paulis, qubits) = _args; diff --git a/src/Simulation/Simulators/QuantumSimulator/R.cs b/src/Simulation/Simulators/QuantumSimulator/R.cs index f69f78de43c..0d8e395f730 100644 --- a/src/Simulation/Simulators/QuantumSimulator/R.cs +++ b/src/Simulation/Simulators/QuantumSimulator/R.cs @@ -26,7 +26,7 @@ public QSimR(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func<(Pauli, double, Qubit), QVoid> Body => (_args) => + public override Func<(Pauli, double, Qubit), QVoid> __Body__ => (_args) => { var (basis, angle, q1) = _args; @@ -38,14 +38,14 @@ public QSimR(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(Pauli, double, Qubit), QVoid> AdjointBody => (_args) => + public override Func<(Pauli, double, Qubit), QVoid> __AdjointBody__ => (_args) => { var (basis, angle, q1) = _args; - return this.Body.Invoke((basis, -angle, q1)); + return this.__Body__.Invoke((basis, -angle, q1)); }; - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (basis, angle, q1)) = _args; @@ -53,18 +53,18 @@ public QSimR(QuantumSimulator m) : base(m) CheckAngle(angle); SafeControlled(ctrls, - () => this.Body.Invoke((basis, angle, q1)), + () => this.__Body__.Invoke((basis, angle, q1)), (count, ids) => MCR(Simulator.Id, basis, angle, count, ids, (uint)q1.Id)); return QVoid.Instance; }; - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledAdjointBody__ => (_args) => { var (ctrls, (basis, angle, q1)) = _args; - return this.ControlledBody.Invoke((ctrls, (basis, -angle, q1))); + return this.__ControlledBody__.Invoke((ctrls, (basis, -angle, q1))); }; } } diff --git a/src/Simulation/Simulators/QuantumSimulator/RFrac.cs b/src/Simulation/Simulators/QuantumSimulator/RFrac.cs index 0d84cea50bf..7e09e5a6b5a 100644 --- a/src/Simulation/Simulators/QuantumSimulator/RFrac.cs +++ b/src/Simulation/Simulators/QuantumSimulator/RFrac.cs @@ -19,32 +19,32 @@ public QSimRFrac(QuantumSimulator m) : base(m) public static double Angle(long numerator, long power) => (-2.0 * System.Math.PI * numerator) / (1 << (int)power); - public override Func<(Pauli, long, long, Qubit), QVoid> Body => (args) => + public override Func<(Pauli, long, long, Qubit), QVoid> __Body__ => (args) => { var (pauli, numerator, power, qubit) = args; var angle = Angle(numerator, power); - return R.Apply((pauli, angle, qubit)); + return R__.Apply((pauli, angle, qubit)); }; - public override Func<(Pauli, long, long, Qubit), QVoid> AdjointBody => (args) => + public override Func<(Pauli, long, long, Qubit), QVoid> __AdjointBody__ => (args) => { var (pauli, numerator, power, qubit) = args; var angle = Angle(numerator, power); - return R.Adjoint.Apply((pauli, angle, qubit)); + return R__.Adjoint.Apply((pauli, angle, qubit)); }; - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledBody => (args) => + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledBody__ => (args) => { var (ctrls, (pauli, numerator, power, qubit)) = args; var angle = Angle(numerator, power); - return R.Controlled.Apply((ctrls, (pauli, angle, qubit))); + return R__.Controlled.Apply((ctrls, (pauli, angle, qubit))); }; - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledAdjointBody => (args) => + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledAdjointBody__ => (args) => { var (ctrls, (pauli, numerator, power, qubit)) = args; var angle = Angle(numerator, power); - return R.Adjoint.Controlled.Apply((ctrls, (pauli, angle, qubit))); + return R__.Adjoint.Controlled.Apply((ctrls, (pauli, angle, qubit))); }; } } diff --git a/src/Simulation/Simulators/QuantumSimulator/S.cs b/src/Simulation/Simulators/QuantumSimulator/S.cs index 39cd9c8dd1e..a77f5bc6b0e 100644 --- a/src/Simulation/Simulators/QuantumSimulator/S.cs +++ b/src/Simulation/Simulators/QuantumSimulator/S.cs @@ -31,7 +31,7 @@ public QSimS(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); @@ -40,7 +40,7 @@ public QSimS(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; @@ -53,7 +53,7 @@ public QSimS(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func AdjointBody => (q1) => + public override Func __AdjointBody__ => (q1) => { Simulator.CheckQubit(q1); @@ -62,14 +62,14 @@ public QSimS(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; Simulator.CheckQubits(ctrls, q1); SafeControlled(ctrls, - () => this.AdjointBody(q1), + () => this.__AdjointBody__(q1), (count, ids) => MCAdjS(Simulator.Id, count, ids, (uint)q1.Id)); return QVoid.Instance; diff --git a/src/Simulation/Simulators/QuantumSimulator/T.cs b/src/Simulation/Simulators/QuantumSimulator/T.cs index cee2a5c90ce..201c8112b51 100644 --- a/src/Simulation/Simulators/QuantumSimulator/T.cs +++ b/src/Simulation/Simulators/QuantumSimulator/T.cs @@ -31,7 +31,7 @@ public QSimT(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); @@ -39,7 +39,7 @@ public QSimT(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; @@ -52,7 +52,7 @@ public QSimT(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func AdjointBody => (q1) => + public override Func __AdjointBody__ => (q1) => { Simulator.CheckQubit(q1); @@ -60,14 +60,14 @@ public QSimT(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledAdjointBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledAdjointBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; Simulator.CheckQubits(ctrls, q1); SafeControlled(ctrls, - () => this.AdjointBody(q1), + () => this.__AdjointBody__(q1), (count, ids) => MCAdjT(Simulator.Id, count, ids, (uint)q1.Id)); return QVoid.Instance; diff --git a/src/Simulation/Simulators/QuantumSimulator/X.cs b/src/Simulation/Simulators/QuantumSimulator/X.cs index d461289848a..9b23f4c6372 100644 --- a/src/Simulation/Simulators/QuantumSimulator/X.cs +++ b/src/Simulation/Simulators/QuantumSimulator/X.cs @@ -25,7 +25,7 @@ public QSimX(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); @@ -34,7 +34,7 @@ public QSimX(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (args) => { var (ctrls, q1) = args; diff --git a/src/Simulation/Simulators/QuantumSimulator/Y.cs b/src/Simulation/Simulators/QuantumSimulator/Y.cs index a3755ce3b5f..1144f966db8 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Y.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Y.cs @@ -25,7 +25,7 @@ public QSimY(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); @@ -34,7 +34,7 @@ public QSimY(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumSimulator/Z.cs b/src/Simulation/Simulators/QuantumSimulator/Z.cs index 962b5a58b4a..e046c233a5c 100644 --- a/src/Simulation/Simulators/QuantumSimulator/Z.cs +++ b/src/Simulation/Simulators/QuantumSimulator/Z.cs @@ -25,7 +25,7 @@ public QSimZ(QuantumSimulator m) : base(m) this.Simulator = m; } - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { Simulator.CheckQubit(q1); ; @@ -34,7 +34,7 @@ public QSimZ(QuantumSimulator m) : base(m) return QVoid.Instance; }; - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (_args) => { (IQArray ctrls, Qubit q1) = _args; diff --git a/src/Simulation/Simulators/QuantumSimulator/random.cs b/src/Simulation/Simulators/QuantumSimulator/random.cs index d93a3b363e0..d1bc39e27a9 100644 --- a/src/Simulation/Simulators/QuantumSimulator/random.cs +++ b/src/Simulation/Simulators/QuantumSimulator/random.cs @@ -22,7 +22,7 @@ public QSimrandom(QuantumSimulator m) : base(m) this.SimulatorId = m.Id; } - public override Func, Int64> Body => (p) => + public override Func, Int64> __Body__ => (p) => { return random_choice(this.SimulatorId, p.Length, p.ToArray()); }; diff --git a/src/Simulation/Simulators/ToffoliSimulator/Assert.cs b/src/Simulation/Simulators/ToffoliSimulator/Assert.cs index 13c71ead4d9..aaa7943bb08 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Assert.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Assert.cs @@ -28,7 +28,7 @@ public Assert(ToffoliSimulator m) : base(m) /// /// The implementation of the operation. /// - public override Func<(IQArray, IQArray, Result, string), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, string), QVoid> __Body__ => (_args) => { Qubit? f(Pauli p, Qubit q) => p switch { @@ -60,19 +60,19 @@ public Assert(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, IQArray, Result, string), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, string), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; /// /// The implementation of the controlled specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; /// /// The implementation of the controlled adjoint specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, string)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/AssertProb.cs b/src/Simulation/Simulators/ToffoliSimulator/AssertProb.cs index 3ed31f98369..edb6ca540ce 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/AssertProb.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/AssertProb.cs @@ -29,7 +29,7 @@ public AssertProb(ToffoliSimulator m) : base(m) /// /// The implementation of the operation. /// - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> Body => (_args) => + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __Body__ => (_args) => { Qubit? f(Pauli p, Qubit q) => @@ -82,19 +82,19 @@ public AssertProb(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> AdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, IQArray, Result, double, string, double), QVoid> __AdjointBody__ => (_args) => { return QVoid.Instance; }; /// /// The implementation of the controlled specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledBody__ => (_args) => { return QVoid.Instance; }; /// /// The implementation of the controlled adjoint specialization of the operation. /// The current definition is that this is a no-op. /// - public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> ControlledAdjointBody => (_args) => { return QVoid.Instance; }; + public override Func<(IQArray, (IQArray, IQArray, Result, double, string, double)), QVoid> __ControlledAdjointBody__ => (_args) => { return QVoid.Instance; }; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/Dump.cs b/src/Simulation/Simulators/ToffoliSimulator/Dump.cs index fe1e9446136..aec28a147aa 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Dump.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Dump.cs @@ -29,7 +29,7 @@ public DumpMachine(ToffoliSimulator m) : base(m) /// /// The implementation of the operation. /// - public override Func Body => (location) => + public override Func __Body__ => (location) => { if (location == null) { throw new ArgumentNullException(nameof(location)); } @@ -60,7 +60,7 @@ public DumpRegister(ToffoliSimulator m) : base(m) /// /// The implementation of the operation. /// - public override Func<(T, IQArray), QVoid> Body => (__in) => + public override Func<(T, IQArray), QVoid> __Body__ => (__in) => { var (location, qubits) = __in; diff --git a/src/Simulation/Simulators/ToffoliSimulator/Exp.cs b/src/Simulation/Simulators/ToffoliSimulator/Exp.cs index 2958414470b..4b6cdd4dd6e 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Exp.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Exp.cs @@ -29,7 +29,7 @@ public Exp(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation flips a target qubit /// if the respective rotation is effectively an X gate. /// - public override Func<(IQArray, double, IQArray), QVoid> Body => (_args) => + public override Func<(IQArray, double, IQArray), QVoid> __Body__ => (_args) => { var (bases, angle, qubits) = _args; @@ -58,7 +58,7 @@ public Exp(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// For the Toffoli simulator *only*, this operation is self-adjoint. /// - public override Func<(IQArray, double, IQArray), QVoid> AdjointBody => Body; + public override Func<(IQArray, double, IQArray), QVoid> __AdjointBody__ => __Body__; /// /// The implementation of the controlled specialization of the operation. @@ -66,7 +66,7 @@ public Exp(ToffoliSimulator m) : base(m) /// if the rotation is effectively an X gate and all of the control qubits /// are in the One state. /// - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (bases, angle, qubits)) = _args; @@ -96,7 +96,7 @@ public Exp(ToffoliSimulator m) : base(m) /// The implementation of the controlled adjoint specialization of the operation. /// For the Toffoli simulator *only*, the controlled specialization is self-adjoint. /// - public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> ControlledAdjointBody => ControlledBody; + public override Func<(IQArray, (IQArray, double, IQArray)), QVoid> __ControlledAdjointBody__ => __ControlledBody__; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/ExpFrac.cs b/src/Simulation/Simulators/ToffoliSimulator/ExpFrac.cs index e7d3d200804..0d14f2fb29e 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/ExpFrac.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/ExpFrac.cs @@ -30,7 +30,7 @@ public ExpFrac(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation flips a target qubit /// if the respective rotation is effectively an X gate. /// - public override Func<(IQArray, long, long, IQArray), QVoid> Body => (_args) => + public override Func<(IQArray, long, long, IQArray), QVoid> __Body__ => (_args) => { var (bases, num, den, qubits) = _args; @@ -59,7 +59,7 @@ public ExpFrac(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// For the Toffoli simulator *only*, this operation is self-adjoint. /// - public override Func<(IQArray, long, long, IQArray), QVoid> AdjointBody => Body; + public override Func<(IQArray, long, long, IQArray), QVoid> __AdjointBody__ => __Body__; /// /// The implementation of the controlled specialization of the operation. @@ -67,7 +67,7 @@ public ExpFrac(ToffoliSimulator m) : base(m) /// if the rotation is effectively an X gate and all of the control qubits /// are in the One state. /// - public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (bases, num, den, qubits)) = _args; @@ -97,7 +97,7 @@ public ExpFrac(ToffoliSimulator m) : base(m) /// The implementation of the controlled adjoint specialization of the operation. /// For the Toffoli simulator *only*, the controlled specialization is self-adjoint. /// - public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> ControlledAdjointBody => ControlledBody; + public override Func<(IQArray, (IQArray, long, long, IQArray)), QVoid> __ControlledAdjointBody__ => __ControlledBody__; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/H.cs b/src/Simulation/Simulators/ToffoliSimulator/H.cs index a9312f6967d..d4f03a40d73 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/H.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/H.cs @@ -25,7 +25,7 @@ public H(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation throws a run-time error. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { throw new NotImplementedException(); }; diff --git a/src/Simulation/Simulators/ToffoliSimulator/M.cs b/src/Simulation/Simulators/ToffoliSimulator/M.cs index 762d5c64d9a..d17c7dc8ec5 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/M.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/M.cs @@ -29,7 +29,7 @@ public M(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation returns the state of the measured qubit. /// That is, Result.One is returned if the measured qubit is in the One state. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { if (q1 == null) return Result.Zero; diff --git a/src/Simulation/Simulators/ToffoliSimulator/Measure.cs b/src/Simulation/Simulators/ToffoliSimulator/Measure.cs index 7b131d9018f..112e622f7b9 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Measure.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Measure.cs @@ -32,7 +32,7 @@ public Measure(ToffoliSimulator m) : base(m) /// That is, Result.One is returned if an odd number of the measured qubits are /// in the One state. /// - public override Func<(IQArray, IQArray), Result> Body => (_args) => + public override Func<(IQArray, IQArray), Result> __Body__ => (_args) => { Qubit? f(Pauli p, Qubit q) => p switch { diff --git a/src/Simulation/Simulators/ToffoliSimulator/R.cs b/src/Simulation/Simulators/ToffoliSimulator/R.cs index 09debce8732..087eaab6044 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/R.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/R.cs @@ -29,7 +29,7 @@ public R(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation flips the target qubit /// if the rotation is effectively an X gate. /// - public override Func<(Pauli, double, Qubit), QVoid> Body => (_args) => + public override Func<(Pauli, double, Qubit), QVoid> __Body__ => (_args) => { var (basis, angle, q1) = _args; @@ -50,7 +50,7 @@ public R(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// For the Toffoli simulator *only*, this operation is self-adjoint. /// - public override Func<(Pauli, double, Qubit), QVoid> AdjointBody => Body; + public override Func<(Pauli, double, Qubit), QVoid> __AdjointBody__ => __Body__; /// /// The implementation of the controlled specialization of the operation. @@ -58,7 +58,7 @@ public R(ToffoliSimulator m) : base(m) /// if the rotation is effectively an X gate and all of the control qubits /// are in the One state. /// - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (basis, angle, q1)) = _args; @@ -80,7 +80,7 @@ public R(ToffoliSimulator m) : base(m) /// The implementation of the controlled adjoint specialization of the operation. /// For the Toffoli simulator *only*, the controlled specialization is self-adjoint. /// - public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> ControlledAdjointBody => ControlledBody; + public override Func<(IQArray, (Pauli, double, Qubit)), QVoid> __ControlledAdjointBody__ => __ControlledBody__; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/RFrac.cs b/src/Simulation/Simulators/ToffoliSimulator/RFrac.cs index a06a094e36e..3cafddc2156 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/RFrac.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/RFrac.cs @@ -29,7 +29,7 @@ public RFrac(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation flips the target qubit /// if the rotation is effectively an X gate. /// - public override Func<(Pauli, long, long, Qubit), QVoid> Body => (_args) => + public override Func<(Pauli, long, long, Qubit), QVoid> __Body__ => (_args) => { var (basis, num, den, q1) = _args; @@ -50,7 +50,7 @@ public RFrac(ToffoliSimulator m) : base(m) /// The implementation of the adjoint specialization of the operation. /// For the Toffoli simulator *only*, this operation is self-adjoint. /// - public override Func<(Pauli, long, long, Qubit), QVoid> AdjointBody => Body; + public override Func<(Pauli, long, long, Qubit), QVoid> __AdjointBody__ => __Body__; /// /// The implementation of the controlled specialization of the operation. @@ -58,7 +58,7 @@ public RFrac(ToffoliSimulator m) : base(m) /// if the rotation is effectively an X gate and all of the control qubits /// are in the One state. /// - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledBody => (_args) => + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledBody__ => (_args) => { var (ctrls, (basis, num, den, q1)) = _args; @@ -80,7 +80,7 @@ public RFrac(ToffoliSimulator m) : base(m) /// The implementation of the controlled adjoint specialization of the operation. /// For the Toffoli simulator *only*, the controlled specialization is self-adjoint. /// - public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> ControlledAdjointBody => ControlledBody; + public override Func<(IQArray, (Pauli, long, long, Qubit)), QVoid> __ControlledAdjointBody__ => __ControlledBody__; } } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/Random.cs b/src/Simulation/Simulators/ToffoliSimulator/Random.cs index aa64984ec4e..f1de531f998 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Random.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Random.cs @@ -29,7 +29,7 @@ public ToffSimRandom(ToffoliSimulator m) : base(m) /// /// The implementation of the operation. /// - public override Func, Int64> Body => (probs) => + public override Func, Int64> __Body__ => (probs) => CommonUtils.SampleDistribution(probs, Simulator.RandomGenerator.NextDouble()); } } diff --git a/src/Simulation/Simulators/ToffoliSimulator/S.cs b/src/Simulation/Simulators/ToffoliSimulator/S.cs index c811f29a169..558fed2979c 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/S.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/S.cs @@ -25,7 +25,7 @@ public S(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation throws a run-time error. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { throw new NotImplementedException(); }; diff --git a/src/Simulation/Simulators/ToffoliSimulator/SWAP.cs b/src/Simulation/Simulators/ToffoliSimulator/SWAP.cs index 507e2f5be5d..863dbba83c1 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/SWAP.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/SWAP.cs @@ -29,7 +29,7 @@ public SWAP(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation swaps the states of the two qubits. /// - public override Func<(Qubit, Qubit), QVoid> Body => (args) => + public override Func<(Qubit, Qubit), QVoid> __Body__ => (args) => { var (q1, q2) = args; @@ -53,7 +53,7 @@ public SWAP(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation swaps the states of the /// target qubits if all of the control qubits are 1. /// - public override Func<(IQArray, (Qubit, Qubit)), QVoid> ControlledBody => (args) => + public override Func<(IQArray, (Qubit, Qubit)), QVoid> __ControlledBody__ => (args) => { var (ctrls, (q1, q2)) = args; diff --git a/src/Simulation/Simulators/ToffoliSimulator/T.cs b/src/Simulation/Simulators/ToffoliSimulator/T.cs index 88700ef40a0..4445d5fcc17 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/T.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/T.cs @@ -25,7 +25,7 @@ public T(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation throws a run-time error. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { throw new NotImplementedException(); }; diff --git a/src/Simulation/Simulators/ToffoliSimulator/X.cs b/src/Simulation/Simulators/ToffoliSimulator/X.cs index 097208a611e..e72494d21b0 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/X.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/X.cs @@ -28,7 +28,7 @@ public X(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation flips the target qubit. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { if (q1 == null) return QVoid.Instance; @@ -44,7 +44,7 @@ public X(ToffoliSimulator m) : base(m) /// For the Toffoli simulator, the implementation flips the target qubit /// if all of the control qubits are 1. /// - public override Func<(IQArray, Qubit), QVoid> ControlledBody => (args) => + public override Func<(IQArray, Qubit), QVoid> __ControlledBody__ => (args) => { var (ctrls, q) = args; if (q == null) return QVoid.Instance; diff --git a/src/Simulation/Simulators/ToffoliSimulator/Y.cs b/src/Simulation/Simulators/ToffoliSimulator/Y.cs index 235cdef2a8e..61f18ec3090 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Y.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Y.cs @@ -25,7 +25,7 @@ public Y(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation throws a run-time error. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { throw new NotImplementedException(); }; diff --git a/src/Simulation/Simulators/ToffoliSimulator/Z.cs b/src/Simulation/Simulators/ToffoliSimulator/Z.cs index 5b56c3f2e79..b0101beff19 100644 --- a/src/Simulation/Simulators/ToffoliSimulator/Z.cs +++ b/src/Simulation/Simulators/ToffoliSimulator/Z.cs @@ -25,7 +25,7 @@ public Z(ToffoliSimulator m) : base(m) /// The implementation of the operation. /// For the Toffoli simulator, the implementation throws a run-time error. /// - public override Func Body => (q1) => + public override Func __Body__ => (q1) => { throw new NotImplementedException(); }; From ca21706fa23e8c8304a2f4a43edf883cfe2016a9 Mon Sep 17 00:00:00 2001 From: "Stefan J. Wernli" Date: Mon, 31 Aug 2020 11:15:56 -0700 Subject: [PATCH 4/5] Adding scheduler enhancement for simulator performance boost (#361) This pulls in work done by @AniketDalvi, @dbwz8, and @swernli to enhance the native simulator with gate scheduling and clustering, leading to significant performance increases (originally part of the feature/simulator-enhancement branch). It also includes new tests that verify the performance, and a folder with benchmark projects to help with future performance comparisons. In our benchmarking, this led to between a 4x and 6x improvement, and could be significantly more depending on the host environment or circuit composition. * Merging dbw8/sim into Feature branch (#246) * Initial simulator fixes Includes generator scripts that create the kernels. * Adding AVX512 to simulator (#255) * Create a separate package for the entry point driver (#225) * Add EntryPointDriver to pack.ps1 * Rename Microsoft.Quantum.Simulation.Simulators to Microsoft.Quantum.Simulators * Rename EntryPointDriver to Microsoft.Quantum.EntryPointDriver * Rename Tests.EntryPointDriver to Microsoft.Quantum.EntryPointDriver.Tests * Add package description for EntryPointDriver * Remove EntryPointDriver from CsharpGeneration package * Update namespace in EntryPointDriver * Update namespace in EntryPointDriver.Tests * Update simulator test project filename * Update manifest.ps1 * Rename Microsoft.Quantum.EntryPointDriver.Tests to Tests.Microsoft.Quantum.EntryPointDriver * Restore name of simulators assembly * Add DelaySign.cs to EntryPointDriver * Use same assembly name as package name again * Update reference to simulators csproj * Update simulators nuspec * Update project reference to simulators * Update namespace names in test * Remove package reference to Q# compiler * Use IImmutableList instead of IReadOnlyList * Use ImmutableList.Create with params array * Make DriverSettings immutable * Make DriverSettings properties internal * Add PackageId to EntryPointDriver.csproj * Fix NUGET_VERSION issues (#251) * Fix assembly vs nuget version in pack.ps1. * Fix project vs package reference. * Feedback from @bettinaheim. * Added AVX512 * Add fma for AVX512 Co-authored-by: Sarah Marshall <33814365+samarsha@users.noreply.github.com> Co-authored-by: Chris Granade Co-authored-by: Dave Wecker * Initial wfn permute changes * changes to reorder to fix minor bugs * rebase with clean sim branch * Merging Linux simulator update from dbwz8/simDbg (#281) * Merging Linux simulator update from dbwz8/simDbg * Remove extra semicolon * Reordering wfn to work with existing flush/fuse logic * Added some comments * Combining Dave's scheduling logic with reordering * PR changes * PR changes * Creating cleaner scheduler branch * Creating cleaner scheduler branch * Creating cleaner scheduler branch * Creating cleaner scheduler branch * Creating cleaner scheduler branch * Creating cleaner scheduler branch * Creating cleaner scheduler branch * Creating cleaner scheduler branch * Creating cleaner scheduler branch * Creating cleaner scheduler branch * PR changes * Commiting further merge changes * New re-ordering routine in clean branch * New re-ordering routine in clean branch * PR change to avoid copying * PR changes * PR changes to undo character change in Haner * cleaning branch for PR * Adding heuristic for reorder * Base branch with @@@DBG+ marking debugging lines * . * . * Merged all 3 branches and got them working. * Working on cluster code. * Code appears to be working. Now starting on performance * About to run benchmarks * Linux vararg changes * Setting up for benchmarks * Optimizing scheduler * Fixed scheduling ordering bugs * . * . * reordered tests * Doing tests * more tests * All benchmarks run. This is a frozen version * Fixed problems with cluster ordering. Now passes all tests. * Made a clean version via #define DBWDBG * Sample local project * Added 4x4 supremecy test * Added top level benchmark (Sample) and tuned optimal number of threads/fuseSpan (6/6) * Made dbw_test work in the real builds * comment update * Working on dbw_test from product testing * . * Got rid of checked in executable * Added 5x6 test * Trying to get one e2e sample to work * e2e tests working on Linux * Moved all the benchmark code into one place. * Unifying supremacy tests * Cleaning up tree * . * . * Cleaning everything up * Stable version * Working on normalizing code * git rid of editor file * Adding environment variable controls * Added runTest.sh * More testing harness * . * Added Linux strlen for env vars * . * Herlper parseLog.py created * Put in better defaults for env var values. * Put in better env var defaults * Testing * Debugging * Working version * Put in limit on maxFusedSpan * Deleted unreferenced variables * Fixing qubit gate mapping and flush on release * Minor cleanup * Getting dbw_test to play nice with test.ps1 * Use backslash to support cross-platform filepath * Remove DBWDBG and temp logs. Rename supremacy to advantage * Updating files for pull request * Renaming supremacy files * Replaced supremXX with advantageXX * rm unused log files. Fixed a few compiler warns * Working on build problem * Fixing build, cleaning up last DBG statements * Fix wavefunction pop_back bug * Removing unused wavefunction utilities * Benchmark should not assume default 6 * Remove commented out Flush * Show native test output * Set failure thresholds for dbw_test benchmark * Adding AdvantageBenchmark readme Co-authored-by: Sarah Marshall <33814365+samarsha@users.noreply.github.com> Co-authored-by: Chris Granade Co-authored-by: Dave Wecker Co-authored-by: Aniket Dalvi Co-authored-by: Bettina Heim Co-authored-by: bettinaheim <34236215+bettinaheim@users.noreply.github.com> Co-authored-by: Andres Paz Co-authored-by: Dave Wecker --- .gitignore | 1 + AdvantageBenchmark/privateBuild/.editorconfig | 4 + AdvantageBenchmark/privateBuild/Program.cs | 71 ++ AdvantageBenchmark/privateBuild/Quantum.qs | 826 ++++++++++++++++ AdvantageBenchmark/privateBuild/advantage.sln | Bin 0 -> 10534 bytes AdvantageBenchmark/privateBuild/host.csproj | 11 + AdvantageBenchmark/privateBuild/parseLog.py | 50 + AdvantageBenchmark/privateBuild/runTest.ps1 | 9 + AdvantageBenchmark/privateBuild/runTest.sh | 14 + AdvantageBenchmark/readme.md | 15 + .../releasedBuild/advantage.sln | 48 + .../releasedBuild/host/host.csproj | 16 + .../releasedBuild/quantum/quantum.csproj | 11 + build/test.ps1 | 3 +- .../Microsoft.Quantum.CsharpGeneration.fsproj | 2 +- src/Simulation/Native/.gitignore | 8 + src/Simulation/Native/CMakeLists.txt | 2 +- src/Simulation/Native/CMakeSettings.json | 28 + src/Simulation/Native/Makefile | 364 +++++++ src/Simulation/Native/advantage_44_4.log | 354 +++++++ src/Simulation/Native/argmaxnrm2_test | Bin 0 -> 100600 bytes src/Simulation/Native/bititerator_test | Bin 0 -> 93176 bytes src/Simulation/Native/bitops_test | Bin 0 -> 17000 bytes src/Simulation/Native/capi_test | Bin 0 -> 68392 bytes src/Simulation/Native/codegen/codegen_fma.py | 434 +++++++++ .../Native/codegen/codegen_test.cpp | 127 +++ src/Simulation/Native/codegen/generate.ps1 | 21 + src/Simulation/Native/codegen/generate.sh | 28 + src/Simulation/Native/cpuid_test | Bin 0 -> 17784 bytes src/Simulation/Native/diagmatrix_test | Bin 0 -> 52752 bytes src/Simulation/Native/doCopy.ps1 | 13 + src/Simulation/Native/factory_test | Bin 0 -> 53824 bytes src/Simulation/Native/local_test | Bin 0 -> 1043224 bytes src/Simulation/Native/openmp_test | Bin 0 -> 18392 bytes src/Simulation/Native/parseLog.py | 113 +++ src/Simulation/Native/src/CMakeLists.txt | 12 +- src/Simulation/Native/src/Makefile | 422 +++++++++ src/Simulation/Native/src/config.hpp | 50 + .../Native/src/external/avx/kernel1.hpp | 6 +- .../Native/src/external/avx/kernel2.hpp | 4 +- .../Native/src/external/avx/kernel3.hpp | 4 +- .../Native/src/external/avx/kernel4.hpp | 4 +- .../Native/src/external/avx/kernel5.hpp | 4 +- .../Native/src/external/avx/kernel6.hpp | 4 +- .../Native/src/external/avx/kernel7.hpp | 4 +- .../Native/src/external/avx2/kernel1.hpp | 4 +- .../Native/src/external/avx2/kernel2.hpp | 4 +- .../Native/src/external/avx2/kernel3.hpp | 4 +- .../Native/src/external/avx2/kernel4.hpp | 4 +- .../Native/src/external/avx2/kernel5.hpp | 4 +- .../Native/src/external/avx2/kernel6.hpp | 4 +- .../Native/src/external/avx2/kernel7.hpp | 4 +- .../Native/src/external/avx512/kernel1.hpp | 85 ++ .../Native/src/external/avx512/kernel2.hpp | 98 ++ .../Native/src/external/avx512/kernel3.hpp | 128 +++ .../Native/src/external/avx512/kernel4.hpp | 207 ++++ .../Native/src/external/avx512/kernel5.hpp | 296 ++++++ .../Native/src/external/avx512/kernel6.hpp | 252 +++++ .../Native/src/external/avx512/kernel7.hpp | 417 +++++++++ .../Native/src/external/avx512/kernels.hpp | 31 + .../Native/src/external/cintrin.hpp | 10 +- src/Simulation/Native/src/external/fused.hpp | 136 ++- src/Simulation/Native/src/external/fusion.hpp | 91 +- .../Native/src/external/nointrin/kernel1.hpp | 30 +- .../Native/src/external/nointrin/kernel2.hpp | 4 +- .../Native/src/external/nointrin/kernel3.hpp | 4 +- .../Native/src/external/nointrin/kernel4.hpp | 4 +- .../Native/src/external/nointrin/kernel5.hpp | 4 +- .../Native/src/external/nointrin/kernel6.hpp | 4 +- .../Native/src/external/nointrin/kernel7.hpp | 4 +- .../Native/src/simulator/CMakeLists.txt | 3 + src/Simulation/Native/src/simulator/Makefile | 380 ++++++++ .../Native/src/simulator/Project.sln | 95 ++ src/Simulation/Native/src/simulator/capi.cpp | 2 +- .../Native/src/simulator/capi_test.cpp | 18 +- .../Native/src/simulator/dbw_test.cpp | 240 +++++ .../Native/src/simulator/factory.cpp | 22 +- src/Simulation/Native/src/simulator/gates.hpp | 885 +++++++++--------- .../Native/src/simulator/kernels.hpp | 2 - .../Native/src/simulator/local_test.cpp | 2 - .../Native/src/simulator/simulator.hpp | 1 + .../Native/src/simulator/simulatoravx512.cpp | 16 + .../Native/src/simulator/wavefunction.hpp | 243 ++++- src/Simulation/Native/src/util/Makefile | 518 ++++++++++ src/Simulation/Native/src/util/cpuid.hpp | 2 +- src/Simulation/Native/src/version.hpp | 11 + src/Simulation/Native/stats.xlsx | Bin 0 -> 1035540 bytes src/Simulation/Native/tinymatrix_test | Bin 0 -> 68360 bytes ....Simulation.QCTraceSimulatorRuntime.csproj | 2 +- .../Microsoft.Quantum.QSharp.Core.csproj | 2 +- .../HoneywellExe/HoneywellExe.csproj | 2 +- .../IntrinsicTests/IntrinsicTests.csproj | 2 +- .../TestProjects/IonQExe/IonQExe.csproj | 2 +- .../Library with Spaces.csproj | 2 +- .../TestProjects/Library1/Library1.csproj | 2 +- .../TestProjects/Library2/Library2.csproj | 2 +- .../TestProjects/QCIExe/QCIExe.csproj | 2 +- .../TestProjects/QsharpExe/QsharpExe.csproj | 2 +- .../TargetedExe/TargetedExe.csproj | 2 +- .../TestProjects/UnitTests/UnitTests.csproj | 2 +- .../Tests.Microsoft.Quantum.Simulators.csproj | 2 +- .../Microsoft.Quantum.Simulators.csproj | 2 +- 102 files changed, 6763 insertions(+), 625 deletions(-) create mode 100644 AdvantageBenchmark/privateBuild/.editorconfig create mode 100644 AdvantageBenchmark/privateBuild/Program.cs create mode 100644 AdvantageBenchmark/privateBuild/Quantum.qs create mode 100644 AdvantageBenchmark/privateBuild/advantage.sln create mode 100644 AdvantageBenchmark/privateBuild/host.csproj create mode 100644 AdvantageBenchmark/privateBuild/parseLog.py create mode 100644 AdvantageBenchmark/privateBuild/runTest.ps1 create mode 100755 AdvantageBenchmark/privateBuild/runTest.sh create mode 100644 AdvantageBenchmark/readme.md create mode 100644 AdvantageBenchmark/releasedBuild/advantage.sln create mode 100644 AdvantageBenchmark/releasedBuild/host/host.csproj create mode 100644 AdvantageBenchmark/releasedBuild/quantum/quantum.csproj create mode 100644 src/Simulation/Native/CMakeSettings.json create mode 100644 src/Simulation/Native/Makefile create mode 100644 src/Simulation/Native/advantage_44_4.log create mode 100644 src/Simulation/Native/argmaxnrm2_test create mode 100644 src/Simulation/Native/bititerator_test create mode 100644 src/Simulation/Native/bitops_test create mode 100644 src/Simulation/Native/capi_test create mode 100644 src/Simulation/Native/codegen/codegen_fma.py create mode 100644 src/Simulation/Native/codegen/codegen_test.cpp create mode 100644 src/Simulation/Native/codegen/generate.ps1 create mode 100644 src/Simulation/Native/codegen/generate.sh create mode 100644 src/Simulation/Native/cpuid_test create mode 100644 src/Simulation/Native/diagmatrix_test create mode 100644 src/Simulation/Native/doCopy.ps1 create mode 100644 src/Simulation/Native/factory_test create mode 100644 src/Simulation/Native/local_test create mode 100644 src/Simulation/Native/openmp_test create mode 100644 src/Simulation/Native/parseLog.py create mode 100644 src/Simulation/Native/src/Makefile create mode 100644 src/Simulation/Native/src/config.hpp create mode 100644 src/Simulation/Native/src/external/avx512/kernel1.hpp create mode 100644 src/Simulation/Native/src/external/avx512/kernel2.hpp create mode 100644 src/Simulation/Native/src/external/avx512/kernel3.hpp create mode 100644 src/Simulation/Native/src/external/avx512/kernel4.hpp create mode 100644 src/Simulation/Native/src/external/avx512/kernel5.hpp create mode 100644 src/Simulation/Native/src/external/avx512/kernel6.hpp create mode 100644 src/Simulation/Native/src/external/avx512/kernel7.hpp create mode 100644 src/Simulation/Native/src/external/avx512/kernels.hpp create mode 100644 src/Simulation/Native/src/simulator/Makefile create mode 100644 src/Simulation/Native/src/simulator/Project.sln create mode 100644 src/Simulation/Native/src/simulator/dbw_test.cpp create mode 100644 src/Simulation/Native/src/simulator/simulatoravx512.cpp create mode 100644 src/Simulation/Native/src/util/Makefile create mode 100644 src/Simulation/Native/src/version.hpp create mode 100644 src/Simulation/Native/stats.xlsx create mode 100644 src/Simulation/Native/tinymatrix_test diff --git a/.gitignore b/.gitignore index 354f05b9d0d..d3bbf343ae3 100644 --- a/.gitignore +++ b/.gitignore @@ -337,3 +337,4 @@ ASALocalRun/ .mfractor/ /src/Simulation/Simulators.Tests/TestProjects/QsharpExe/built /src/Simulation/Simulators.Tests/TestProjects/TargetedExe/built +dbw_test diff --git a/AdvantageBenchmark/privateBuild/.editorconfig b/AdvantageBenchmark/privateBuild/.editorconfig new file mode 100644 index 00000000000..6872d54293d --- /dev/null +++ b/AdvantageBenchmark/privateBuild/.editorconfig @@ -0,0 +1,4 @@ +[*.cs] + +# SA1025: Code should not contain multiple whitespace in a row +dotnet_diagnostic.SA1025.severity = none diff --git a/AdvantageBenchmark/privateBuild/Program.cs b/AdvantageBenchmark/privateBuild/Program.cs new file mode 100644 index 00000000000..5306ff2a683 --- /dev/null +++ b/AdvantageBenchmark/privateBuild/Program.cs @@ -0,0 +1,71 @@ +namespace quantum +{ + using System; + using System.Diagnostics; + using Microsoft.Quantum.Simulation.Simulators; + + class Program + { + public static void Main(string[] args) + { + Console.WriteLine($"CSV,test,loop,secs,gates,THREADS,FUSESPAN,FUSEDEPTH,Gates/sec"); + var envThr = System.Environment.GetEnvironmentVariable("OMP_NUM_THREADS"); + var envFus = System.Environment.GetEnvironmentVariable("QDK_SIM_FUSESPAN"); + var envDep = System.Environment.GetEnvironmentVariable("QDK_SIM_FUSEDEPTH"); + if (envThr == null || envThr.Length == 0) envThr = "Default"; + if (envFus == null || envFus.Length == 0) envFus = "Default"; + if (envDep == null || envDep.Length == 0) envDep = "99"; + + int tstMin = 0; + int tstMax = 3; + int loopCnt = 10; + + if (args.Length > 0) tstMin = Convert.ToInt32(args[0]); + if (args.Length > 1) tstMax = Convert.ToInt32(args[1]); + if (args.Length > 2) loopCnt = Convert.ToInt32(args[2]); + + using (var sim = new QuantumSimulator()) + { + long gates = 1; + TimeSpan ts; + double tSecs; + double gps; + string tstName = ""; + Stopwatch stopWatch = new Stopwatch(); + + for (int tst = tstMin; tst <= tstMax; tst++) + { + for (int loop = 0; loop < loopCnt; loop++) + { + stopWatch.Restart(); + switch (tst) + { + case 0: + gates = Dummy.Run(sim).Result; + tstName = "Dummy"; + break; + case 1: + gates = Advantage44.Run(sim).Result; + tstName = "4x4"; + break; + case 2: + gates = Advantage55.Run(sim).Result; + tstName = "5x5"; + break; + case 3: + gates = Advantage56.Run(sim).Result; + tstName = "5x6"; + break; + } + stopWatch.Stop(); + ts = stopWatch.Elapsed; + tSecs = ts.TotalSeconds; + gps = gates / tSecs; + + Console.WriteLine($"CSV,{tstName},{loop:D2},{tSecs:F2},{gates:E2},{envThr},{envFus},{envDep},{gps:E2}"); + } + } + } + } + } +} diff --git a/AdvantageBenchmark/privateBuild/Quantum.qs b/AdvantageBenchmark/privateBuild/Quantum.qs new file mode 100644 index 00000000000..c34c15a047f --- /dev/null +++ b/AdvantageBenchmark/privateBuild/Quantum.qs @@ -0,0 +1,826 @@ +namespace quantum { + open Microsoft.Quantum.Canon; + open Microsoft.Quantum.Intrinsic; + open Microsoft.Quantum.Diagnostics; + open Microsoft.Quantum.Measurement; + + operation CZ (a : Qubit, b : Qubit) : Unit + { + body (...) + { + H(b); + CNOT(a, b); + H(b); + } + + adjoint self; + } + + operation Dummy(): Int { + using (q = Qubit[2]) { + CZ(q[0],q[1]); + ResetAll(q); + } + return(1); + } + + operation Advantage44() : Int { + let loops = 200; + let gateCnt = (171+27*2) * loops; + using (q = Qubit[16]) { + for (loop in 0..(loops-1)) { + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + CZ(q[2],q[3]); + CZ(q[10],q[11]); + CZ(q[4],q[5]); + CZ(q[12],q[13]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + CZ(q[0],q[1]); + CZ(q[8],q[9]); + CZ(q[6],q[7]); + CZ(q[14],q[15]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + CZ(q[5],q[9]); + CZ(q[7],q[11]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + CZ(q[4],q[8]); + CZ(q[6],q[10]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + CZ(q[3],q[4]); + CZ(q[11],q[12]); + CZ(q[5],q[6]); + CZ(q[13],q[14]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + CZ(q[1],q[2]); + CZ(q[9],q[10]); + CZ(q[7],q[8]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + CZ(q[0],q[4]); + CZ(q[2],q[6]); + CZ(q[9],q[13]); + CZ(q[11],q[15]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + CZ(q[8],q[12]); + CZ(q[10],q[14]); + CZ(q[1],q[5]); + CZ(q[3],q[7]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + for (q1 in q) { let _ = M(q1); } + } + ResetAll(q); + } + return(gateCnt); + } + + operation Advantage55() : Int { + let loops = 1; + let gateCnt = (269+44*2) * loops; + using (q = Qubit[25]) { + for (loop in 0..(loops-1)) { + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + CZ(q[2],q[3]); + CZ(q[12],q[13]); + CZ(q[22],q[23]); + CZ(q[5],q[6]); + CZ(q[9],q[10]); + CZ(q[15],q[16]); + CZ(q[19],q[20]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + CZ(q[0],q[1]); + CZ(q[4],q[5]); + CZ(q[10],q[11]); + CZ(q[14],q[15]); + CZ(q[20],q[21]); + CZ(q[7],q[8]); + CZ(q[17],q[18]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + CZ(q[15],q[20]); + CZ(q[17],q[22]); + CZ(q[19],q[24]); + CZ(q[6],q[11]); + CZ(q[8],q[13]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + CZ(q[5],q[10]); + CZ(q[7],q[12]); + CZ(q[9],q[14]); + CZ(q[16],q[21]); + CZ(q[18],q[23]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + CZ(q[3],q[4]); + CZ(q[13],q[14]); + CZ(q[23],q[24]); + CZ(q[6],q[7]); + CZ(q[16],q[17]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + CZ(q[1],q[2]); + CZ(q[11],q[12]); + CZ(q[21],q[22]); + CZ(q[8],q[9]); + CZ(q[18],q[19]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + CZ(q[0],q[5]); + CZ(q[2],q[7]); + CZ(q[4],q[9]); + CZ(q[11],q[16]); + CZ(q[13],q[18]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + CZ(q[10],q[15]); + CZ(q[12],q[17]); + CZ(q[14],q[19]); + CZ(q[1],q[6]); + CZ(q[3],q[8]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + for (q1 in q) { let _ = M(q1); } + } + ResetAll(q); + } + return(gateCnt); + } + + operation Advantage56() : Int { + let loops = 1; + let gateCnt = (323+53*2) * loops; + using (q = Qubit[30]) { + for (loop in 0..(loops-1)) { + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + H(q[25]); + H(q[26]); + H(q[27]); + H(q[28]); + H(q[29]); + CZ(q[2],q[3]); + CZ(q[14],q[15]); + CZ(q[26],q[27]); + CZ(q[6],q[7]); + CZ(q[10],q[11]); + CZ(q[18],q[19]); + CZ(q[22],q[23]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + H(q[25]); + H(q[26]); + H(q[27]); + H(q[28]); + H(q[29]); + CZ(q[0],q[1]); + CZ(q[4],q[5]); + CZ(q[12],q[13]); + CZ(q[16],q[17]); + CZ(q[24],q[25]); + CZ(q[28],q[29]); + CZ(q[8],q[9]); + CZ(q[20],q[21]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + H(q[25]); + H(q[26]); + H(q[27]); + H(q[28]); + H(q[29]); + CZ(q[18],q[24]); + CZ(q[20],q[26]); + CZ(q[22],q[28]); + CZ(q[7],q[13]); + CZ(q[9],q[15]); + CZ(q[11],q[17]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + H(q[25]); + H(q[26]); + H(q[27]); + H(q[28]); + H(q[29]); + CZ(q[6],q[12]); + CZ(q[8],q[14]); + CZ(q[10],q[16]); + CZ(q[19],q[25]); + CZ(q[21],q[27]); + CZ(q[23],q[29]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + H(q[25]); + H(q[26]); + H(q[27]); + H(q[28]); + H(q[29]); + CZ(q[3],q[4]); + CZ(q[15],q[16]); + CZ(q[27],q[28]); + CZ(q[7],q[8]); + CZ(q[11],q[12]); + CZ(q[19],q[20]); + CZ(q[23],q[24]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + H(q[25]); + H(q[26]); + H(q[27]); + H(q[28]); + H(q[29]); + CZ(q[1],q[2]); + CZ(q[5],q[6]); + CZ(q[13],q[14]); + CZ(q[17],q[18]); + CZ(q[25],q[26]); + CZ(q[9],q[10]); + CZ(q[21],q[22]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + H(q[25]); + H(q[26]); + H(q[27]); + H(q[28]); + H(q[29]); + CZ(q[0],q[6]); + CZ(q[2],q[8]); + CZ(q[4],q[10]); + CZ(q[13],q[19]); + CZ(q[15],q[21]); + CZ(q[17],q[23]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + H(q[25]); + H(q[26]); + H(q[27]); + H(q[28]); + H(q[29]); + CZ(q[12],q[18]); + CZ(q[14],q[20]); + CZ(q[16],q[22]); + CZ(q[1],q[7]); + CZ(q[3],q[9]); + CZ(q[5],q[11]); + H(q[0]); + H(q[1]); + H(q[2]); + H(q[3]); + H(q[4]); + H(q[5]); + H(q[6]); + H(q[7]); + H(q[8]); + H(q[9]); + H(q[10]); + H(q[11]); + H(q[12]); + H(q[13]); + H(q[14]); + H(q[15]); + H(q[16]); + H(q[17]); + H(q[18]); + H(q[19]); + H(q[20]); + H(q[21]); + H(q[22]); + H(q[23]); + H(q[24]); + H(q[25]); + H(q[26]); + H(q[27]); + H(q[28]); + H(q[29]); + for (q1 in q) { let _ = M(q1); } + } + ResetAll(q); + } + return(gateCnt); + } + +} diff --git a/AdvantageBenchmark/privateBuild/advantage.sln b/AdvantageBenchmark/privateBuild/advantage.sln new file mode 100644 index 0000000000000000000000000000000000000000..91b39bc2b8745f0b74bd552c86f2c38e3267615f GIT binary patch literal 10534 zcmdU#+i&7l5XR4ID)oO@r7x*eED{KThdyv|ww2l{mv;M-mt5FQwggroS#_1}zuxxu z&A~AS+i}3SU0J}n`teKqM zvU&4!=CLh~|DN@CUCZtmxCVD^Qg2Y#w_i)rkNMmp(QN|F^DEb9D>qqrk2O2CvLrh) zeZB|(C3@I#+wPIxu8rAcbOW8$sI~Y#pwy()a&1aI7rK4wwb}TP{w{Tm+vjSz&#d+> zl1aL4cWu1gQ@MtKElKp4Cn40XnK6cV7fMj?%W@Y{Q%Y*8+UIb9;l6& zdG@q+z>KMlo4EH+calT{aEa4CGPMkI8!3doNn6jP?9p;aSrRpopush;IelcU(;|ta zwGeDq3%aXTo6EisxMTAJ=};CD;0@kdMrPyQ2Lhy>(0gkhk;cUoEnlM3wAp8g*=H#p zxeAIb*6PMv$UQq|PvR=X#_GnJ%CgNiEn=`{zX!Cn7*VIUO?w~yzAV;GU{4&1yCE!! zuRBVsaiy8Xc*?qO7CT}^zSPG{nid-lsI}3zc#{9C)Whorv&f--#Wiu$F~17wUxl3( zE9kx1)amVmO)*Ny_W6zcIgU_8e5y};xyGOFh%&Fy?U>Kq zoPVvtQvQm?*n19Fz%`mRx!4dz?P8p!BgkT@ZQ4GB zl{UVpQ<>tSVymK`BA!_4(J%k4F`~;zo#o`aItevkDqP8D|GUV0V&}(^`$WwB-MsVz zF<8;}<(`L8a$U zznkq4kCVt_+>vy8791|Dq9?E|u7Dop0PgMNe98Bi)6WghmHt^YyWg*n_H>s-nD-3$ z8l6wv1!uyMJu7Z;PK;ZU>nuyEeIr8qU{Nm8$`Pw5SMk=Q5{F4$Eb1)M#sFrDl7&UG zmYFLE@X9RR2XNsn{v%`huo_us_MGZ5_OKhDV^J>5dr#H)@+~V{kNNX9qs#nz2E@>1 zedf=Jah8`2*_>Tgg)vQ!MeMRneEGbsZuLO^-$FvP^vW zysdASRboxkXTE%~T`D_SPG)O!c3Bn1G(8rv%QErh^R~WSR*5xDpZW5|c3EDIZF6>6 z6~;6@7O~4R@#XWjzFk&{HBF!S^2K&pURH5)c3Bn1G(8rv%QErh^R~WSR*5xDpZW5| zc3EELbaQrD6~;6@7O~4R@#XWjzFk&{HBF!S^2K&pUcPv9c3Bn1G(8rv%QErh^R~WS zR*5xDpZW56yY!js>6UHvm-3W5vEU+P`Jr$iopK6{>@5njaq+H!bTGyISCeop_ + + + + + Exe + netcoreapp3.1 + false + + + diff --git a/AdvantageBenchmark/privateBuild/parseLog.py b/AdvantageBenchmark/privateBuild/parseLog.py new file mode 100644 index 00000000000..fbf1f395fe0 --- /dev/null +++ b/AdvantageBenchmark/privateBuild/parseLog.py @@ -0,0 +1,50 @@ +import re +import sys +import numpy as np +from collections import namedtuple + +info = namedtuple('Info','test loop secs gates threads span depth gps') +logName = sys.argv[1] +reHead = re.compile(r"^CSV,test,") +reInfo = re.compile(r'^CSV,([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,\s]+)') +fp = open(logName,'r') +infos = [] + +print('test,secs,gates,threads,span,depth,gps') + +def dumpGpss(): + global infos + if len(infos) > 0: + gpss = [float(i.gps) for i in infos] + gpsMed = np.median(gpss) + cnt = 0.0 + tot = 0.0 + #for gps in gpss: + # if gps > gpsMed/2.0 and gps < gpsMed*1.5: + # cnt += 1.0 + # tot += gps + #if cnt > 0: gps = tot/cnt + #else: gps = np.average(gpss) + gps = np.max(gpss) + + idx = int(len(infos)/2) + itm = infos[idx] + print(f"{itm.test},{itm.secs},{itm.gates},{itm.threads},{itm.span},{itm.depth},{gps:.1f}") + infos = [] + +while True: + inp = fp.readline() + if inp == "": + dumpGpss() + break + found = reHead.search(inp) + if found: + dumpGpss() + continue + found = reInfo.search(inp) + if found: + infos.append(info(found.group(1),found.group(2),found.group(3),found.group(4), + found.group(5),found.group(6),found.group(7),found.group(8))) + continue + +fp.close() diff --git a/AdvantageBenchmark/privateBuild/runTest.ps1 b/AdvantageBenchmark/privateBuild/runTest.ps1 new file mode 100644 index 00000000000..12fe3870497 --- /dev/null +++ b/AdvantageBenchmark/privateBuild/runTest.ps1 @@ -0,0 +1,9 @@ +for ($tst=1; $tst -le 2; $tst++) { + for ($thrd=4; $thrd -ge 1; $thrd--) { + for ($span=4; $span -ge 0; $span--) { + $env:OMP_NUM_THREADS = $thrd + $env:QDK_SIM_FUSESPAN = $span + .\bin\Release\netcoreapp3.1\host.exe $tst $tst 5 + } + } +} diff --git a/AdvantageBenchmark/privateBuild/runTest.sh b/AdvantageBenchmark/privateBuild/runTest.sh new file mode 100755 index 00000000000..c8dc2155faa --- /dev/null +++ b/AdvantageBenchmark/privateBuild/runTest.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +for tst in {1..3} +do + for thrd in {20..2..-2} + do + for span in {7..0..-1} + do + export OMP_NUM_THREADS=$thrd + export QDK_SIM_FUSESPAN=$span + ./bin/Release/netcoreapp3.1/host $tst $tst 5 + done + done +done diff --git a/AdvantageBenchmark/readme.md b/AdvantageBenchmark/readme.md new file mode 100644 index 00000000000..33242bd4fec --- /dev/null +++ b/AdvantageBenchmark/readme.md @@ -0,0 +1,15 @@ +# Advantage Benchmark + +## Purpose + +This benchmark is intended to provide an easy way to verify the performance characteristcs of a given release build of the QDK simulator vs the current tree. The releaseBuild folder contains projects that will build the quantum advantage Q# program with a QDK from a nuget source and verify the gates-per-second execution of that program. The privateBuild folder compiles the same Q# program with the runtime in the curent source tree instead. + +## Executing the benchmark + +To execute the benchmark, compile each version of advantage.sln using `dotnet build .\advantage.sln -c Release` from their respective folders. Then the executable to run will be either `bin\Release\netcoreapp3.1\host.exe` in the privateBuild folder or `host\bin\Release\netcoreapp3.1\host.exe` in the releaseBuild folder. This executable takes parameters describing which test circuits to execute and how many loops to perform as integer arguments, such that `host.exe 1 1 5` will run 5 loops of test 1 and `host.exe 0 3 100` will run 100 loops of tests 0 through 3. Check the contents of `privateBuild\Program.cs` to see the tests that correspond to each identifier; for most machines, test 1 aka advantage 4x4 circuit is the best choice for benchmarking. + +The benchmark can also be run via runTest.ps1 or runTest.sh, which performs a sweep across configured environment variables that adjust the number of threads used and gates fused in simulating the circuit. See the definition of the script used on your platform to understand how it configures the `OMP_NUM_THREADS` and `QDK_SIM_FUSESPAN` environment variables. + +## Collecting results + +The output of `host.exe` is a table showing the gates-per-second along with other identifiying information for the run, output at intervals during the looped execution. When driven via runTest.ps1/.sh, the output will be a larger table of all the results for the various combinations of threads and fusion spans. To help collect these results into a meaningful table, the parseLog.py script will convert the output from a runTest execution into a CSV file with the single highest gates-per-second observed for a given thread/fuse-span combination. This can then be loaded into a spreadsheet program for easier graphing or other visualization. diff --git a/AdvantageBenchmark/releasedBuild/advantage.sln b/AdvantageBenchmark/releasedBuild/advantage.sln new file mode 100644 index 00000000000..4571a900f07 --- /dev/null +++ b/AdvantageBenchmark/releasedBuild/advantage.sln @@ -0,0 +1,48 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26124.0 +MinimumVisualStudioVersion = 15.0.26124.0 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "quantum", "quantum\quantum.csproj", "{576A1AEE-9051-458D-B3E8-EFE3F64235B0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "host", "host\host.csproj", "{642AEC30-F51D-4547-A1FD-A8AC759A75A5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Debug|x64.ActiveCfg = Debug|Any CPU + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Debug|x64.Build.0 = Debug|Any CPU + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Debug|x86.ActiveCfg = Debug|Any CPU + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Debug|x86.Build.0 = Debug|Any CPU + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Release|Any CPU.Build.0 = Release|Any CPU + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Release|x64.ActiveCfg = Release|Any CPU + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Release|x64.Build.0 = Release|Any CPU + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Release|x86.ActiveCfg = Release|Any CPU + {576A1AEE-9051-458D-B3E8-EFE3F64235B0}.Release|x86.Build.0 = Release|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Debug|x64.ActiveCfg = Debug|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Debug|x64.Build.0 = Debug|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Debug|x86.ActiveCfg = Debug|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Debug|x86.Build.0 = Debug|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Release|Any CPU.Build.0 = Release|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Release|x64.ActiveCfg = Release|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Release|x64.Build.0 = Release|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Release|x86.ActiveCfg = Release|Any CPU + {642AEC30-F51D-4547-A1FD-A8AC759A75A5}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/AdvantageBenchmark/releasedBuild/host/host.csproj b/AdvantageBenchmark/releasedBuild/host/host.csproj new file mode 100644 index 00000000000..8b145ec5eef --- /dev/null +++ b/AdvantageBenchmark/releasedBuild/host/host.csproj @@ -0,0 +1,16 @@ + + + + + + + + + + + + Exe + netcoreapp3.1 + + + diff --git a/AdvantageBenchmark/releasedBuild/quantum/quantum.csproj b/AdvantageBenchmark/releasedBuild/quantum/quantum.csproj new file mode 100644 index 00000000000..18667e533f6 --- /dev/null +++ b/AdvantageBenchmark/releasedBuild/quantum/quantum.csproj @@ -0,0 +1,11 @@ + + + + + + + + netstandard2.1 + + + diff --git a/build/test.ps1 b/build/test.ps1 index 09e0e49fb9f..e88962d2a17 100644 --- a/build/test.ps1 +++ b/build/test.ps1 @@ -8,7 +8,8 @@ if ($Env:ENABLE_NATIVE -ne "false") { Write-Host "##[info]Test Native simulator" pushd (Join-Path $PSScriptRoot "../src/Simulation/Native/build") cmake --build . --config $Env:BUILD_CONFIGURATION - ctest -C $Env:BUILD_CONFIGURATION + cp ../advantage_44_4.log . + ctest -C $Env:BUILD_CONFIGURATION --verbose if ($LastExitCode -ne 0) { Write-Host "##vso[task.logissue type=error;]Failed to test Native Simulator" $script:all_ok = $False diff --git a/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj b/src/Simulation/CsharpGeneration/Microsoft.Quantum.CsharpGeneration.fsproj index 75496178ba5..b47f0af63be 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/Native/.gitignore b/src/Simulation/Native/.gitignore index 06c6a304f20..8f1fc6e9a01 100644 --- a/src/Simulation/Native/.gitignore +++ b/src/Simulation/Native/.gitignore @@ -2,3 +2,11 @@ build /.vs /vs2017 +*.csv +foo* +*.filters +*.cmake +*.vcxproj +CMakeFiles/ +CMakeCache.txt +*.so diff --git a/src/Simulation/Native/CMakeLists.txt b/src/Simulation/Native/CMakeLists.txt index b9c22c575f7..c56b6f95a3e 100644 --- a/src/Simulation/Native/CMakeLists.txt +++ b/src/Simulation/Native/CMakeLists.txt @@ -24,7 +24,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS) # Configuration options (choose one to turn on) -option(BUILD_SHARED_LIBS "Build shared libraries" OFF) +option(BUILD_SHARED_LIBS "Build shared libraries" ON) option(ENABLE_OPENMP "Enable OpenMP Parallelization" ON) option(USE_SINGLE_PRECISION "Use single-precision floating point operations" OFF) option(HAVE_INTRINSICS "Have AVX intrinsics" OFF) diff --git a/src/Simulation/Native/CMakeSettings.json b/src/Simulation/Native/CMakeSettings.json new file mode 100644 index 00000000000..ee45e8257c1 --- /dev/null +++ b/src/Simulation/Native/CMakeSettings.json @@ -0,0 +1,28 @@ +{ + "configurations": [ + { + "name": "x64-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ "msvc_x64_x64" ], + "buildRoot": "${projectDir}\\out\\build\\${name}", + "installRoot": "${projectDir}\\out\\install\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "", + "ctestCommandArgs": "", + "variables": [] + }, + { + "name": "x64-Release", + "generator": "Ninja", + "configurationType": "RelWithDebInfo", + "buildRoot": "${projectDir}\\out\\build\\${name}", + "installRoot": "${projectDir}\\out\\install\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "", + "ctestCommandArgs": "", + "inheritEnvironments": [ "msvc_x64_x64" ], + "variables": [] + } + ] +} \ No newline at end of file diff --git a/src/Simulation/Native/Makefile b/src/Simulation/Native/Makefile new file mode 100644 index 00000000000..bedf9d3e28f --- /dev/null +++ b/src/Simulation/Native/Makefile @@ -0,0 +1,364 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"libraries\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/CMakeFiles /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/CMakeFiles/progress.marks + $(MAKE) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named Microsoft.Quantum.Simulator.Runtime + +# Build rule for target. +Microsoft.Quantum.Simulator.Runtime: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 Microsoft.Quantum.Simulator.Runtime +.PHONY : Microsoft.Quantum.Simulator.Runtime + +# fast build rule for target. +Microsoft.Quantum.Simulator.Runtime/fast: + $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build +.PHONY : Microsoft.Quantum.Simulator.Runtime/fast + +#============================================================================= +# Target rules for targets named tinymatrix_test + +# Build rule for target. +tinymatrix_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 tinymatrix_test +.PHONY : tinymatrix_test + +# fast build rule for target. +tinymatrix_test/fast: + $(MAKE) -f src/util/CMakeFiles/tinymatrix_test.dir/build.make src/util/CMakeFiles/tinymatrix_test.dir/build +.PHONY : tinymatrix_test/fast + +#============================================================================= +# Target rules for targets named bititerator_test + +# Build rule for target. +bititerator_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 bititerator_test +.PHONY : bititerator_test + +# fast build rule for target. +bititerator_test/fast: + $(MAKE) -f src/util/CMakeFiles/bititerator_test.dir/build.make src/util/CMakeFiles/bititerator_test.dir/build +.PHONY : bititerator_test/fast + +#============================================================================= +# Target rules for targets named bitops_test + +# Build rule for target. +bitops_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 bitops_test +.PHONY : bitops_test + +# fast build rule for target. +bitops_test/fast: + $(MAKE) -f src/util/CMakeFiles/bitops_test.dir/build.make src/util/CMakeFiles/bitops_test.dir/build +.PHONY : bitops_test/fast + +#============================================================================= +# Target rules for targets named openmp_test + +# Build rule for target. +openmp_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 openmp_test +.PHONY : openmp_test + +# fast build rule for target. +openmp_test/fast: + $(MAKE) -f src/util/CMakeFiles/openmp_test.dir/build.make src/util/CMakeFiles/openmp_test.dir/build +.PHONY : openmp_test/fast + +#============================================================================= +# Target rules for targets named cpuid_test + +# Build rule for target. +cpuid_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 cpuid_test +.PHONY : cpuid_test + +# fast build rule for target. +cpuid_test/fast: + $(MAKE) -f src/util/CMakeFiles/cpuid_test.dir/build.make src/util/CMakeFiles/cpuid_test.dir/build +.PHONY : cpuid_test/fast + +#============================================================================= +# Target rules for targets named argmaxnrm2_test + +# Build rule for target. +argmaxnrm2_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 argmaxnrm2_test +.PHONY : argmaxnrm2_test + +# fast build rule for target. +argmaxnrm2_test/fast: + $(MAKE) -f src/util/CMakeFiles/argmaxnrm2_test.dir/build.make src/util/CMakeFiles/argmaxnrm2_test.dir/build +.PHONY : argmaxnrm2_test/fast + +#============================================================================= +# Target rules for targets named diagmatrix_test + +# Build rule for target. +diagmatrix_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 diagmatrix_test +.PHONY : diagmatrix_test + +# fast build rule for target. +diagmatrix_test/fast: + $(MAKE) -f src/util/CMakeFiles/diagmatrix_test.dir/build.make src/util/CMakeFiles/diagmatrix_test.dir/build +.PHONY : diagmatrix_test/fast + +#============================================================================= +# Target rules for targets named dbw_test + +# Build rule for target. +dbw_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 dbw_test +.PHONY : dbw_test + +# fast build rule for target. +dbw_test/fast: + $(MAKE) -f src/simulator/CMakeFiles/dbw_test.dir/build.make src/simulator/CMakeFiles/dbw_test.dir/build +.PHONY : dbw_test/fast + +#============================================================================= +# Target rules for targets named capi_test + +# Build rule for target. +capi_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 capi_test +.PHONY : capi_test + +# fast build rule for target. +capi_test/fast: + $(MAKE) -f src/simulator/CMakeFiles/capi_test.dir/build.make src/simulator/CMakeFiles/capi_test.dir/build +.PHONY : capi_test/fast + +#============================================================================= +# Target rules for targets named factory_test + +# Build rule for target. +factory_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 factory_test +.PHONY : factory_test + +# fast build rule for target. +factory_test/fast: + $(MAKE) -f src/simulator/CMakeFiles/factory_test.dir/build.make src/simulator/CMakeFiles/factory_test.dir/build +.PHONY : factory_test/fast + +#============================================================================= +# Target rules for targets named local_test + +# Build rule for target. +local_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 local_test +.PHONY : local_test + +# fast build rule for target. +local_test/fast: + $(MAKE) -f src/simulator/CMakeFiles/local_test.dir/build.make src/simulator/CMakeFiles/local_test.dir/build +.PHONY : local_test/fast + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... install/local" + @echo "... install" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... test" + @echo "... Microsoft.Quantum.Simulator.Runtime" + @echo "... tinymatrix_test" + @echo "... bititerator_test" + @echo "... bitops_test" + @echo "... openmp_test" + @echo "... cpuid_test" + @echo "... argmaxnrm2_test" + @echo "... diagmatrix_test" + @echo "... dbw_test" + @echo "... capi_test" + @echo "... factory_test" + @echo "... local_test" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/src/Simulation/Native/advantage_44_4.log b/src/Simulation/Native/advantage_44_4.log new file mode 100644 index 00000000000..fc883d684bd --- /dev/null +++ b/src/Simulation/Native/advantage_44_4.log @@ -0,0 +1,354 @@ +=== Original: + 0: H[0] + 1: H[1] + 2: H[2] + 3: H[3] + 4: H[4] + 5: H[5] + 6: H[6] + 7: H[7] + 8: H[8] + 9: H[9] +10: H[10] +11: H[11] +12: H[12] +13: H[13] +14: H[14] +15: H[15] +16: CZ[2, 3] +17: CZ[10, 11] +18: CZ[4, 5] +19: CZ[12, 13] +20: H[0] +21: H[1] +22: H[2] +23: H[3] +24: H[4] +25: H[5] +26: H[6] +27: H[7] +28: H[8] +29: H[9] +30: H[10] +31: H[11] +32: H[12] +33: H[13] +34: H[14] +35: H[15] +36: CZ[0, 1] +37: CZ[8, 9] +38: CZ[6, 7] +39: CZ[14, 15] +40: H[0] +41: H[1] +42: H[2] +43: H[3] +44: H[4] +45: H[5] +46: H[6] +47: H[7] +48: H[8] +49: H[9] +50: H[10] +51: H[11] +52: H[12] +53: H[13] +54: H[14] +55: H[15] +56: CZ[5, 9] +57: CZ[7, 11] +58: H[0] +59: H[1] +60: H[2] +61: H[3] +62: H[4] +63: H[5] +64: H[6] +65: H[7] +66: H[8] +67: H[9] +68: H[10] +69: H[11] +70: H[12] +71: H[13] +72: H[14] +73: H[15] +74: CZ[4, 8] +75: CZ[6, 10] +76: H[0] +77: H[1] +78: H[2] +79: H[3] +80: H[4] +81: H[5] +82: H[6] +83: H[7] +84: H[8] +85: H[9] +86: H[10] +87: H[11] +88: H[12] +89: H[13] +90: H[14] +91: H[15] +92: CZ[3, 4] +93: CZ[11, 12] +94: CZ[5, 6] +95: CZ[13, 14] +96: H[0] +97: H[1] +98: H[2] +99: H[3] +100: H[4] +101: H[5] +102: H[6] +103: H[7] +104: H[8] +105: H[9] +106: H[10] +107: H[11] +108: H[12] +109: H[13] +110: H[14] +111: H[15] +112: CZ[1, 2] +113: CZ[9, 10] +114: CZ[7, 8] +115: H[0] +116: H[1] +117: H[2] +118: H[3] +119: H[4] +120: H[5] +121: H[6] +122: H[7] +123: H[8] +124: H[9] +125: H[10] +126: H[11] +127: H[12] +128: H[13] +129: H[14] +130: H[15] +131: CZ[0, 4] +132: CZ[2, 6] +133: CZ[9, 13] +134: CZ[11, 15] +135: H[0] +136: H[1] +137: H[2] +138: H[3] +139: H[4] +140: H[5] +141: H[6] +142: H[7] +143: H[8] +144: H[9] +145: H[10] +146: H[11] +147: H[12] +148: H[13] +149: H[14] +150: H[15] +151: CZ[8, 12] +152: CZ[10, 14] +153: CZ[1, 5] +154: CZ[3, 7] +155: H[0] +156: H[1] +157: H[2] +158: H[3] +159: H[4] +160: H[5] +161: H[6] +162: H[7] +163: H[8] +164: H[9] +165: H[10] +166: H[11] +167: H[12] +168: H[13] +169: H[14] +170: H[15] +=== Clusters (cost= 5.034): +==== cluster[ 0]: depth=26 width=4 + 0: H[8] + 1: H[9] + 2: H[4] + 3: H[5] + 4: H[8] + 5: H[9] + 6: CZ[4, 5] + 7: H[5] + 8: CZ[8, 9] + 9: H[9] +10: H[4] +11: H[5] +12: H[8] +13: CZ[5, 9] +14: H[4] +15: H[5] +16: H[8] +17: H[9] +18: H[4] +19: H[5] +20: CZ[4, 8] +21: H[9] +22: H[4] +23: H[8] +24: H[9] +25: H[8] +==== cluster[ 1]: depth=26 width=4 +26: H[10] +27: H[11] +28: H[6] +29: H[7] +30: CZ[10, 11] +31: H[11] +32: H[6] +33: H[7] +34: H[10] +35: H[11] +36: CZ[6, 7] +37: H[7] +38: H[10] +39: CZ[7, 11] +40: H[6] +41: H[7] +42: H[10] +43: H[11] +44: H[6] +45: H[7] +46: CZ[6, 10] +47: H[11] +48: H[6] +49: H[7] +50: H[10] +51: H[10] +==== cluster[ 2]: depth=30 width=4 +52: H[0] +53: H[1] +54: H[2] +55: H[3] +56: H[0] +57: H[1] +58: CZ[2, 3] +59: H[3] +60: CZ[0, 1] +61: H[1] +62: H[2] +63: H[3] +64: H[0] +65: H[1] +66: H[2] +67: H[3] +68: H[0] +69: H[1] +70: H[2] +71: H[3] +72: H[0] +73: H[1] +74: H[2] +75: H[0] +76: H[2] +77: H[0] +78: CZ[1, 2] +79: H[2] +80: H[1] +81: H[1] +==== cluster[ 3]: depth=30 width=4 +82: H[12] +83: H[13] +84: H[14] +85: H[15] +86: CZ[12, 13] +87: H[13] +88: H[14] +89: H[15] +90: H[12] +91: H[13] +92: CZ[14, 15] +93: H[15] +94: H[12] +95: H[13] +96: H[14] +97: H[15] +98: H[12] +99: H[13] +100: H[14] +101: H[15] +102: H[12] +103: H[14] +104: H[15] +105: CZ[13, 14] +106: H[14] +107: H[15] +108: H[13] +109: H[14] +110: H[13] +111: H[14] +==== cluster[ 4]: depth=14 width=4 +112: CZ[7, 8] +113: CZ[3, 4] +114: H[4] +115: H[7] +116: H[8] +117: H[3] +118: H[4] +119: H[7] +120: H[8] +121: H[3] +122: H[3] +123: CZ[3, 7] +124: H[3] +125: H[7] +==== cluster[ 5]: depth=11 width=3 +126: CZ[11, 12] +127: H[12] +128: H[11] +129: H[12] +130: H[11] +131: H[12] +132: CZ[11, 15] +133: H[11] +134: H[11] +135: H[15] +136: H[15] +==== cluster[ 6]: depth=11 width=3 +137: CZ[5, 6] +138: H[6] +139: H[5] +140: H[6] +141: CZ[2, 6] +142: H[5] +143: H[6] +144: H[2] +145: H[5] +146: H[6] +147: H[2] +==== cluster[ 7]: depth= 7 width=3 +148: CZ[9, 10] +149: H[10] +150: H[9] +151: H[10] +152: CZ[10, 14] +153: H[10] +154: H[14] +==== cluster[ 8]: depth= 8 width=4 +155: CZ[0, 4] +156: CZ[8, 12] +157: H[4] +158: H[12] +159: H[0] +160: H[8] +161: H[4] +162: H[0] +==== cluster[ 9]: depth= 8 width=4 +163: CZ[9, 13] +164: CZ[1, 5] +165: H[13] +166: H[1] +167: H[9] +168: H[5] +169: H[13] +170: H[9] diff --git a/src/Simulation/Native/argmaxnrm2_test b/src/Simulation/Native/argmaxnrm2_test new file mode 100644 index 0000000000000000000000000000000000000000..caad0d10c765ed58097312afc05954eac6f175a8 GIT binary patch literal 100600 zcmeEv3w#q*_Wz_02nbA7)T*cvqqe?i5wL{Kt<4C8ek03 zu7ct!%DSTNZ*|305f!xMReY@lQBhW@2$E0`M1+b;{@-)&on(@xh|2zd|Ig>o==98e zoqO&%=bm%!ojc(ktNrRYgF(`+cxjkKsg_%Ljztu-yTWxWQijx1vPdTBJgE!H6L4$w zqT%K^6ynmLktd~iKx&sv4>4dLo-Jum>zyFA>+EVD$4fLQCGj-1OQgq1^as}@_BRCA z*6_3j_3c=Ht)hMuOzF?_HK=b#yh%ETQ=W8r6cpo5V?>(a?l4x=ie^Bt^FyFWN=J98q6`)CXPpI~>Kor@uVWZn>Z1iH4VT<@p-a z`nw+Oh%d)_33f_jM1P&hVV~fq2Dy|Zsb6{7t%C;iD=)shysXk$cX?gLpvwmhxT3b| z3NCP>i~1n(jkA5C)mhj(Oaac{EUw*AD)q%*SMd(tY&Amz=yKuSokSfmE2tEu~0 zr%MSgL*Kc1InqW;oT=OSaWE?eOQS`4#n1rWt$}`cNY@eqUa3nD!1F-dgK%f!9)g>$ zp}2>!r|=((cpNEU4&c?eM~O56MLgR8ufd%w(i*rH4|%x9;LaDBHwbv6fa3xGB%W^q zoPc|xNZ%r$9!x^wR*_K*Sc-cx?kTv-aNmaecHHH-D{#|Q#X;zAHJ6(fAZru0ao`st(HwV&ez&W_*;#P6b!|lWU0Pg6k0U3YRWj=`Khj1^z zy-?);1@JN4Pl)uBfQ!ZRQ-Dv4=Ouv8;(iYI-*G>W`$gPzy~IJp-&c@&756gSuZfc7 zfNzNBHvw1RehYUK?p3%~<6eim88=<)aleoI1Kc0t)?XWu_()`I67XZdPsB5UPsQ_Q zz|V1S5$S?Yzv$OxlsfpNyr;f9_b+#Ux%1$t$A;}5^sOyx^pO1zKJdX$)rd_P_(CJ$H_`J#t>r(t6v)7k53ydPn@G%88qX%g@d)c&fd+*SRB}8u-^OZ>2b^ zZ@h0t&zy6ZACQ)*VmGysv8G(6c{(aNk8OSKVLJR`+9-^OBPepLFiOzgYCQT;JnW zPd(E2k+z%fI_JWnX=7&J@Ilf)2cGW!xX-YZ=Cf|hIrH>QKlFUH$FQ!a-!XmL^nSK{H9BG*J*o9vwA#ofvwl@?l(>_JTdUESKhj1&p(F`>bhtD zUoCfkFhPFh>s~z)Papl)F`G}jdC0DpONX{q+;rK_y!#s`FMXwF?`=<<>Z~xlbn|^P zmOVE5;MZUMt!|R%vt=**^wQtU?4B=|pIUfuZK$M42?D}}uS-al*_@0cVv;WobuEQZ%tUey5_?rXMVM)V&-|DKbYxo zUb5wbub+N6U9(;0juQ$J&@spSu9Y7yA+fzE^N>VNIV&xZiQh!`0_47KZe?uqv zw~o+l0UQ)dbV}aFWIqJ^dxqIhwOE%`umU{iw|U1 zW7Q`=Z^9jYJ>1E-l2FkUT^Z>io#ZE9M)V{}-N^~!BHu+H4lbKTYIo z_-o^Nevi9&MT#rv8lTAXHz< zX#Gw*gV#4x@PbRr?~=;%FRADG8b6gwd43)REV#6O?=|!M$2~lM6bI4^0{=fK=)on5 zrF}xa(Rk`pIG!$1c+Ql0{&Rx<%Q-r!kLb5X@J-|MJy2ZIpJ7$JqQ=kfurQ|lr$v5_ zz;kgoo?kBbsp;ogf}c+a{k%!kACG|(9!D+D(DZ8hg*-ox0zq6Cb0C!peS1RS*Z4UW z`gscQEH2>{hoL{Z-i5v;k+jn=F?H8qAf$fdguY!O$^v4%*9iWkiTt+&J!^#=HNGtp z^Wq1=XNt|~@(Vh5Pv>b(AG!+sJ!bKIZJxS%b9$Cj@QRD#db<9e!1Es!dV31bmI?)* zw+nsK_*O6Uq=AB7TzMQw|2&7|xmS$$e39P{gFt+Ure`$_0_6v%@`|DxX}g#&bwVzh zo_ugJuYW}7v&PRaF>t~&Ld+v=zN&wo?Uqv_jQ z{dm4n*cmOq`gEQ@UhrST|FDqzErQRQ9{xqppLYlEPt)_4yK+2R#bUz3i=_=lp8vIw zyC#>+6rSHI=-2G6Rq*p;A$LuG2K40h=L&m>YV4vlHu0@kFkYy;R4w?nOYmRQtDw-U zETJbDKD&BA(1fQ@*ne$4wg~<_Ud`)i{8=jI<9C8T8l7)-;duTMC9gRcIN?tb^#_T5 zhlu=xxATmr#eB>c`p_Z$XBE1JYkm}7V@=m zbW(3Ye{}rw;90!i=r|`|(793Qn_1vlfd`UHG@UO9xktwdKL|T~xQZjdFxk~p$k!aj zpQR!`86^0r_1jh0ndms`Sz&LZuF(Ee-L&<%O551>=Ja27xm{0c}4g8hQM=+nAe(KrHDAn;@}80{dpY|kj5JwcWn^% zq}0XhYvcM^%%ih}UDEL9iFq9zhbRKi2sg*0@i_+qB0enL$n#+?*mbs$<26%xTGO{? z7!aZ}Iv%SB9?Fl7Prgdy`6Fg=JU4M5y)NuSbbNA&sJ~c@3uLqFOrZ~-*Yb3!$p4G* z*O%SKGcMOwwUh=>Ue$4&YvafXS#U4R{x$PO2M8}5<&gJ>h@!rQ5 zbA7W2eJc@o+Ayz^q_aEtkvD{Wi;j!_21OXHAxAaFt-L<$cr_(6(8IoYv4m2eCqvNYm zQU5YwXKoPnKNb2P9d}&|14VfLDdx52Pp5a|`O))tr;v-kiX+zO=_B;#9^rR1eKuXl z@f3;qqVf4(LM~T|d7;HuO9Va9@#+g;3(*-J@BL`x`F9IF1bOV5(o57Ae7jNPUnA^% zbiCJ1&=VcsmI%9)>){Bl6?one`4@_DT_W-Wf)AI><{3~YcHJrFb#(j|6!u}OsIT!e zp(m$5I!-$%^l+N6t2qMyxndq|bMXv~9$#0ECpu265%^cs^7uQt#uR^U3w|KYaApM6ilwDsw}8=6xKKj3Zw$t*xZ8RlA4mqWwnlynz6Yf z%d09&#unaMUc$>_m)w-^=$}?l;FwZVHLak$q;j%jNSc6VV%7MIEl-*u(XF(BKIZ7lgtE#f7g!(Ar zyeKX&D8rypqo8_9aShsnEk(B%6ivCkptP{8Jk+kj=_siyz!+|q3U95daiC^lZEXoS z$g0&kYQTf2+RjQ=zk-b&4T|at3rfpqz|+Cn0-{1lp`x&?QYx(}LH148W`aAFPSmbT zzp}Dq8fRUhqpHSsZGHi9wX&)PI0fOz&KsTYxT*-eDle(C6FbqKqj&|{#g zAd(y+ECYn~Pe(_^C8dSVaz{Z~WtpRl@rQK=C4!2TmX((mR2CH4@+vAStomNl3kpgq zNl^>RN^Rq7Yfv9qWwiyhMTO;sHMX(o1y)ctwXob-VjWvx9R!WMv%18ZKd4}ATEUpn z`2(Q-j3Iig$1s)<5Aypn4)+gn7)UcY(rCv1?k@B~B(7zmvyuI+73eBEc2`1%IsJve zqe+QW7oY^6tm&B$1WmTF)nS$62>x3dnZafTCZDw;Z#3y97hqv=aZO2WZB?o5xbV!H zH@0AmVAW{dP=2qR2hcp}z?k2QEi@|~>4OA2s%i=xHHBr4S{uZDd{|&jPb)47ahtf2 z2R&jFIy1MdsHO_sc3gG6v#`?PtN1IDix6$6`mdg+4LC5rw68B z{s{V?+mTKT57~ndrJTY}4I=Cq)A5qxLPsHC)ywy|8qW-JLA5a4ziCQ^Oluj8bB^Br zh7uuOiAh^l$L(xbQ7cQ1V&V1n=hiW!JMj=>$=+G5`8gWv|C_27W|huDX)Z~OQrNFF zjh+yrqI{6>OvJtdlChXA(RLz2{rG(Euc3}P)C#LLg3J&hF>6Pnk8G*+6E#51_J+my z+dQ{Ut|QZJdGIqZ&lWt9ca+LGevsr!44X>mup9AyPq|~uLXi*(Z48L-XFF+o!jyb6dV`tp#>e` z(J^zTk1ldb5CK=+Sy1S#v)OM=w_2h1#XJvTo7FlMrvFN9Mn*D83phi$dgO>~kE*2u zj$)FvC`g!H-As(qi3l-;BI9GNA0Z8zsN}Qq9RqL0f~wMX6#7}vm@~Ghyx37%UBK(p zBp(}_PZ3mVv$PYDK-Kgs0^ub=)c{&MV2yx?NWW-+Ss|P72dL&m|C+eOAlWkHSosT+ z4_bxt95*|p`C>hr3iGXGiSiv81wx-;c=Z(`)L7HY-#EoOSq8zL=d)!lQ)po$Bi4ey z(>_J8FWNx;M%u%3G1i(SQWxPrFp8ruP(T~4Vwm&IcU)P4`BK3q02x^3c{-N`IVo;c z#$Yl~ctcJkLR>&!%moV43b3>+sVSINQ&>$FiA@0TocjTtF2-WBeyT*QuXVnS2ckql zm=6)b%$01N8;WePnB@dVRgV~fHq8a2Le4m%63uRKk&gr|ez#C{qp?~;0Zhl`L0Wiu z5NT(KT(;RjQVl5!4?d55uwjOfC*XtAqO5Qk<81^VG-e^t>JT<+zN&*^WX46XE?ROi zv4b8Ookq~{wE}|a*jj@cIxEB5A;qCB61EW%L0JV&1?FFAQv+O}Z4Y91SgR|_qL&cl zsKO$m1X#njF>=OMlnJNAgBzYmE8r>UTIZ__iX5pt8)0f%LHYaMtLDz}M@mks-@zy!Up{ou zTd}nQMrk_~!P~{u>))tbVOi;S#`)aHp-tMzxGiR25h=kiMqLcY=M9Tk zB34kpo7xEX58qG0)QE^+s)LAQPiPh-bQorb`JmbPW5XI&-za6*Xz29S79>AVGgth@ zqb|~pTK%(WeWfO(4wOZTMNBL#>!aRg{7R2H<8d@IDOMqzksu}Jw&8J+Ha5ybYgT%1 z!~*ij1@Qp9VlN*tkX~4K*lX*!@(52&y}hz_;VxXe06>~D4Mgd)VRdqtqVa{t}J&`oQ-p@ya(b<;JH z9yVbIMp+knu@q6Q6Vd$od!><@9Qqeriw(wtDJA7N+`;3441}x2RXDAHZAZTC65djy z6=zH}|J~e*FjU$)rPJvj@xCyYr;Swf*!-z3x8l$V+xdy9h7l}|R7t*B{A){t@UAI) z2gc8g#AI7USK7)VY!k!FG+H5J8pK3$TzRh<@?)Mjp$RLF1n8-Wauc1HjAL9&V&x4Z z6561QDLPn?i0%C`*sJUiUdCj)7WwG*!Gtr4cx9o5TQPBjBhI7wC_RIIlM3sn3iE9v z!oE#+oCvN)?4lkmNW$ry<3kATEU@4rDtr#lJby=w-=TH3e$f(3 zxguJHMWpxa$MQ}#?54%6$4NjsCaB*v5n>k`W}(O@v{%sihOlOXI)rR`mc<%fr`BIT zbwaygoo_ow;u%m@Q8>Aia4C8t@(-FgzMH|uE#7}HF0uC?SolS0&2M6XE-V?@A92KS zKcE1r(+WmbRpQ06v&ixL-)iV(bq(G`<1|=K^>t#Y6;@fzs&ulu_UlU)zUB(Og^8FM zp#^s5^ACGl+D2FOdx+zzregkRe($IbNYtfZA#84Ng0&2alb+7s0u?y$nxDV&9>h;- z@^hM@Es)W89T9UThum9)oFn)aEw2c3tZnH>B9CaVg+LJ&;HY8q@8-3BJrB;m#VNd&?f9~- zt5hcHJ5nFS7gF((Ls$P4G@$x)^)4&Jmp}=UOVoFsRfaFW;-vdTeeHK3frMR4i#SXc zzw@Z&SBre3_>No4*U~Nh_;+ojd&L|D`@30}uYLPO1+BV#d~zAO{JMO6$`!iy>GHL2 z$*8bhmyb{NLRXTYlc+j5l#AcC6ZL6+aEf_ho-Uuy8J<60myb`dLf0f+J_HuJrs(n^ zsL)ld%O@UbSDh}OXwoj1E??s{mCe=VLy)1XL6?tDIz!h&T|PeP3|)(L`S@fpbUmlb zhvI~;rMi54dKbEu>+HiXg?(C-g4h0+wr?+?5bN>c#8Kk(O3ngaLzfj@`R6tM3P%nGF` zP~RW8Bb259eSe@Zl%~LZf8hF1nga6uf$UJ40`dKU^iY}t@cn`FLum@U_Xkc6r77Uv zA25W{6lm`ce0M|}F9p~bzm^7fJpU%{6KCG zSEJG|M5UKRr58n|7eu9fQE5+9dS+DG8I`Wk(*8@qMgK+ghxqO9Lx0YoKc~>2p7h5^ zf8y!S5wO(%BmFr*fA-R!UG!%M{b{8?TjbU2M6>q|YDGaIApWdjrXFex6&%@}?$4|GsL2GjmKNHUwN;81} zQS_&HtxMlPk)#}QK1T^9wI!TZtu4rFQREk`C>)2vRf^i8sMgKE-Xb}=p!B)61pM8M z%vQx`ZC2D~{~GWac}Ob;#W$`Q&!F<(R1}~hQEer!w)`#DKMLo=9w^O}0-iH3yb3~sIqA66@n}nPe#n&eeaJ}NoGw5nuO*PbHRx-r8x%T`Rb@~b{?o|dw zO;X&}^@g^297nT1l?r`%#3PW;dfm@RhPqgnI);L^>!yRXCZg9ju1xuteWRAuMIC0rCvY_0adU_Px+*1D?@pAhjB&Yjq`OBG}OEzZlO^A}(&5NJ8Z*!MeFMtP;M_ z+=cK`CaN5iww)T)glQ3Db+dnUxcRkc?(aslxYyL_wC8Q|(Eg>E=x>v6_CG^Uc5+wb^yQMfv4rDCWTcJ+Sm@Gvk$D@H*qzyykw9lo20dm zw89S==He;I>PI!oH{!M!8=}y#vZQF_JlA53jU9+f<-Ls&cqyT;?cSZl$V4`YV+;n+ z@J?t_=|{kgNW0?2tX@@17HuE1Xh5gUL0H-dY&Su-fGs@osPb!~%E?rxpie)z)(TU- zS@BK;TL{8Pa*e)_>1z{mU?N~;F)g?H7f_~mTq|FMaL^r4u&`{ggBLX z4LHiqX!7PIX+(tTh6vL8`zRF8XrCr07%SENKZLQII3(qpVoE~TA(AR%oHPfwkc5+bCOuguy_{#8*|X257h z`xdW) zB3myOt$${W;z+D;i=tg2LA^YW`2YDC#TD%O{*>+8(OzKTU(=ypL47@7Ay`ku9BJ$S71U1X%; zF2Yufr!_U#rYp>)v!#OqBOvlwcM6-C0WZjt&Hi}eNTzkO{0K#6sL|{n2)|js1#!4< z=xqFopTBTF$RRr%!HY!y-zlF@+GrwlmYp0PEIYT>M@WW|2K;;w(7`n1{K&ZvYTP5y zB(j%~|KU!zorpHmJXD1ZM<2QSgp!|41N4qVr4hzxm&cr>Mmw;YLXJ=!M`V*rM?lH&}9+DqMpNZkVNL|EwKChsMNd}P;4}jf5 z;`8r-#H;qjmiTLw--#?3r<(mw0F{0Wnp$?I5zlwjh!2s~K_lidI{`gv_TQ0>0UU*j z7~V4>q#Anf*~t3lPUAA**VFx*bZjXf#2?nN1;C@%G4foU#1091OQ7kZkU=F|FPwfc?b-j?xG`oZtI%Z7h-faOT>rt;!Z>c#Y$YxHK>H0&=tTp@3Mdzi8e0L)w zj28E7e}M%9t%AU0)TwWD*g!L~n*H?Cv;?<-OIlmD1i^BlpVdG06k3kZ>V&OH(1dl% znv(l&Tg=%KIoeltcNi_xQ2ml6O5Jv#e;tFON>4>s5v7)6WX&aLNW+WQ4G-2dCTpk@ zJ!`&28*1B(2;n!frdy}1d9;mK(^0F%(vbSwNBy#08YoGUZmQE1Ovb>unH0;IO{{h@ z#>9j|{{#pv%TiaG5qe`W#UMf$ZZ49X-F`wQ+D%<_XD3y{9Bz4Au7ojIi1d!jzV{SE? z$Yycc(d7s0d`$A|G|D=&14%~{{5hz7OoBf@3N7S*e4_OnVvLC0KBPrNWbAeZW{Zg3 zHcv+E_VPE3`yHb7pD6z*Q4@sqKGvUl-Hj0!L`3tO*qSk7JLV9wI=Fvb?Dpza7{F1e zh!MNRhe82;?8f$NL>TagVz(4&5=7I zy^3a|SXE);k|M1OpO}I<*MY9E0>|_b<+L93hWyM#mV}4la(u=w|;7 z+oEI}G1_Cmt4Xh!22JAr;~bc96b|UafoLB+2JIpzJX6$8cy>)^JUdn&9}#(3fh~rQ zzYNYiM&u=Z6_e{7Bd?wvhQ#I5v8LX~x8YSvBqKU&^*w4Hi;u?^`XBT0O&v%&nvY+L z+B$viJTiSJCR$o_AZ~B=_lJuOttPb0D|MN8?}HUrshom0h4i*CiQWYL3GesDH|hEp z^9cyx40IMg(gueja-BVipd8yum>zGidBXRX&y5~uNMWNbb+dIJYe#{-H@B6Kg+-?4 z14p!rTKr{%ei8i|bzP60y3=D(r<;J>g7l8;OJ}G!kuV7EnXQt;M1v=xbRmKPlL)#i z@MhI*ZBJ_ZjLLOP*H|Z7oxzBS=`VR{>@!G2uVOq0)HqssG&{581 zQb`d8Z6?t`NUqqN|ImLM%cbplG+Su;Jyk+* zF;tUrbRB;qd=7jS-mAXD-mLoC>MfN0Z2J zY}Rpznr8ni^u9``OP_xhk{Z*c!Jq#|sZk*0pWF&8z>dI)W<;d4 zNW469fU;|jmx4b9YPDQ%1aV-a?{n7nZwd=g=-^?W%$Io9mUrRdXaMM}CbE$F(it=hJdnKM8FQi*s)F zA}UU3o2{kgw^{u_4ef@V2YI$w(;L&@$&r^OD-d0-`gyi{+da0Awz-?S=5}kb)^Dl% zI$%X*j{lhIyMG)m&!Jka3Zpd8w&7&c=uMq^ggjNHtfQwQ4B zoq+)m+OKwKQ#~zchep%hQ+y?xZ_b{OJu&;1?1G7_f3+>6;bcYwBLG8|?5ZjKVEQ}q zc@_x+?JWk{;%>!2TcMXqw{`U!>$ckr2Lk!WLLV_i$h{NBalSxrr}c7wW05^{%z@2w zJ*(t7bbK{TD%oi8D)1q4e|4Ok1{zN+!SVjv{`{+Gh{RJsqNAt6XB0#axr0nMlc?%W zfd~Ux$3l{#y6J0AVs*pO_{{s<#`a*Ex!C(9jX1vULe+vQ4ua1Nm z5}uz&=C#iqu%I!-1=gg^XzZ!xHkh=-)>;K=G?X1)~{Xo;k+KB$Y5% z169AF*|E$UAtqf9J&&aaLJcRt{S)MsCFbQ}odNoUoY~jJQ+dvEIu;TV3Kk^LkF>y3 z$o+MO5rWy@p-G_TnCs6OB|2=*i8o^YN`XPg+;+By>UTMo`b=+WzH~m11Ghl)xW9C_ z4yU;}2@*vp07X#n6j+2KD!d%#zje5K+i=%maBMcRiDNVX&?5z$;d;&1^mkAde|8Rs zzl_-|g~?UYeP3s=%5iu!bjxT{Q;ILatr?TL!9;V7W4okT_kye^k4>1?ME> zWp7raxn2F%u3DF>GgtTrwFiUVnJer#vhT~qXxI5S9Yi-chi+5XAfyU0;BjjH+9-p@ z8+bx&nuLmHqSzZzny4!+Kq&$#xqcqVwX2P}UKjc5*He*1e2Y->du0h&O__oIsH}L| zv#78YbfJP>Wvy&#W1tsNvn-;&I9-2xF{;&ibNgvvCaIdv0Dl_zi26}mmCQBx@?h3( z`XK?uJp2+B0Uhr~yWt#Ua&RRFmveA22j_EeHV3B>Kp+G^d*kbAAS%5v`v!_=eo+wO zj2%a7i;VA;f7qItgGU7kkBbT7LX5*A8qY?#-VD2G^LiSQt*AfPe6O;gt;s)J@y&<} z`X>%SF_y_BwI6v^3gL2nS7U|iA%573u1>I}Hs<;!b<0(o5qkI^eIEg&>z-~UHs6E< z1KOb$)N-0pUUsU*btGP%^DKe|nvQJ=4ah@is<>AhbWuVxqJ(d7CX!}f`a9_q@7mPQ zs4D8AdQ{b~V>>!1)JmF7gaQ46l1Gpd@kFP{sNX55x6X41{suvKf*DgdYr0%thiOKu zE+fcSd=7I859A!?kX@z=o6Q8R2~oR?*Hw#duk z85Rs|F6$9Ba?HW{M(0<#o_FN>$I&X=ix;f{ySmG+erWSKx+eHf$0<*FnTKX^R#2`V z1@G!^?V1%Q*I!1CcJ?r8wF0UvWyQ;$WTbKp2V5&_@PPPrC5=q3FT`K&c5;}2I<*_Q zzN`Th=gXeA&?MX2MWZGNYPux&=i&e+3*0kqo~T8TP)-**lb{IQr^ue4$2ku53#Nq|ylhEg~u?AKmo7*{g*$`&G?B*nOhPj8| zL1!1ec5|{9DaDr$HCgAEaZ=EZOe`6(4$d*B06op+fHQ0D4A{o>MKGyn$ ze0B%^jRG+aEK4$$Q;ZuiL<{L9$;mSw4Otyb5`CRqbthw8{aRGOVr?g=&cP&EL!_yP z6`$Rlf;3TEi1Q0Jm_Z^Gk@;dE3Ou0E!(2Gz6hm)q-I{2=tn-j~NyBo?2AknCn{TWc zY9`mO1e0y*rhpBw!6Gl)3KDRreFPn&r0!w$RkE%AR`#l1*Zaw=cNYjD8$mY1m7&O< zeKgiLnj6VP%85#5onmuWNSdhWgY*11^X|@_! zergk5UQqqHtjL#wTpT)1K@}x+1Im(6#w?cVb5Rwak`^j6p^Rm!KGwNU$q1FDDZc7z zMfEM_jVz%83ks&7U@0$9LIrs!s6#;`FUaEs%~qO1pxW2M^T&g(W-HN&PjoUkP&gRR z!4v`@eNwZBM#VB22l*3OS^h-kls~NxJ#7v>`Nb2uZp9-;K1oTW#`r#rXz;X$DtHJD zEp&bRkk{-nB1wqBb|NMTkLx_l2nDW3*r?6V6+KW8_yT^B&A03oMoNF6rCo=OvgZP5 zj_WRiBzx!tvAirl4s$Xtkcm(P`X89UD%YbOdc%1loBE?o-FI*{ZFyN7-CS>Nr4r{! zHg{bH?9TT{q&M1qr&$(Y*ZE>TpB2wWN3U#GRvfyU&vIUbQ;bM!h=syezKY4a-HVXR+uu;QK33mb+ry0OLb0x=1Tg^lVL0G}v-p6!XS-hKBkpQ*-UxW@A9-!1bXhc26&bui!O`ZcVP;?bfR&?9@%|28+;>vQ9sH0 zR-W@eYe_*GZACdA$!_q|9vagtv2++>V;=m7`x|Tte8aW`*go2J?!tGnwJN9w{U3d! zbld0NRqaNE{lK+As}ya__4fWW*E6RPL^w`@=+EGy@2%i_vIk+EvQEb6`=V~H_Y|99 zmAcoiZfWaHblSc726Zpgwi~C%9ULw{(7q-Z^i^To6Q+3V&n8>um-3uT(YI%hT>l@G zx%Z%K4-7KSXw6zf+|pTpfoE49Bk%=Ok0MYG5h#0T*G};zUdxC~0+BOOA4D<=163#$ z^D)OariEwTgv`!-u9AIMp)o8W z1gpNs#ulKjQ5fDngx7k6@lsjH3%d&XBu*cVz$mizV4D;8BdTv^#_leIT|L5Lj3n$z zi|_(_v4}OuY5pTXF~(SPGMf5&uEcZ+&l7|lfro&^{Y#vDzn6N*#aL;eKI<<^(K}+e zj`vN#Kw}1@po#Be%rj`s{ao9AXEB)tDaIcu0Z5%ynQA80|^c4#B9cL5%u=Ja?U9_?xi9&v_rxGjB^Ep=7E$*O)% z<+ri&ErF>V^2n6z3&nqtK|k#xenS?e6zhi}yj;JVf$h{_-3~X~a^oh2ZDNZpx1vwn zM_^KZ!j_m)bPy)xklv(R6*ei0@7GMqhp4NWlt2^Q9SCOIDs24{n?6PK^U$yLlbFH! zA*(Q%_oMD*J{6r<(>L<{)EIoQbz4PzQ1@b>uv?(Yz0D%m_r-(K3`77QwW3lWi4)9m zb>wFVPhclGbi=zOjsMW&N89Le1AD~cV@qHidpt~!Z_;BrtGkpQGwCr~p1%ruvXO0+ zXjzMR)_uBKPx7p3l$FYGl;aWFkxp8p9Qw|tZVdd1vg8*xP;a@smISo&9TyS)N53q?W1HMSvfUmUzD)Jkx!{pSb z&6JQ+pEvJg@D(!!mbKkoE6hP;NX{NG@#gU`@jGEBvJZMf;f#leGg#3WZ3vX9ve#un zV|Tm3Ie}I>MywWSRluBR%}Sb*8<{aYSa05m>J|sO>D^8(opAGsJ-jq0X|7mNnIu9; z?C}jLKw?)vZW|-~a(kTYc@X5Va+<4(cR5As!q3Xf&QRRVvFwV1b(2Xk97%u2{~>>ee^#{QD$ngez;9acbYd_!Sf(71tc;?bKsqEJ!fZSs9yh@$O^e2pp8e9sYd@^*NBGCk}5rk)^$g;JhZn3g+wfjeybf$I^N{peg$ zxh_z-jc=fxH!e^Bq^_ZJkdJVlt$Ah7GActjpBz$LtdL_KAJ_`#7HB|K zO&_wyr8mBQF8Gl>)}|i7_xr!#jpRqzb6f}sU`w*XCqs}vsNO2FXn}bZb9;$+MGHy{0|DO84A)gle=1qUe{^yQ!r2d8t8#6fos5;!ml8LjxuRGo}g&l}ORE6V^zKS?#ojXcEo!*S`z!TJn~ zFD%h$rw#9@Nh^NFcCPw8RAMgjZ0e4-k@Wr_%0S|vU&%44-(pd0wyB%#>R0Z6$FX0V z2)4M}yE>-0+l@|}XOFX(33028p3r z3&lGs$?lzosWBEt$v1%%J;B^IiPmd4!fnn~zsptq7}Hzb(XAL2^mZl=f{>HTZjA>hh$&38z+34dY65wjn2-X4dt(8C2(Sv{He z5Vr4X??Wt0*k#clX=}JY9yL%Hk6(;Y@mn2pBFoj+BGcYEi=)~vk4V$ca=7=x8Gqy7 z-4}Y{X;fru4%ETDCPhDb=#!vlX+(SP9NH2K(Fc=?EhuJH^KI@X;Qav_N4xhnyy)>g z&cYbGc;WO9JlNHFW};YcQtQo)$nigpW3*&bUqQmX!kh*q*kyl)DyyHRH@2Ot`LE`j zwI<|3Vzg`31lrqAaa`iP-Z*!DA~kj$HaHSphvS?dD_$@i71Xh7O=6Gh6z3_Oa{*)yS4p7rA)p z0*S*#Ni2Iw15Yk7vE&PjdGducmV9+7Prhnl$(4-^cv=|nwKA|^9|Madj8jfsLO*9B zr@mlf;MFvMw!zRlm>tBc)&{b-=h?ic=c=uC^*d&zL*}-NBb&_40N7S~5B66uM?BuJ z9g8#AnAh=(Gn?(+l2*I7!f*FF_u0KOaT*x-mxHBJTWbT@!h`@fM3mT?uTDY%BHLZW zXX2mYT||W2)o<+TAvtwr9um~5T5ye+O7Ni=ft3QLI9 zsQ7}!^IuH@w5hiwqiVIN+Q6%L(vXI*mNKx?B}x~w9u_q6+y;?rV#!4<3@mA7;Dvn* zyvq5#lJna`{00F&3oG;y-~IdW{uV}D_N+sSjW_6joVlx4{ivpRR}w~lDm|-BSW+co zHGy~4K6_6*&~I^dWVYh1zzli+PrfQALQh{lzxB6!0TYTI8E#>b`2> z_!iLi6G}akSgx;?SMpV}w{r6Bd`zUT&B|0$PGslEgbMpo4gfDImdR zF2V@$2r-~xlyo#XFtHHcYQ{t+4_GM)qeU(g3t%jH*sxem!gBg}NyT}qe;rm>Y^LP@ zlQiofq8)z?JeT5Kppya)&ia3bQDTA^`3{(VK$4TWXU1Ihi?&yYzq#J-x#}lv&uRRpkWd$Kv-eqcUkx}OT4N~c z$8`P$vC#;KaWyTxjfnG=4Q=i=L*4m&TwJleq%P` zQCrbgt0#DOI$w{B{Q_~BH7Q%&oc<1Ph41x~fC3$$h)_HU6rL^jd;}u#0|}v{5c>F? zotM7Jy%UGTcN>w2a}1q&>hc8e8;N))0z!6}T*3~vbI@{n7t3-&`iEKxj-3JL|G;F^ ze$aA6d{SHZd>_t72gb8PuCJ`WYr^NVO^$(6FUU%B%8K`Dim$P{V0g0foEMA3*DUR( z6WP6is4c+KsBUcgu(W~j|MGY0{5ar$9f)G!e@cfx_IZ5|YG7S`RXRV(e@L*1Up{7f^K9VF=_obKLh1j zmW%y>oOpxlN1PV>3>xm5*=@SxR656xsgga{2+AjRFKq~?^qLVF^GmVtf|}!A{(WIQGlhBJIjB zW-q5*blF3{&+MwBQx<1XpF@i!o-XH6fDrV>xJ>Aogug?`ho${W4nbq5gtL< zg~)vc(p0P(GNZ6wrcV7&)zX9d@l=I#E$NY`v|`M7y^Rubf!G} zOnPd@Ac;oQK5TG)VfR|#p-#;;tcN^mzOsAsQgZQ{K67KP zJYpB_eYi2lSR?0qLjQ6-TjctSIj#MsW-H#r&+$uaxt{HgzIX+XZ8^_DN3sq4Ls)X* z+bB}h8*n-;htgO9E6|-O*ubkZ+0`_=ItBId{+~XRvB&2oWxF!*^85q2{sz{;n(@pm z=$VW8hg?V`sLSR4_C}L3C z@DQGK`Y}F2KeT=`dp-&*{AG*Xd)j;?a!JT>Xq>BVvU}qpSGG-yc*$tXY^mu<?C_hcH54%urcrzEC39IpABfQ|49u6jwt3ZH2&R`1)9;k3A!oQ zF98Oe1;=o*-K{w6dNED!B6>TfWVYaFJ~=V>w+6e<{2gA;nR))ybX(>=*-am*+k6RW z$_78mn`}i{DBr7Oembqv?z7>Wa5zWFjIT|wtF@Rjqmu*MF=j|Aa2p8E zrNgQ=Z@D=+H*=F*PrveMLpz##BP(h9awI-D#9U`pJry ze$?g~m=Xn=F`*?%#|^puDMHbS>pvWJ{r#XAA=iH|JCWVn%p%86;rizxMEpg#ezw+B zv&{ZJL?+;NTK+SK^D9F1z?I9M9B@QWq30IjWF+rG{9+$Qh_52X%gf+c)B)y$s}LLB zjd8iRVbPfjoB<>tx{0RJL#s(BhTO~pvime*KUuizdx|IO@I`(XBH)y?hFI)4{vgI)a*hIA`l#QG1hI-rdv zKShAaM8Ry@qRfTmoDLYGPyNlg(R^OnTy>tyl;|t{;fTLKt$ri4c4HnA^?{`(qSxxsY!P zlJik`veHcAO2_%Q)T<;x_6tKNS z*g|3g@2u&2n56K=Cs*CAe!*mASHFh|YU``%Ye-%jv1df`vSt29c9#$?lGnAqgbV1q zi6nFkxiQyzttLDpt^NFW5;^L35C&F(tNgbiNlin-fcCGS`iNa!-S#x%C6pkZxNI%B z4JF^}Kl@Qs$2cr3Vt9mDru}vlN`G0%OBLdcQ7g&ymLz8%w3@*1-E0!VijXB+NVtdt zI)2l;mc96d#_0bF(FX-esOrSal^JG>9ZF_`mOHT90kUkFqwwA{pCP$?HJlvvk>EVD zH2VrGH6>6-k6PKGjd=D)>2fT{T7WD=YsAp zr9qQt^Nm8(1bc2*+jG@Jkcg1SwW@i@bw2Yjd*%$-vHF?BC12tVXlKJ0Xt&zceYx~v zV6Ap8-hOGZ*?0|vWcN-=(tc?REzF|D#iPBBp*V%o+l&_#!H=;I_ko?%;RkeyQ$WVH z`}uqiWr9k73AT*3@qC;)H6x}tgtf;;yv{turrJNnyurW2Lhms%n;qw3j;v0CA+$Fq zIlod=`}ZhbXK33h@IrSK#%!ieiV8QP)`FmHqb(l%8Unt{o~@6N3caf^Vfhu}G6bS9 zRY)`b0lI4;zG)4MIu9*SpE?#c6z!$pD(PzVdju+%MbC z68s(Q%{h>S^$Gr^2%JF1ym8=j`0sOlQ(2D?$6+w+08GKDj1ral+z016#!L zktZZw^=Cr6$O>#n^oaEZjDBDuY6*FedL!ILMO63qgq8-*Cq}e}sqoi!F)zq}@qzlQyb!%aP#;NGQhN{)58XEE%ql^+aj+C*KjwZW z)Xi^RKpaZ6;#pD88OFfK6mOy#Pni0cQ+p^VTLTv`)L%@eO9FqMPy9g^-|XSzZ%+Ic zrI5VT_CE2I?RV1*_jU!EZh;BR7g*>pfD4sEE2h^y%%-^ zHrkLF3$ynNYPOw$xJemuo}2#0R8)CI(^gY52=O!S(Gz5 zs?C9)2z?ko+mA&|&)0AVXnN6Ev|yzay6}tNirU8Nj@bB9Z)-?}6 zea>QY(k0=t6^%-;`R-w1aXSv8(ds;KLAac_QlChA;~Tme4EMVU!2x)Juq?Fso_(X; zH+1z)h(oY6{6xG7%f`7uL^Q7;JKvuA3)8~~e8AWAOT6Q}^esX@{1q5>jk1Hix3VuO zGQV){;?^bB9w_PSYS7Q@E}1;oAxfXPPH^A^2TpL{1P4xV-~qX5MvHB$@A@la4S#aVfKZ3@FxTQsL|f z=vUOQxTLzu(Qj0lqu(91QwnRUFRyV{I?5_a`qkDH^~*1-aF!Q3%Bm{+T?;Uk=Q)5~O@%d+ z@m%02sdc1q`iLZU{Xx1o=E|Ci{tWvSMWBr5r4t3zV?Kx?l0<%g%1`5b=d{FRau{(+ zQB`HFgY#1es$gvOWu}7c^75*pVHc&EZk|@=m|_}h8pTSu6Kqv;yB;Qx{~I^atl<9ixnOYq>*)G!e$RV@!zWh+gAd@o2X__jNw}}aO?BD* z7TV)p`erb=2)7IOc-$$tPewh$N4V@UZpzn}>7TXwzr<*#m3@n{tpDYEH~8?sdG|*D z|C{&ME4hqE2uLy{nGY6eO`lFc&X@lNAKu4Y+mHJ(+;`xff%^g6-%jUu6P^ts-2?Cp z+!RigcU>a@LLF zp6AvDgL45F0xkx8?oRZ7mL$CZxDW7OfOTg}(rbV@eI#iG;5@)4z~plz={>-w0Y9cR zeiPwyz!`vB0Ta$cUz7$60ImW27I4M+*oy{C>MKd@fCDa&q+bB50pl>9=K;F{ZU^iE zIO9S|I+^k>lB8rn1#}wj3I-SAJ-&ZNFxU!s5qyNPn zdb$rV1MplIY&GCez(&Awz!bEf2dDr(4>$$zvRQZ`0q6jH1#ltYCcs9(1AwR83%vN$ zy+2?E;26O1fExi_fM>bEAHZRNYXG--U^4;t1NJxx#uE9E=Ze z1mJSOYQW8ae*tU<+yt16p8?zsm;v}b;CR5gx!@PzLcqrXj{vR#%v0e{0p|l6drHzX zfGL2R02RQW0jB`=xexjPm<9M8;0nMNzyvSG3)mO1cQ5D--~hnq0mlMPorix@0MH9K zAMo#huK+d!ZUTG|uQ3h)z75zLKSCLQKiUJ10vrpt6wm?q4d8r0%L8Z+SOK^Ra3SCU zz<&Vt#{07`00#hG-GKIh)qoDbX8`8|N`FRsz)ZkRfTe&302=^%pDam>0S5rS2sjpS z0A3Z=0geS+2>1qIBVZ4_Dcug32bge*B;5*V25bP#0rUeF19roE;d;P}0iOn(0=Ncn z9^iJs&43A~N>U2msha_Z0_FhT4Ok5L6kt8zD}YY}t^-^HxE*ji;ORK6kkA`1@c_+$ z(*bh;?*}XfdZgRz%_u|0k;F5^C;S%E=kt_ngJbvIe_m176a}EtOrc^3)%zr2V4VqAK-StrvMYq zkfatsGvGnM9Khj^p*`R&fc1bifKLNH4Y&qy3*dIZo{ytFUY8CAGy`4>m;<-~uo!SV zU_Icai_ji$DBv2v8o=#<_W>rHiEpm}&46D5<^W#&1lj{;0@ef813nG-7r-@uUjc3h z{2nj?_R#bs+5-*-%mG}!7)FCz`1}^02czz09?Kn^8|1`;Ch1VVV7W^r@RY$1lax_=0D)( z_c3nRYvTv7H-HNPrvNSooB=rZ-{2Qu#)oJRyZs!X0%(Mfst23`*a*0M1MC-|vJrU9 zpz9;>53qd`<|*LZ&oEBd`;^Z?4`AIEj0blAx&Odl0k(e)Jb-hz0}tf`_P7}I0h$1f zJ1}0rg@6vg=K$wYIpEV&z7zfeFd6UwpaR$<1^5Dx4`4gsVnDhuZP;a)K1MRsB^l1{ z(bd>s;Q0`tw7w=7>_;_nx{}3_K)y799;!hL>PfwluI`n5jeOEHqe~io*5FI7Bo6ZS z69C&$k2R!BT-2Wf_dd#}_Tr+x=HY&GS}=&IgpVP5CC!c-*|SS72tty|pU3?#l&1lP z$|r}*-$(YUqqN_R^5rPUR13GiHr&1k=vj*L%k|~O;quE+{uauiisAM*gv%-0Fg?%C zIN9~F4~9w7*&08IZ*&)epF4pkK{kbPSl#jQpBWe;8s~hJJJAp0yT*r7-Vfm@$1OR6 z!C`U0^9iWY>JXl^xDcNI0MF@DgTZlBU#k;m50(Fn@~oqbrw{OVR!(#rz)j`%047Y1 zq$BPQPOk}NebCQ*)cZf}eS3Hu)s<(dTe5{^8bN?4Jdy?+Mgd#Xl4V;?__BI*Tax96 zuxwBqhf-VJvKve4rn_a!K)_%yo?v5dLco*pFlOQ;=9Tg6Kq3MOhCsp)ApXc?)*IMF zJIj9YWZRq_Kff9&V_Fje(C=bn4+x#yhwsA^RQ@h#Q(Zk9aM z=B=oU`iA5>x_;iJ?*siw(BaN5{TjE9O{n8p(60o!{7obmr@bA5iRz$tHs1jcG;rx! z|4k1E(@C$_Q3sV5?cJf(0lVw%osN1Ij&gf9Xnb0GM^V=>c>LN+ST|(kLEnpW`8-WV z2m1IcZXeV4N@*Q{X@lFQ1+Lx3LH}g{JxXQDE$b!FZ>MWzGiuKUDT8!*4La1_fHypd z{U=D|I$y6_*CNOo1Yca2b%RSE1brvym@2q3I$ioU&~F93PN%0``omoQGM%1u=`Vu* zHI$#P({nEUx1c`?dXTNAS71yIphqEdCg@)QJ;+w%W8L6+7d(DGHUsop=sgF1bsc|LH532iY)IJbJW%= zK;MS)er+ZCs!8Z%i$>H>Z<(W!~`P6m9xU_ z`@^750ewKHhrS>fNY~1#cnuA7(#z39%RjZCcZ2?dP7gipl&AID`=Fnr(`Bj^W7k^H z-vm8KzpbFZF$sMi=>IxN{m+Ab&rQK&*J04V4!Xxz5a;XB0?~d9vOk`LUJLraf}YXa z7wU7{4|*fkopW{ikRZ$UgT4^-l{!6irBi+@=(m9$H1_TT{Xc^q6#LJEz8iEbBi#O5 z=+=K2^c|o#==6+Br*-xHpa->&*3G|}q<&gYzYBU``$3$$UL63tTl)LtU{sqv3 z?DIV6*Mc5opTnRRK@ZA(mD4OM6+n-|X0@RAfPTAfKW&^KA6f*SN5SKl4=Ao?KnJ2z z43_@`W?_1~^EeVEIpBK-d}1uWSL4%i-x%tOVt>Np&sy#~1bQ6wpxk!^^tqr1<-Qv1 zKT!Frp^u|yNKO{1txcfc2>L}jT^kE~LH{D?LGeBc`VF8r>*Zn3JY16G?*e@{=t22t z4D>yqFVf40+MIYg1p14hcYEmV4*dw|e*`@!U(vqH+n_h=&g7l+(nsY%9 zvi~UPm6OnSf&M<~53=7F=tn>giswV1PlNn$B;}8Qz5?`Fy8hZ) zrzV1ZAkYKb4?304=;gKXpcnM}K)+0yole*0 zy1PIh0KHeIhok_ie+=~dCXs&#^m`_ee+2Zspa=PH4HoSWg5K$=zuCzjO`!h_^dSH4 z1^pG!gZyU{^dEs9fM11oR;NYOo&~0=->t|4nZH zHG%#q(3j}+P{OfKFX+9Klph8CX3&H3<1Wyz16}O3sBvu1n5Ef_k!>U=v^NBv^w?~1^p1{=jwEAuV)wNFM}Rr|1r?t zo233jp#K{5nY#Rb*M3Jpe;0IYXS(qzr=wOapo6f_??B&(HGla>5iF_?Fb0O#$-NpX z8pXdjoTwSkG+M!HEsa!%IwFI2(jnv4$IAA*c+kdec@*IGe) zX$wxD(z+v@xC=k;s93OV%I2xzbIYc|AT3ql=cnNO!ymo)(#t<>nLed@^VBV&ZBw>a z+*Q6KEXH?;@a_*9OrTR+NcRR!55oGe;a9|Sj2m%H2c3(+#(`~}f}7Sz^^Qs5#XmZ{?TO^j<|*4MwwK=(-Vq|b$p_Yb!R;4{vzeGIjp13v-%vltBhm0VW$2BT zDl|tNhRmqy-&#%1B5)QVr}|!uEm)Ju_M=hU{#I}M+au%U;W|{~V}N#QkAMH5l-?ll zss6ct)x-p*zTzNVECk@|e~o?ga$JkPaCJ$Tx*QCJzw6%_U6bf?FchH6Cp2A}Q2jRO zvi1Ini4n3dblFaRu`LWsZz+#QYByIbj2sAuempHw+Y*VkC_h+G6$LvThW!tOH&<*a z-xl7E?JLoK>eI(Q@Aheo3Vjsu_O~2sEfgp5NX_POdnB5f7O4TyLQxk&ZSq>=TNE?u zif#^X5q=W|?JBJfip3P_IDk5y!L_t;g8I9I{9W{S-0^qO!Y}!Dcf2Z~uhCA;c~OPx z>z}Q3+e&);7J5{E9naq#J&e802y%?7yjM^Lp%vtagv2xbOYxi z+GFd}>Lp!L;2j6=bmGN9^OsRzuL1iU0Vw}Pk=KwoaZ6=rZ|Fip&ci5Ex!09Ld{0EJnl^C>Hqv=3%KZ`L)Hu)#Y&WnYz}_bZR^v~6NBFMt zp6wN#+ooK(dFm~dn@$UNi98;!3J;e3XnLr!?ewWFr&Wg{7ReZgj7PsUF>#-x51y$A z85jm2qkZ$#MMB8=JQ#$!JTk6;40;w={lLV;UAl}8(nHGVW<8dcP4kp(MN*)cqr)37 z7(X_hc1tDv)){EPLw1Pa-(|h79jN}js6YDP#KbRf?bt!ozrAAHl*O|4q#VmaU-hUU zWZs5iuU_rSq^0JX$iSkfWH>cKE)gc zMJN`!fi(jADajD|RK&U%+eAKfW4$BN7ka=iv6Gx#kn<$u>~-XbSY1Fl!<7@4V`O*e zCOUhe2V&SIm(@{l_NiS z5#`1nnV7f**Vcka^<5#@Y&+%IZ8Uytp?SsTDeaNw&?=GDFp7Xd&L${!r{mE^<+t(f z6#2P37IZ~oDJOEG@O^_)y^vPW?MD;KTD(;IXszSR#D6PH&F-*Qdhc|{J zJIeybovq7VKO(!PutJ~ZBr|yMX z-AM9OPY23f@Pmm7Y%7U_>RA=V_y|mlr9u|62Jj~Q8wG79(WpP*6WeHtwIz&@+*}^I zUbYOA{I06da(R=Giz%w>QIw57g?FrRO~={z_k0xf1N$Ta%OlmDsEPV&9C#z}1{y>C z;>OL#?U7t)lW$ic&f_RP6Gp6kdSW7tYbi^tTZ9j}Ik`j5pPGk#J&5!#LQXg2sIi{J z;SJ8J@0V3P5VoEP1IO(-pRM?L*cz(%x3Kk8sC8?(^}8^X0Ac#&7`u8ZR$2wgNLUbl z!S*sRJyllmU&^h2FRS=*x%Ez{;TifPFdiT1x{Ju|2GTl@0Tsg@tKw_beQLFOW48BVg|MMDK-qiqt;1dugC(< znr)UWfNdLb(0YjuO!>u8!*pzQh(poe`_n|0fIVS}V@fX$dY_&SdelM(y%$4=dIoS$ zy}YOWdpc;{Mh6~Icn%h8#r|CCN6RTXc5(Y?4MqnoiRr*rvpD*e%d^6BJ@Q`Z{g%A7 z)LKr}FP>KKJoC$LCFa-pS`ZeBRIJ1AIQn=W#y2#b+yNiKCj&Q9j4`EUCx;|H@dIrx5Hc zj`p^;Pe*H4tj5psN22rVX4l1L)yGD}ZNsM|;3?;K6Gm^=gi9%5D`YkK;$f@T7caMN z^u;Tjc+hJJBN|j3c=4&0iWe_lX(>PQ;-^{4|GfA#OZmAM$9^HlgBM43=+hB-9Y&Uj z`r_Ez_vzQLb%xdLi&tBHtNrAkX{r39Q^OV>j*shzybfC*vBnPj;b&Wi-}J-Jv2tg6 z{fD^1c<5N|6E9(84VB+?X<=j~zxWDUA9M1Nmmk^E@LO5$`Bu~ySJ~8+LRyzwZ%??0 zyo%ry!j4z&FXX-0qsHasj4L~<{JWU(17DK-x5<;$&v=^qMe*Onc=w%>Q9QrL<(C=1 z*5H4L@dICx{Ipk0$A0`Pv(C4gxxMI7aXg3rlm5+j%X{$*9+!t0&l>V6KNJ7KuStIK z>>HOAFc9JN_etqc`hSA)+-`}BXWY0XHHd#B^Q-ZP{=&JC|8>bPoOzj#)R%iDoddt=<*a!I!SlKHnAdhTa@(*u%G^~*Dif7#&wZ;V$zDEXgZ`F~*i zUW5OaRj^Qul=hfp!7eV@xC#M_cH%X#ve2I zTNyuK@Gocldj`LX)9B+;uo{}$Hg4#uq~Bp~*yak-1}*pm_$&wgZuQm8XaCnM~XN`7U z!g%vDvb=Z(gUin{KF+v!#sa*T@z}GHUpz0tWs>neN+3AIvk#oJz{@aR?B{Vowd-bq zpKtXUdfv%${?X9$KF0UID8!530@BsfEXQh)2B?)}>t)897+3ZFcgAZO$E`RHG9EMd z-v#a$7Zbomp6O=+e4_1i!ea)0Hsfl2ph{f^occY=cHnNb<_o-Zyz65*YQ3T43=00z zaq~{#e)@kc0ROg-bCy*(E+s4b{G9RWj4M6=jq%eB{7ft;sNW+7K8Nu$415J}vfJZq zH~I}E9e=_2J9o%?df$$Ypnmz4kbkx{Xv`~u>_D>o?DGcKJN__n;MuP{S*K&6LV8C3 zK?35P2V7pj_$JQ7;++iOvl-v{nB>1mo~$n5md||Y8s@hik&G8J|Bb-QeE4@V|E9l} zjN&~GTz-S`w+#KC6mrh9%z67i2FQPnvUDHjXkb4%vK=Kv@D53v4%4Z>zI9y9d3Lg7Zg^oW9``DB3k_ZV`Dj5jm>Ic~tM zjPHL`0>5Bu$#H+aU3k%>NwY&)y&brDsExl>hb?iFYwS z{f>v~{g+J=xQy{P7@y8^1{m+1F8N2Vl>l#FSfh+D%1d0$=O1T$*&PyZXE~RgF6I0s zZ)yOAmd}Ma3pZPCid)6@FCyd9glYr_k`s)N#Z`|m|vl*Ys_ME|TW-MIg1_4O zfhc^0H=Ci;5bt4ZDRasjw2<%m+`g{Z@s%1?_mC`Sx@>qI3)i|M!y_k z{86@>s<#sff%x~a{gt0z!}!O!-!EhNw=%wQlLR9Wa4O~&72J^!5fD-c>F=NfKT9pjAx=Ns*G74t7-IWeXUGJXZ; zZFH+Rwli+#^Fxd;WB-}Y{8RD3f%NIVP6A5*Pc#0fQHd*iUd{MF8U3=4@!xZvp}${2 z$GeQzZj|@RZjG35QoUwek1%f5`(?&WJ)dK|$bQ}-tFbP`dy^#pZLU}ONk8Ko)=Ne; zj=#b981pOp(BCa0IbUTvDF0c_`1{=NsvkEqZu;|g8Go1U#_n#N4afHLw_4y-uj&6A z88`j#ZN_`Am+f-$LsZJyZRCwx6wdyv+WSoy>MYcIkk{$TZ;vp)IbW(k;Ezi5f0 zTb`^s;C}6DVg83$A08&Hn;6gEAO&2>a$aZL%;&vWKvBKsxSwX+w8L|ZoA$r>5-BIj z`m1@u5aVmuo=VSG8UM|#Qo&x<^HLNfeb#P}fb#QR#uwZyah0F9GH&|qIB-9^{gL^P zuzcmujabM~y?a?7q&0E$F+TSud5_}ac#!e$aJ(x!A7Z?@=;e<=VUoYu-lo0{64?)r>!A%rkFb+#IhT zVEi!auWbGr6Jwg#=6Ox_+&! zSLO2t#-A|q)gH#5RLjK9+^_qXTAfm6M$JbzIBa~0!ep8po(18g5PkNOwJ z-{UxHmd&uPm?`DYWIeB9d_Cip-0#Z%Z!-Q1&gTQn{}~vT^jyh$s`idB9_M-&G5;Rm zw7xLsv5zpnIUe0PmH6@8g!c(qjP(Zdn|Y}R3Xnd#ZtOcg%0DL(f7-h<;>!&S3sl#>d&OFfA9ycE+a|{r&{wvyJ%u zA>-!y@qaLG=HWADOMNcmegvC1wgNwkul3Vj=HJQnew2yNGH&jB%xEO}rN?K1`^mQh z_-_$-we>5`W2)?52gvyz^PB6_<#S|vAG$;8gzy)~7~_u*%X>Dr^=rn>_2U_HY28|S zTn?Q2_ct6zm?nuM&bT>VtYzHXpZOW%<~o}GkOleM{#T^j3YLEc1_;9UumjTH?4u(J zob*}D4O${$>pwAWuIqale~2JpGEXGqs$@l{Ee*?Jk4Ti+&S>`wMWbLQ@`*9v{s`uNR|2tXOT>+4yck@fE3aSGE>aootbxi0={0RQWZw{l)x$#Sfb;SHJL z)U4EohPo_1RFO>C>EZrtDxI>$#}91!c7we-Sx8Sxtn1GXrYvH!vjbiU{-`XF9!>X; z6w`M9K+?|TvupCnAQ=90M5rw+?SpD1vsS_IPa5;s&Qi;)vNJe{w=vaGMGE+z=M*Gt_`f!Qey%v4c zU`OBdJX zvl}GY_0L%Ysr0N=CI>&ol|3@79F@KklFX+q=>w_khT*m8WR7p?vXIReE%7mv66f?q zWzE8y2lCk=JG=T?e1S$fvIdxJ{i|*GKvLslL^6`nh0O4p!L$qzT%vcS>TA;I>5NOT z1~bFyWZo{|fBkE16fHQ$>%@m`;A-7#Q~5Ud@oIRcYHKQQ_b2<;rfsx3WhGN7;Z3o5 zCfzEGtd^vv$;7&P4`oJ?5rn~YwfhH?g+gXvBU{MMu21KsvZz~La0}RkP<<#fOrLnE zn?HX}y)~4~uS?^)sd0|w;gnU|6cw2QN^yW^h6l1D8x`u%<;A*~B?a3J9%&x}QgHlknU?)dL zE%`N?VmejV6q_^OpUECTWZTJnKDiObD&{vTpBxz)+K3|Tp>&6ggXq>-vjYQz*;z#UNbym_m7S)YN&^%>4D_PV9~~hbJp3p>|myUW5NR4T-(kSii7iI zHbvw&tgl}*yO6$a5-KbjOq~xZVs26ib6om-=gUm<_`^(#8XAMX%#;`!BArXi)W=*a zboLbI@fU$QQ;D8rXU}Xqkw^?J>*^`al^-7JTy8Iq*@-$EQDqMd!#iwy!LpXc2|KYQ zZrhHlBW*284zC$Wu1WXg(*2o%On;mL*U5?^6}h*b6zah7^kBN^rdHI|zGQ`+=-?_l z;>#S?1sGxz!*DN({{{Fk6y;(R;4ZfZ02SadDYt}{bsZ3TFGD+WG{%r3k^j9nB@UUIT(t0&{xW0 z4C?H*?D*%Fv@Gsy1LN|=ZOR24o5M_wZk|{~CzMo%XeINx#%Np6qTiDHxVF*6K{@Iv zw;(CTcVeh??n=f#sNvIF%3{7WF&$DIZk_G$#P&r?TU!>{OBXEYNgzyGS{EhUfM~@S zQp_j&sbh^gJjTiDFW9C z-$bIVKCzynAJC9{Q><^WuM(eq6V2%y666HxS!~OXZ(*{R%_D*nB6qksK+BNFqLoc~ z#8ro`nvhqJTNgXYmHIP-khoq})>EvH!TBy0|fyPV~&B^o4xZh@KG!(WM@jg&RbZ8Yn>u z3q$C9DbzIV30GlSZ9Xb%YY_Rk#lI@1M{>-S%v#z5Krzgqqdj46xtSexIkkhq9Ph6S)!*n&*R7i#@L#c@)x03T$ zOzGnoiegI}gLq^j^NA%NM~j&!Jnkpsy+MigZR$`W;ZYNcq|}I-wsTnVH8-~}>TGSZ z8|oVB=CH&1it^U&6|0mmTCWnb+sDT;fI6Piqjh>)eP=iB6A9}3n2m`!xq#2Wh=CMK zce{Yyn@)&4`+JFM(yrJMNu7>J)YRYB?20G4v81cx#VDB9c8ZaEx%i*9z1KkpS4LqjFC(ZU~ z-r}}SWJG;}62~WU^VyBG1<<)@b$ud%9>8u4VVLP`Id2M`o|6r;(kh3K} zrJCg`xjGgUb}cC{=9LbQW98&(>=TxD6Drhg&0{+hZKM?s_98Hk)4dJ(j*`^}Xozgb z(K?&kEf!D5YI1ZDbR~a1x$6tLg44~E>`73H>?t&!$8wx zJ2N9r-k#j)moYrrY2K%$MAv*aHa^q&qCJqz43@f#nJ$mBS+3{%EwbFKL7s~-4-HiF z8JDJK6sS$xWMW#=Q=E+*SS+{PmuN= zeQcnu{h>fgdIJ=+v6{w)?uL9aM;TN^4?0YaTbd*L^^qQD*aUP9rFW8^zWw$PW{ai0 zGnvQwU4(<#XkNYYx9NI287k}cH}+a5jk#=73*dYYO$ zy0l4htj~l%bxuiE6`6@mcWhlDHye~fYP2}cSPMuYY;+8haKn*dcLylt>l0PW*YxZs}5?Rxc4##}Ygz~}GCiTLuN3=eX0GA3_gw!DL{1uv{VCQ0(zVyTWpi12D?kA-X|@fktKM%H2UH=8{!zCWCyc!PK(w#!-VUNrnLjy=@@r% z)#gF4d~a_m{ttO>U*gNW!-W1+8#VeA#G|8f?AdspB06n&!%)fmSc_hLf}_e}UDspd zp)4NIi3bCiZj0eqC9V(C3I2mj?43({Hk8=cgMH!y`kWI>Dlr{r5CvreIk?D8b4~eU z$S-bKYQuOgr(*u(>KWu*YPWx~;j3OQXzQEQ23cZ=lKW?x z)k?N1yh}ed0Xw;-k-ksw1R?VJ*RC_>>a?A5)Zv{T?TFFJ7|`|Ym6FD}TX^Q$%+Gtg z`Q|9jW8?~NSssMlm_NDpR9nCwa=I?vXm|4~``ly?=djguG@p-QqT=iG$C*0ZzS5s3 z$he8qqdf1_&v!G`+k>t|Ep^D45|bX!GVO%5^(-neRiOD;t2-YX$fwgj%Q?gK{KH?& zGD;d=5+Q0yQ{qa#QeB4*&>`>3(g7VLq0rzfTV@xZ}Z2-EX7G0XR^vKz73A8eh2H;(FgWOp-r>2k&mR$AA< zPVymiz$h=D0M*Y)Wd;WDDi*y5DISGmu8M~N^o9aW&HVR{>0ybcdyKaaX{vVYn}=dz zmso}!H@v%mjf@h+yrf`zPIv_Ua?TdXABU=%Jm5Eug!O{>-jT z^-Y7l1lyo^<8TnK4#^os6DGWPg)URX=BV7?ap%S455BH{QrwvwPAq-`Q-bGNtlxO- zb$);Q7K200;blXTTh$5tT9{^*Ho74REjRSWxPyV!w z=VZqb@%}Hy*@KzY{dRw0L~K2fICtzeH-Fr>?}B-};j5-``WWfwl%7&<*Xa`kehNOR zdhTe?*#es}-Mo{gLW|vjH}m97^w{Qdsxc+px=wzr3mh=?kaGs604Jh1mgy}wezY5cs2rXd20a7^p@p^zBT#6uzM5L?P9^e9gnrr@!P=BLNiG1|nmt>MFXQ3Xwk*=OL=AK@~Ipcu+ez*^_W~@(!-a|<@DOCdIuQq zP18>zmWy9m$yDiy<%F7?YCT~L+d~e|hZ|TN@#;aS$_E~G)$EFSX-4EGNc!mp5@db7 ze9KV$=t91bFjv0nD_`_=c7wX`a7X56RTp=IGmv|Hz@v!Sm!1JcJs|N4_mo!+@#L&Y z*9Iq?#PqEV`L>Jmww^P|6j6J^HRw)0S(+?ae4gA?=b8FBuc1OA^cy;QY^zjqEi;`1znzf&Ko3_t`wYEceUi$k`~R zpJPuxC42uK!74~5-7O3@oJW>=>F0!<+%x3Rqd4asf1{pKFF)a-O)UGk9`lL%2{$Al zT77<%Vbv8j4&mn`I2ZHsyjERh@YCCT&Z-;E7Snb3JzE`q{fq5`;zkWxJ(3wr&B~-0 z!jxiGF}cPP?D!SyTB|O#aTry|b1^R|_yuBteq1Hk_{Ih;pB_w70lvx&7OgsZ9B0+x zvTjY5FAC{?tB!saY}JVYp)Q{lFLBqU@heR68)LkLYdLqQroZ1#i=Wr>uZe_I`NKXb zLtUftB%bF(UHYwA9o8lme&skcgdYm3A7h{R`Fs>D!$1C+zw>I!nJUjgy!wGZ zDKrxr&GJ`+ z{(F3DL+QVV>sRL{5{_evJeBC51YU)Is=WG6gF26$EenzuvYl#wjf5@wdn8n)D!-He z(1SXw@0~EakfE;Wd>#Jb0~e0|>bno>{5|e4rN632o$1dk(YHy|z4|_cI`5=PaFG6_ zr_!G=I=15<*;JKR-;q$~w}=Ucs$Z2??Y|c^D&I;>IMnwh)LDJ6h01>n|IG6D1EVG? z`Boop=;#yw$6t8y9%ldV23ap3?UVe@neC^fRP%*8e+&0|dG(zObyj>q<@X!q)%P&e zx%w#eKW>y)-*Zss6**P2Je&GFWt3On*HGuvy~Rae>CkgrUiH5<&Qv~+sSab zW>9@6r20bHab|t$UY)~Wqrcsw%B$~*)Er~^Gff zAgT)T`4X-_X5gy)3LcSLmo)uR_nng literal 0 HcmV?d00001 diff --git a/src/Simulation/Native/bititerator_test b/src/Simulation/Native/bititerator_test new file mode 100644 index 0000000000000000000000000000000000000000..a506e00ca4666b41046cce3c90208005c5ca9615 GIT binary patch literal 93176 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

r;3;U_>04 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

n~ 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" + else: + raise Exception("Unknown avx type.") + + +def avx_prefix(complex_avx_len): + if complex_avx_len == 2: + return "_mm256" + elif complex_avx_len == 4: + return "_mm512" + else: + raise Exception("Unknown avx type.") + + +def generate_kernel_core(N, n, kernelarray, blocks, only_one_matrix, unroll_loops, avx_len): + indent = 1 + + kernelarray.append("// (C) 2018 ETH Zurich, ITP, Thomas Häner and Damian Steiger\n\ntemplate \ninline void kernel_core(V& psi, std::size_t I") + for i in range(n): + kernelarray.append(", std::size_t d" + str(i)) + + kernelarray.append(", M const& m") + if not only_one_matrix: + kernelarray.append(", M const& mt") + kernelarray.append(")\n{\n") + + indices = [""]*N + for num in range(N): + tmp = "I" + for b in range(n): + if (num>>b) & 1: + tmp = tmp + " + d"+str(b) + indices[num] = tmp + + add = ["\t" + avx_type(avx_len) + " v[" + str(int(N/blocks)) + "];\n"] + for b in range(blocks): + if avx_len == 4: + x4 = "x4" + else: + x4 = "" + for num in range(int(N/blocks)*b, int(N/blocks)*(b+1)): + add.append("\n\tv[" + str(int(num % (N/blocks))) + "] = ") + if avx_len > 1: + add.append("load1" + x4 + "(&") + add.append("psi[" + indices[num] + "]") + if avx_len > 1: + add.append(")") + add.append(";") + add.append("\n") + if b == 0: + add.append("\n\t" + avx_type(avx_len) + " tmp[" + str(int(N/avx_len)) + "] = {") + for i in range(int(N/avx_len)): + if avx_len > 1: + add.append(avx_prefix(avx_len) + "_setzero_pd(), ") + else: + add.append("0., ") + add[-1] = add[-1][:-2] + "};\n" + + if unroll_loops: + inline_FMAs = False + miniblocks = N/avx_len/4 + miniblocks = max(miniblocks, 1) + for mb in range(int(miniblocks)): + for rb in range(int(N/avx_len/miniblocks)): + r = int(mb*N/avx_len/miniblocks) + rb + add.append("\n\ttmp[" + str(r) + "] = ") + + for i in range(int(N/blocks)): + if not inline_FMAs or avx_len == 1: + add.append("fma(v[" + str(i) + "], m[" + str(b*int(N/blocks)*int(N/avx_len)+r*int(N/blocks)+i) +"], ") + if not only_one_matrix: + add.append("mt[" + str(b*int(N/blocks)*int(N/avx_len)+i+r*int(N/blocks)) +"], ") + else: + add.append(avx_prefix(avx_len) + "_fmadd_pd(v[" + str(i) + "], m[" + str(b*int(N/blocks)*int(N/avx_len)+r*int(N/blocks)+i) +"], ") + add.append("tmp[" + str(r) + "]") + add.append(")"*int(N/blocks)+";") + + if inline_FMAs and not only_one_matrix and not avx_len == 1: + for rb in range(int(N/avx_len/miniblocks)): + r = int(mb*N/avx_len/miniblocks) + rb + add.append("\n\ttmp[" + str(r) + "] = ") + for i in range(int(N/blocks)): + add.append(avx_prefix(avx_len) + "_fmadd_pd(" + avx_prefix(avx_len) + "_permute_pd(v[" + str(i) + "], 5), mt[" + str(b*int(N/blocks)*int(N/avx_len)+r*int(N/blocks)+i) +"], ") + add.append("tmp[" + str(r) + "]") + add.append(")"*int(N/blocks)+";") + + if inline_FMAs and only_one_matrix and avx_len > 1: + raise Exception("Not implemented yet!") + + for rb in range(int(N/avx_len/miniblocks)): + r = int(mb*N/avx_len/miniblocks) + rb + if b == blocks-1: + add.append("\n\t") + if avx_len > 1: + add.append("store(") + for i in range(avx_len): + if avx_len > 1: + add.append("(double*)&") + add.append("psi[" + indices[avx_len*r+avx_len-i-1] + "], ") + if avx_len == 1: + add[-1] = add[-1][:-2] + " = " + add.append("tmp[" + str(r) + "]);") + if avx_len == 1: + add[-1] = add[-1][:-2] + ";" + else: + add.append("\tfor (unsigned i = 0; i < " + str(int(N/avx_len)) + "; ++i){\n\t\ttmp[i] = ") + for i in range(int(N/blocks)): + add.append("fma(v[" + str(i) + "], m[" + str(b*int(N/blocks)*int(N/avx_len)) + " + i * "+str(int(N/blocks)) + " + " + str(i) +"], ") + if not only_one_matrix: + add.append("mt[" + str(b*int(N/blocks)*int(N/avx_len)) + " + i * " + str(int(N/blocks)) + " + " + str(i) +"], ") + add.append("tmp[i]") + add.append(")"*int(N/blocks)+";") + add.append("\n\t}\n") + if b == blocks-1: + for r in range(int(N/avx_len)): + add.append("\n\t") + if avx_len > 1: + add.append("store(") + for i in range(avx_len): + if avx_len > 1: + add.append("(double*)&") + add.append("psi[" + indices[avx_len*r+avx_len-i-1] + "], ") + if avx_len == 1: + add[-1] = add[-1][:-2] + " = " + add.append("tmp[" + str(r) + "]);") + if avx_len == 1: + add[-1] = add[-1][:-2] + ";" + + add.append("\n") + kernelarray.append("".join(add)) + add=[""] + kernelarray.append("".join(add)) + kernelarray.append("\n}\n\n") + +def generate_kernel(n, blocks, only_one_matrix, unroll_loops, avx_len): + kernel = "" + + N = 1<\n" + kernel = kernel + "void kernel(V& psi" + for i in range(n-1,-1,-1): + kernel = kernel + ", unsigned id"+str(i) + kernel = kernel + ", M const& matrix, std::size_t ctrlmask)\n{\n std::size_t n = psi.size();\n" + + for i in idx: + kernel = kernel + "\tstd::size_t d"+str(i)+" = 1ULL << id"+str(i)+";\n" + + kernel += ("\tauto m = matrix;\n" + "\tstd::size_t dsorted[] = {") + add = ["d0"] + for i in range(1,n): + add.append(", d" + str(i)) + add.append("};\n") + add.append("\tpermute_qubits_and_matrix(dsorted, " + str(n) + ", m);\n") + kernel += "".join(add) + + if False: + add = ["\n\t" + avx_type(avx_len) + " mm[] = {"] + for b in range(blocks): + for r in range(int(N/avx_len)): + for c in range(int(N/blocks)): + add.append("loada") + if only_one_matrix: + add[-1] = add[-1]+"b" + add.append("(") + for i in range(avx_len): + add.append("&m["+str(avx_len*r+i)+"]["+str(c+b*int(N/blocks))+"], ") + add[-1] = add[-1][:-2] + "), " + add[-1] = add[-1][:-2] + "};\n" + else: + add = ["\n\t" + avx_type(avx_len) + " mm[" + str(N*int(N/avx_len)) + "];"] + add.append("\n\tfor (unsigned b = 0; b < " + str(blocks) + "; ++b){" + "\n\t\tfor (unsigned r = 0; r < " + str(int(N/avx_len)) + "; ++r){" + "\n\t\t\tfor (unsigned c = 0; c < " + str(int(N/blocks)) + "; ++c){" + "\n\t\t\t\tmm[b*"+str(int(N/avx_len)*int(N/blocks))+"+r*"+str(int(N/blocks))+"+c]" + " = ") + if avx_len > 1: + add.append("loada") + if only_one_matrix: + add[-1] = add[-1]+"b" + add.append("(") + for i in range(avx_len): + add.append("&m["+str(avx_len)+"*r+"+str(i)+"][c+b*"+str(int(N/blocks))+"], ") + add[-1] = add[-1][:-2] + ");" + else: + add.append("m[r][c+b*"+str(int(N/blocks))+"];") + add.append("\n\t\t\t}\n\t\t}\n\t}\n") + kernelarray.append("".join(add)) + + if False: + add = ["\n\t" + avx_type(avx_len) + " mmt[] = {"] + for b in range(blocks): + for r in range(int(N/avx_len)): + for c in range(int(N/blocks)): + add.append("loadbm") + add.append("(") + for i in range(avx_len): + add.append("&m["+str(avx_len*r+i)+"]["+str(c+b*int(N/blocks))+"], ") + add[-1] = add[-1][:-2] + "), " + add[-1] = add[-1][:-2] + "};\n" + else: + add = ["\n\t" + avx_type(avx_len) + " mmt[" + str(N*int(N/avx_len)) + "];"] + add.append("\n\tfor (unsigned b = 0; b < " + str(blocks) + "; ++b){" + "\n\t\tfor (unsigned r = 0; r < " + str(int(N/avx_len)) + "; ++r){" + "\n\t\t\tfor (unsigned c = 0; c < " + str(int(N/blocks)) + "; ++c){" + "\n\t\t\t\tmmt[b*"+str(int(N/avx_len)*int(N/blocks))+"+r*"+str(int(N/blocks))+"+c]" + " = loadbm(") + for i in range(avx_len): + add.append("&m["+str(avx_len)+"*r+"+str(i)+"][c+b*"+str(int(N/blocks))+"], ") + add[-1] = add[-1][:-2] + ");\n\t\t\t}\n\t\t}\n\t}\n" + + if only_one_matrix: + add = [] + + add.append("\n\n") + kernelarray.append("".join(add)) + + nc = len(idx)-1 + add = [] + indent = 1 + kernelarray.append("#ifndef _MSC_VER\n") + kernelarray.append("\t"*indent + "if (ctrlmask == 0){\n") + indent += 1 + kernelarray.append("\t"*indent + "#pragma omp parallel for collapse(LOOP_COLLAPSE"+str(n)+") schedule(static) proc_bind(spread)\n" + "\t"*indent + "for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){\n") + indent = indent + 1 + for i in range(1,nc+1): + kernelarray.append("\t"*indent + "for (std::size_t i"+str(i)+" = 0; i"+str(i)+" < dsorted["+str(i-1) + "]; i"+str(i)+" += 2 * dsorted["+str(i)+"]){\n") + indent = indent + 1 + + kernelarray.append("\t"*indent + "for (std::size_t i"+str(nc+1)+" = 0; i"+str(nc+1)+" < dsorted["+str(nc)+"]; ++i"+str(nc+1)+"){\n") + indent = indent + 1 + + # inner-most loop: call kernel core + + + kernelarray.append("\t"*indent + "kernel_core(psi, i0") + add = [] + for i in range(n): + add.append(" + i"+str(i+1)) + kernelarray.append("".join(add)) + for i in range(n): + kernelarray.append(", dsorted[" + str(n-1-i) + "]") + + if only_one_matrix: + kernelarray.append(", mm);\n") + else: + kernelarray.append(", mm, mmt);\n") + + #end for(s) and if + add = [""]*indent + for i in range(indent-1,0,-1): + add[indent-1-i] = "\t"*i+"}\n" + kernelarray.append("".join(add)) + + # if controlmask != 0 + indent = 1 + kernelarray.append("\t"*indent + "else{\n") + indent += 1 + kernelarray.append("\t"*indent + "#pragma omp parallel for collapse(LOOP_COLLAPSE"+str(n)+") schedule(static)\n" + "\t"*indent + "for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){\n") + indent = indent + 1 + for i in range(1,nc+1): + kernelarray.append("\t"*indent + "for (std::size_t i"+str(i)+" = 0; i"+str(i)+" < dsorted["+str(i-1) + "]; i"+str(i)+" += 2 * dsorted["+str(i)+"]){\n") + indent = indent + 1 + + kernelarray.append("\t"*indent + "for (std::size_t i"+str(nc+1)+" = 0; i"+str(nc+1)+" < dsorted["+str(nc)+"]; ++i"+str(nc+1)+"){\n") + indent = indent + 1 + + # inner-most loop: call kernel core + + kernelarray.append("\t"*indent + "if (((i0") + add = [] + for i in range(n): + add.append(" + i"+str(i+1)) + kernelarray.append("".join(add)) + kernelarray.append(")&ctrlmask) == ctrlmask)\n") + kernelarray.append("\t"*(indent+1) + "kernel_core(psi, i0") + add = [] + for i in range(n): + add.append(" + i"+str(i+1)) + kernelarray.append("".join(add)) + for i in range(n): + kernelarray.append(", dsorted[" + str(n-1-i) + "]") + + if only_one_matrix: + kernelarray.append(", mm);\n") + else: + kernelarray.append(", mm, mmt);\n") + + #end for(s) and if + add = [""]*indent + for i in range(indent-1,0,-1): + add[indent-1-i] = "\t"*i+"}\n" + kernelarray.append("".join(add)) + + +################ Start of _MSC_VER code block ################## + kernelarray.append("#else\n") + kernelarray.append(" std::intptr_t zero = 0;\n") + kernelarray.append(" std::intptr_t dmask = dsorted[0]"); + for i in range(n-1): kernelarray.append(" + dsorted["+str(i+1)+"]") + kernelarray.append( ";\n") + kernelarray.append("\n"); + kernelarray.append(" if (ctrlmask == 0){\n") + kernelarray.append(" #pragma omp parallel for schedule(static)\n") + kernelarray.append(" for (std::intptr_t i = 0; i < static_cast(n); ++i)\n") + kernelarray.append(" if ((i & dmask) == zero)\n") + kernelarray.append(" kernel_core(psi, i") + for i in range(n): kernelarray.append(", dsorted[" + str(n-1-i) + "]") + if only_one_matrix: kernelarray.append(", mm);\n") + else: kernelarray.append(", mm, mmt);\n") + # if controlmask != 0 + kernelarray.append(" } else {\n") + kernelarray.append(" #pragma omp parallel for schedule(static)\n") + kernelarray.append(" for (std::intptr_t i = 0; i < static_cast(n); ++i)\n") + kernelarray.append(" if ((i & ctrlmask) == ctrlmask && (i & dmask) == zero)\n") + kernelarray.append(" kernel_core(psi, i") + for i in range(n): kernelarray.append(", dsorted[" + str(n-1-i) + "]") + if only_one_matrix: kernelarray.append(", mm);\n") + else: kernelarray.append(", mm, mmt);\n") + kernelarray.append(" }\n") + kernelarray.append("#endif\n") + + kernelarray.append("}\n") + kernel = "".join([kernel,"".join(kernelarray)]) + return kernel + +def generate_includes(N): + return "#include \n#include \n#include \n#include \n#include \n#include \n" + \ + "#include \"alignedallocator.hpp\"\n#include \"timing.hpp\"\n#include \"cintrin.hpp\"\n" + \ + "#include \n#include \n\n" + \ + "#include \"util/par_for.hpp\"\n" + \ + "using namespace std;\n#define LOOP_COLLAPSE" + str(N) + " " + str(N+1) + "\n" + +def generate_main(n): + N = str(1 << n) + text = "using rowtype = vector,aligned_allocator,64>>;\nusing matrixtype = vector;\n\nint main(int argc, char *argv[]){" + text = text + "\n\tassert(argc > "+str(1+n)+");" + text = text + "\n\tsize_t N = 1ULL << atoi(argv[1]);" + for i in range(n): + text = text + "\n\tunsigned i" + str(i) + " = atoi(argv[" + str(i+2) + "]);" + + text = text + "\n\tmatrixtype m("+N+", rowtype("+N+"));"; + text = text + "\n\tfor (unsigned i = 0; i < "+N+"; ++i)\n\t\tfor (unsigned j = 0; j < "+N+"; ++j)\n\t\t\tm[i][j] = drand48();\n" + + text = text + "\n\tTimer t;\n\tfor (unsigned threads = 1; threads <= 24; ++threads){" + text = text + "\n\t\tomp_set_num_threads(threads);" + text = text + "\n\t\trowtype psi(N);\n\t\t#pragma omp parallel\n\t\t{\n\t\t\t#pragma omp for schedule(static)\n\t\t\tfor (size_t i = 0; i < psi.size(); ++i)\n\t\t\t\tpsi[i] = drand48();\n" + text = text + "\n\t\t\t#pragma omp single\n\t\t\tt.start();" + text = text + "\n\t\t\tkernel(psi, N" + for i in range(n): + text = text + ", i" + str(i) + text = text + ", m, 0);" + text = text + "\n\t\t\t#pragma omp waitall\n\t\t\t#pragma omp single\n\t\t\t{ cout << \"threads: \" << threads << \", time:\" << t.stop()*1.e-6 << \"\\n\"; }" + text = text + "\n\t\t}" # end for + text = text + "\n\t}" # end for + text = text + "\n\n}" # end main + return text + + +##################################################### +# MAIN # +##################################################### + +if len(sys.argv) < 2: + print("Generates the code for an n-qubit gate.\nUsage:\n./codegen_fma.py [n_qubits] {n_blocks} {only one matrix?} {unroll loops?} {none|avx2|avx512}\n\n") + exit() + +n = int(sys.argv[1]) # number of qubits + +try: # number of blocks + blocks = int(sys.argv[2]) +except Exception: + blocks = 1 + +try: + only_one_matrix = int(sys.argv[3]) +except Exception: + only_one_matrix = False + +try: + unroll_loops = int(sys.argv[4]) +except Exception: + unroll_loops = False + +try: + avx = str(sys.argv[5]) + if avx == "avx512": + avx = 4 + elif avx == "avx2" or avx == "avx": + avx = 2 + elif avx == "none": + avx = 1 + only_one_matrix = True + else: + raise RuntimeError("Unknown avx type: {}".format(avx)) +except IndexError: + avx = 2 + +while (1 << n)/blocks < 1: + blocks = int(blocks/2) + +if (1 << n) < avx: + avx = int(avx/2) + +kernel = generate_kernel(n, blocks, only_one_matrix, unroll_loops, avx) # generate code for n-qubit gate + +# if user wants a main (for testing) generate as well: +for a in sys.argv: + if str(a) == "gen_main": + kernel = generate_includes(n) + kernel + generate_main(n) + +print(kernel) diff --git a/src/Simulation/Native/codegen/codegen_test.cpp b/src/Simulation/Native/codegen/codegen_test.cpp new file mode 100644 index 00000000000..1ff778ce96d --- /dev/null +++ b/src/Simulation/Native/codegen/codegen_test.cpp @@ -0,0 +1,127 @@ +#include +#include +#include +#include +#include +#include +#include "alignedalloc.hpp" +//#include "timing.hpp" +#include "cintrin.hpp" +#include +#include + +#include "util/par_for.hpp" +using namespace std; +#define LOOP_COLLAPSE1 2 +// (C) 2018 ETH Zurich, ITP, Thomas H�ner and Damian Steiger + +template +inline void kernel_core(V& psi, std::size_t I, std::size_t d0, M const& m) +{ + std::complex v[2]; + + v[0] = psi[I]; + v[1] = psi[I + d0]; + + std::complex tmp[2] = {0., 0.}; + + tmp[0] = fma(v[0], m[0], fma(v[1], m[1], tmp[0])); + tmp[1] = fma(v[0], m[2], fma(v[1], m[3], tmp[1])); + psi[I] = tmp[0]; + psi[I + d0] = tmp[1]; + +} + +// bit indices id[.] are given from high to low (e.g. control first for CNOT) +template +void kernel(V& psi, unsigned id0, M const& matrix, std::size_t ctrlmask) +{ + std::size_t n = psi.size(); + std::size_t d0 = 1ULL << id0; + auto m = matrix; + std::size_t dsorted[] = {d0}; + permute_qubits_and_matrix(dsorted, 1, m); + + std::complex mm[4]; + for (unsigned b = 0; b < 1; ++b){ + for (unsigned r = 0; r < 2; ++r){ + for (unsigned c = 0; c < 2; ++c){ + mm[b*4+r*2+c] = m[r][c+b*2]; + } + } + } + + +#ifndef _MSC_VER + if (ctrlmask == 0){ + #pragma omp parallel for collapse(LOOP_COLLAPSE1) schedule(static) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; ++i1){ + kernel_core(psi, i0 + i1, dsorted[0], mm); + } + } + } + else{ + #pragma omp parallel for collapse(LOOP_COLLAPSE1) schedule(static) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; ++i1){ + if (((i0 + i1)&ctrlmask) == ctrlmask) + kernel_core(psi, i0 + i1, dsorted[0], mm); + } + } + } +#else + intptr_t zero = 0; + intptr_t dmask = dsorted[0]; + + if (ctrlmask == 0){ + auto thrdFnc= [&](size_t dsorted[],intptr_t& dmask, intptr_t& zero,V &psi,M const& m) { + return [&](unsigned i) { + if ((i & dmask) == zero) + kernel_core(psi, i, dsorted[0], m); + }; + }; + pl::async_par_for(0,n,thrdFnc(dsorted,dmask,zero,psi,m)); + } else { + auto thrdFnc= [&](size_t dsorted[],size_t& ctrlmask,intptr_t& dmask, intptr_t& zero,V &psi,M const& m) { + return [&](unsigned i) { + if ((i & ctrlmask) == ctrlmask && (i & dmask) == zero) + kernel_core(psi, i, dsorted[0], m); + }; + }; + pl::async_par_for(0,n,thrdFnc(dsorted,ctrlmask,dmask,zero,psi,m)); + } +#endif +} +using rowtype = vector,AlignedAlloc,64>>; +using matrixtype = vector; + +int main(int argc, char *argv[]){ + assert(argc > 2); + size_t N = 1ULL << atoi(argv[1]); + unsigned i0 = atoi(argv[2]); + matrixtype m(2, rowtype(2)); + for (unsigned i = 0; i < 2; ++i) + for (unsigned j = 0; j < 2; ++j) + m[i][j] = drand48(); + + Timer t; + for (unsigned threads = 1; threads <= 24; ++threads){ + omp_set_num_threads(threads); + rowtype psi(N); + #pragma omp parallel + { + #pragma omp for schedule(static) + for (size_t i = 0; i < psi.size(); ++i) + psi[i] = drand48(); + + #pragma omp single + t.start(); + kernel(psi, N, i0, m, 0); + #pragma omp waitall + #pragma omp single + { cout << "threads: " << threads << ", time:" << t.stop()*1.e-6 << "\n"; } + } + } + +} diff --git a/src/Simulation/Native/codegen/generate.ps1 b/src/Simulation/Native/codegen/generate.ps1 new file mode 100644 index 00000000000..1cc506d187b --- /dev/null +++ b/src/Simulation/Native/codegen/generate.ps1 @@ -0,0 +1,21 @@ +# onematrix[i] determines whether to use a single gate matrix for the i-qubit gate kernel +# instead of using two matrices (which allows to reduce the number of operations +# by pre-computation) +$onematrix=(0,0,0,0,0,0,1,1) # g++ best + +# unroll[i] determines whether to unroll loops +$unroll=(1,1,1,1,1,1,0,0) # g++ best + +# register length to use: can be none, avx2, or avx512 +# avx=avx2 + +# blocking: must be a power of two and at most 2^k for a k-qubit gate +$b=(0,2,4,8,16,16,16,32) # gcc & icc best + +foreach ($i in 1..7) { + "Generating $i kernel with $b[$i] blocks." + python codegen_fma.py $i $b[$i] $onematrix[$i] $unroll[$i] none > nointrin/kernel$i.hpp + python codegen_fma.py $i $b[$i] $onematrix[$i] $unroll[$i] avx > avx/kernel$i.hpp + python codegen_fma.py $i $b[$i] $onematrix[$i] $unroll[$i] avx2 > avx2/kernel$i.hpp + python codegen_fma.py $i $b[$i] $onematrix[$i] $unroll[$i] avx512 > avx512/kernel$i.hpp +} \ No newline at end of file diff --git a/src/Simulation/Native/codegen/generate.sh b/src/Simulation/Native/codegen/generate.sh new file mode 100644 index 00000000000..2ec0557d571 --- /dev/null +++ b/src/Simulation/Native/codegen/generate.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# (C) 2018 ETH Zurich, ITP, Thomas Häner and Damian Steiger + +# onematrix[i] determines whether to use a single gate matrix for the i-qubit gate kernel +# instead of using two matrices (which allows to reduce the number of operations +# by pre-computation) +onematrix=(0 0 0 0 0 0 1 1) # g++ best +#onematrix=(0 0 1 0 0 0 1 1) # icc best + +# unroll[i] determines whether to unroll loops +unroll=(1 1 1 1 1 1 0 0) # g++ best +#unroll=(1 1 1 0 0 1 0 0) # icc best +#unroll=(0 0 0 0 0 0 0 0) + +# register length to use: can be none, avx2, or avx512 +avx=avx2 + +# blocking: must be a power of two and at most 2^k for a k-qubit gate +b=(0 2 4 8 16 16 16 32) # gcc & icc best + +for i in {1..7} +do + echo "Generating $i kernel with ${b[$i]} blocks." + ./codegen_fma.py $i ${b[$i]} ${onematrix[$i]} ${unroll[$i]} none > ../nointrin/kernel${i}.hpp + ./codegen_fma.py $i ${b[$i]} ${onematrix[$i]} ${unroll[$i]} avx > ../avx/kernel${i}.hpp + ./codegen_fma.py $i ${b[$i]} ${onematrix[$i]} ${unroll[$i]} avx2 > ../avx2/kernel${i}.hpp + ./codegen_fma.py $i ${b[$i]} ${onematrix[$i]} ${unroll[$i]} avx512 > ../avx512/kernel${i}.hpp +done diff --git a/src/Simulation/Native/cpuid_test b/src/Simulation/Native/cpuid_test new file mode 100644 index 0000000000000000000000000000000000000000..97f5752dcb724872dd7b5ff92f9c32487fa20fc9 GIT binary patch literal 17784 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 literal 0 HcmV?d00001 diff --git a/src/Simulation/Native/diagmatrix_test b/src/Simulation/Native/diagmatrix_test new file mode 100644 index 0000000000000000000000000000000000000000..b070bbb4ab9f3cce00ea93be52fcbacde11b2c31 GIT binary patch literal 52752 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

I%u1Ir?Gpc$WPh{ax<_MyQGPXK{2ru`5E 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 Jfs~~5{{e3c2aW&$ literal 0 HcmV?d00001 diff --git a/src/Simulation/Native/local_test b/src/Simulation/Native/local_test new file mode 100644 index 0000000000000000000000000000000000000000..feaf3627ddcc38da7f42ca25abd63cd50df3fd4d GIT binary patch literal 1043224 zcmaf+2|QF^`2X*W!B`tRCB~X9QPzrvWQnpQBnlNm+NekwYsjvWErb@8DA6iPNUNnn zDoaI*q6jU1&vnoIe!l(d^?zQy=kuJ;J@?#m_n9&G6uQF7luROFtYE_oF}$Q>al_1^NHihUsRH?F_yA=h%3=E zRN)V)HYBF96r&Lp@cG#Bl!4~{Lr2N@nqU}9XU;c0hYk1ibnFkcIZX77r8DQlTcp0_ znVygO?Y}C{OEh;J^^Y|lzPa%E_I)Jk@B8sz)j->mrL66V_Yp@AZO=cI4%6_UPrpLH zkh11;Li7EpCa4}u@%nhIc^9x5&;MKwt4zl$LC~jP|8IFVXugIhVtf9n*#^W6EM+av z7Um=N5Nh!MBdpD8hnDxR{V+~!UW}#0-o&s4ep@|sv=;bnp6|ESKXBjteR?|cb+puX zZ&zP9y=1&!_%iTg%53#o40cO3?xD>%y)T4O8K3^yk$%$soA#9-18m%srjkkVMPpg4 zHt=QQb@0IFN4t2s%nmzhC7wYgevl?!BREnSj8jY!!zwk5Nh2@E!nmn;U);ngWDN^C z*JX^#WI}lbHw~j32{J`uFj*G?e23F%G)55?ek@)VbE~E&V+;%7`528Wj6|ZdH_}Mv zXEBlzMi#&r+p%Nz30N!NLIw|2hRKd;V07ymTauvp2|7QMf>9_Y%q{-x@f4FtD{+j> zIASM!Ovqeor3_OHW0R!|DK(gI+bS)w#b`D{By5%*lSEx5BdE-vQ&TY##n=rK#u&-f zN*EnuYjm4`T$a&JO2rDvOfHP^$W-tADQj$bzK98@6~jnYAJZ@tw&WLP-@!A%)l9}BUjOykTlb2l0ONz8Lu{loWSYIb3Kqco1?2OUGury4K z9iyqrGa{EVF>cwjkytcG7mXzQbThV=gS%AN=A;tIIE-9cy2FE)l)9c%zC^<`##|;E znf zHS#250h%nCPo7*&Bh#xf8f+rEU4uQ1PNoSfkt0hPY_yUFXfBULg_D6>P>s@QPg%#1 z5M|oHDR#=v8=F0!!Bw(1lfR41#Tzcm^?NZzkrIyaZpC6LsgW9~Ch}|?Y;G8n)Nqm^ zZ^WQDP?SgvIu{n+gyqu|V#aH*WQGmn2!kV*TIgZKMQ75O)npBEGFxGIYpRPXRud+` zak!9XY7AE!jpIxVjx&b9d5msDVRIveVQh3vfI+3f;mGAgTWO*on{0>iiair%E2T4q z1u1Y)c5-yD;~+7pbPRJ>qhrZToqQXkgyYow0%3++9En1w$5gXp9ux}_*2*|pz{sbn z3CGE8wz|8AiY2poR~w~dS7>BX80M77JSBN!>T#O#QhRO*d5lJ*FxkbGHyblCu210@ zhk_iPU15-+Yudx3ChPj<;Iv)k}M6g#n$embLiDvOHMYD zm8D|B8dCf6d@XF-j9ff^JQQe3Ax=1wWP_1pDN6Uw)3~u@nz#*b6bUopu*)Zt>Zmm~3hd!`N=3z!X-%|h zY9S_LY5^BrICAKbJZEe!tzyuqqujhk%VC8y_^5nj((RN)z#w!>=xM##7;7I4*Ul+zcab z?zXT7OjyPQvzKGck;UjF8cmR4OqLfSsT(O@5wt5LDRBt$&_v*%kinGXDDqkqc^NJy zlS!g8nyF_Rd~9gNDd#8Hv-8T51^F@0 z$QZqh;+>c>7R5_(gKGgMWAO~GnX=eodL%4bf*u>@!q;>srt6qIGp2dIi>9#nQA#4l z#YtgHr7ve-vV!8UVMvkOa6Sl>VT`93sVh!Ak6q8$#N1eh?G8r9__#=LX+CqjnuAo0 zX=s^KF*=Rx7EXx>mw~n4%&39uF4jY$_Rs}k9aipvqmNsF$xajJf}@?GMis=|;7W+e z6k>_84Gm=Be3G9mLzQak#$FA(g(hgcGg1!@5}NpqBV4jJ%p({%f(wJA`f2zjsw(Co z-k>DQqY#x02Q((DiG?TAN#QZ?=r+IEP24Fqu{2Cx1|zc%W0(mRRbvxFj&^dx!n6dU zXcP}gJ|_)2=`O~Aw^K|y17oLSP8``JdYl~vV_@cag1ik!WaF9n&`~Z@%wr5z$Bm>2 zw~X%?&6|$VO)$7d$dhB3wCeL7i@&frWietio#ZhJJI3gUU`WKO!(kqs7aS(9luhBD zuWopk=?BLP7A;7Q$F_QnV@I6wXF0Rk+mosELW*o2g^wvSR$fh#YbbL#G<*LVMHQ@u z^L@1tGn(eHlY~W6>9Fi@ZcNZ7OaKd$RW>sA+8mdBHYZUj(i|Iblc0n#j*ucOuzaXS zCs9ZkC5{xRM9ZhsWfD>_(n3ixm1#qwPy`esWq7G6Jd*yDFdq`PB&M;7ws5w28l9a^ ztEDz633Erwo9ofBrx9d2Ib5B>!KCFeb!ilHCPf9q*lF&00u)AV-h2*>L}S2Kfg3O5 zFvi<`nHQ6T%_xn9ukB*SYBK5Zk>-qWZW^5tC0`du!+5A#OpHv{fZ4bO!bsHnqnNQ0 zH)AauoLzI0C4}Yg#bM0l&&T94&*++_T{fF)oBtOjfV{GEdXzzRo5oPqU#3(Ev`1vUWgfCu0S;Nb;q z1-1eHz%F1n5D4rA@CX9-10i?;;s9_EU;<$P9uYt!5Dgp#SP>6N0+0wKu}q{XGs>wb zPXmQjo{nSinvU}0pqW56DxW}_i!={3A1FZOLeNvdY2Yky9=HIM02hH$pbWSSu%a9# z6-X;VucG`GXbo@&xC`6^>VXE}KJWl|1Uv!oXd&ePd3_E}8_*7P{4uo?%H6 zd;stm06tD<7&Zj@1%T5X8v(unqrez24om`g{3HbX1v-W2B*I`r3g^!M20P@O02SZ? z_yB%@6*R~N06_rW*I^<69^yzPkj_R*OvSJ{Gs;qs(@|LtsXVA6%I6`)=T(7ReMWf! zsM9Kg)29^URzzV<|fcF~MN&pW_q^prygW3SLsB8zi z7H~jid>%*0oq%;SJlx*^<&A(F@;8BQ2DSiRfH&X+_yT?a9{xz-DmWd1NQn}L?U_;D zHzUWV2SND&a1i;SpiCePh(KO6Xbj3@LF0hKKs@qT%SnQAGLVA&qe#<1GfZg zJOZ8otau7}%Z&1K$lGR=+fm*D`V!~_UIX1g56}y|1>OO8ya(+^`3KMe;1e)}yw9Lt zfN#J!@+Lqhfgh-hxAPP7U#L8VD;fR)YychUXtKpyV9LGBK00yYDlfEVBm_yB%@KY+(}&_I;$LmGsXsDWX@P~Hz5nBj*)9tK1J zkw6rHM+|5z5ChrlD?F@VQYq+Pzz6xhNVkFd1KWXJ$lHw+pDzINKvdob8jSJ~qz93PB4r}Q z=Ve70co9Gp5QC=2g2n-dQ8^wo2}lM~k(Y+_2vWSgqmUm1jsqFU&qSIHdIHErF1J0xJ1<(?p6qPR_y$pHRK_8<0DQFYW z3cLW?fOg=|=s?~}&`y+h{iR+vcs^vm738aDl&vAR0pJUU=~x4553EIH+;p6gCXh{IR`0T_XOm*z)7G0CH{90rdbL_dy$h2f#z%5rD@N(5FBX&;qmq&j37LAjR``$UA^n$a@3Yg>rm4 z9^I(i1Ns(t2lN9UfB^uHkD#A`A>cDG0*nH9jD!9JexdRduJDHw5xB z05%`MLmhMhpoz+a3!g<%SqrHSs4k#~%6PpcC^rB#1eT#P1JnrRcs=78`Etltpt9)< z-wbkdR9*>cIb)g?!BnxXkeJX|6NM8z6TFwjj?F z)C=$iwgSEYE4D$t9hG;0?g9c(IS_O&un!0V_5&dR9tV&zLBoLvR3@hW-)j{3(ZC@f z28aXV0X!0srhpznIWYykM?&S}pqW7SjOiz4e zK;oELlgQDZ+NTR_XgWJ62f#U_KK?f@Jh(x50A7HGJOQMFphAE!AOeU1@J0Urh6Kvz zf=Z!W8k7#m0CLE~XHbM(2~eKl;l2u#RgtHL6uuJ1)B#OkA@X#QE(TqKa(w=O#Zsta zfa)y+H33!trpUwRGlzU7unMpSYydoLLG4h!26Qdp2sj~+s0HUXl$`+=U?boLxC5I2 zJiL(Nxi`vvK>cR;_%wf1-T}G`*bM{#dx8Bx2!O{yq<9{Rawcfx3_l9;XjDD~dKgFm z5`h#T6-WbEaSZZwRL%g+M0ply4v>q=d7vjz&YBn3Lhy=^e+Kj{Z~>J|Kudu#;4)AS z;Bf`C0=SCG*FdkM9G`v@@+#mqPz~Gx?gBHT7RvR&1K=U>7OMfw&gF$dh2q5K~BFvA~!{Ns%BC&&kZA>cDG49tuXD1QaUfbVG9 zIOqh*Cz1X{`Wti#hkFDui;vfpZ(m zVt;rNP@WA)B7ZKZ6v}0g${}U7gR4C96hIYGt^%qGEC4i-w+Jadj}GLzfF7U^ECmdJ zWq=W24B)XGDN%y+8Oke=X9{YLatqLvD7Qko8q^l$`21@jcR*!FP^THwTp@P{Jdn2u zbTi2j)kjlGMbI+f z5>Sr3D@gI_6*KaikXHeBkarif7PyDXbx85~?nC|rcsj#tMfo$(Hk7x6z63gfSIBz} z`UdC$dV#k9EBa905Bd@Kgvy_hegPc@Mo{@H=r>>t_zsK%6967RK!2h9H|P|e!(U19 zfWJLsWPlC8e^1;B4OF#I<|f`AYp0*C?<03MP^rI1R4;(xS-pF&{r zfC7LA{zv3_fD)jFJay0ofCjJ-d3aqd$n^kyU@`KSAT zf&IV%AQT7#B7jIB8i)fD0X&kBCL>Kjng)6dNCz^Jmj#-G@;p%dFW!ZyjJH(;`6=KG za31+3pcjEsRL1L-L0%420@r}+zzv`Zs0Q$;L5k;hAiobh1Rep8fv3PT;5qODXan$Q zNBR=96Lc0SjOyu*@tr&o}46 z{I_Y}4rNhIosAQgretlB*YvZ!$h|qf?=JtqbrbQLq-8g>eLtTLtDAkHalbh2Y94zhfI=ac8Z*e-$BGU>ktM^f|L(9e`6Mk>J#8%*ZBKo+us%WGqx5vIQ z@j%y>)wu@amXbA*5>x4q9y{sjeV|HEz&8+2OePXKhT;DSJs-0Gu4k=(~57RF34n0zDW6x-0yS+ZDlX->27lRE`BOI*uw03Z)!-P71w*t`>%{$#$KpWPaImZcY#!t z(o%WJ{Jr|Tk5u+5Z@!z){yp1dgx#dsHpTX~{+N`tzkS74=>@@iM4Wyf?Y4kECy@G< zu#M^ob~YweK04O7{Gu0+-L@tBdQ6nh+Q0frer*H&ydT*<^*-~2_g%}lXMF*SuX%s) ztlXI2@$g6Fb0eQuHy&4~lW)gr%9Wi9a<25{dEQ#GOoy}kHfOy>R9cre!=@$AC112X zyyg9B85Ihf88_A>csf@tDOBvqd@k?x6}hw6e%I=j#b$OL-;>GVSim*c2m19X@dbyO?QYdyW@ z13^dc{wUx*R1>YGVS0w4N;?}PlOVm$-swar`wm!s23FT$7MV# z&4dq@*YMb!9JcWgNDK1+y>;VW?>TwD`d)CA+VLFOU|#uiAM?@ffzl1{*&6G?_5``;S(@#e^YJMja!42q^ZuhISj0wp*?fL`G{Z4k)ALTwRvEaNY zK$_>pB@(LnVdTXI508Lv)gQha+jPiCor+f#(tiJGwb(?q@4eU09#*+s{Br6ySIPm~ zupV76EAe$J4()I2=$2Hik8HONujwjv6V-phc0=L@^d~~&d-=K) z`>AFsXM*Dm6~m01HRHbJP)Yg$`l3a`UWb%aC50~Q$I2|vxb(o#`B}-Nj8f0+@s6f< zm2SF=gl+b%Ta>g}9l0(afx}K`vvqwL9bmvB4q3rZZOc_7dGW+iJh0-u14YYkHxKd3B?)(deZLE2lYJ z`|s_2^W{;%MvVPf@TNn3;+bn!zr3089s2by{lb?z%A)9=;4$UT38h9$eqLzm9`eBI z&c&SDtJ0)awYZ9J8DGiux~iMWS7esdRzFvDmle45Kqzn<>2mLeQ`H-61C~h5+O_?V zgXfM46S>8*B_G#Af5)shNb__|{LY-SUGn->?;l^P`zKYp8f`c2Js-=tWtj7O`G!Qk z&xTEhV`kq}IQ@u2(b%u`bgcS@VNe{&?wI_T{O?s5}X7X^LexR65wg4s}+B%v#RX9FomJ^w@%~gJ* zhL=x9%ci?UB{l0ajQqBndEb>h#>wZns30lnK}#Z}wNgL=O#42{y=89rp@e7@55;hSLnFO!^+zM1ur-J&r|72*%JJu&uJ zY?8UvYgqHXL}lRi$&=-n5hj`qj?_#Xcw zDZ_+%+hF_r4xd)8q{h;~NSF0{jXqZyca2`wnrG{O;&)5YOX=6lwk@sKCM)wcxT54cP=c=vdFkL%C54o44e%o5}X zr96*lU$gSiPPSJ6Q*9<$za&HEWSMHbuUB1sPFd>P#l^*QZ(F2GZ)#cAv|D5>Q0~;) zQ?6?K7Yaqwyt?lxah+7!K%B%S)XHDq-}gOjh0X`bs_SUfr9Ox z*?!Jen^z@o7;oC|{7iS%;;l3+GTS2Yvs^XhS!zOeTDd|_{gq0=;%_-UOJ0eZ3ido& z7Tz|{wvp%OPKmks?|-$PwPBtc6Lt6BJf~|a%k0vI$XELZ)sNn@5kEDOwQSY)^i!NA zzL{^Cf&u6J}MJ>~g8)lgM%2 z<+bsfwRpb0_W3Z6w@;#PjjeU+?|oh^*CR8{4u*DpjB)9`bFxF{MZM=D-lmin$`gyO z-=i*{XHVJsZCjw6rnSPc>m=Gabg^Kh=3 z*}7-9I?B4uO!xl8K5!;A$Rzl6T^p{tvN!R!^2)DQwwN>b&3)*~=d&Q!hRY^`fBx(J zz1v?t*U?PV2@O%Xu5^83XR*PjTP#NsF|6a7_N$oD_>JQ zV6s?oYHCF`Wo?}%Db#NhmRK=&aNMiu)LI2^gD0nr9=&~kR^@nQ@F5;uo*u22{RNNi z=koNmTCNHI^!>2os%Omy0u!s-j8-V-Jet-0py*`cjg;#1oy8}VWWOjr)y=9(rtOczQtPc1x`+#9_0%l}x@Eq59< z*!bD!da>XoM)moRG-p2n0J}M(N?22<#+AEbyqx_vx7@reqo7Tp&Fl`SkMIKIR9b~ zAHRi^X^^i{$5#s3;8G?$Hc;4wyKFS@s6*aMcCwDdEN7a zE;0YbJpZc{^Fix2SoXOuoIwk<8%#KjIQKF;74}3?M{bsAi$>gA$Cbd9P}W|ipmAKt z`Bl1_d)Nu5G*Z!nbAx zrA`WY%PZZ1&qeImOVL}cb1du(gU?y^WIg&cdvn+qouLR5#XRBnPJ`dok3RL~TK=5N z*R|!0;-$!<*d4)smvl6`zYcQk&0A}Ceq&#T=`d$wOclq0In;_>FRPRSGq>NONFGn3 zm)$cBr3mgaRAb*&CTsmR?5pJIkzVgCXWOC^Pi$-3uWZ=T#roC6{`}G0>Rl3UzMdM3;{Z4fhIXEhJfA>p^ zKH~$U!$Uu_WXm${y;QWVwp<`H8054|wPL>0y=cD*6$b@-tMyn{#4~NN{xchb-*yNs zJ1;G{dR$3c({eujgOl~$=Ph0#{BLQFcUIiE?bVU>^Becl;fqBc+i!454)8vR9Z9Np z%}bZF;1A56cU5@(w)PDRymsC4ux>fmyo+?&dbztn2{rsAyXLOv=kI5!*5t*fZx8$wbUNaks^V9+A!4!cNE zj;U%|^hr22z6cyJ&}Dvp`~AY(L9>8snr`whvGFS_2OTEpo6kPwZkD{t<=dM5OQ)~N zOu+vB#NpfZFLhKi9?VbK{OK3>)#ThoT@``bW&Q3AT8pSPKT(#?^Xu)95cWN$6snNP z9b=hZKrdfEaSt1b3oh+y=LnvlX32EQ2RNMIiJaAB*7$uVjqQb^)cUHWd7~eFYPS1z zAKl96e-Y}*9qp1)v1OUIT>Wn!gU+E5i|C-o5zCpn9!vW#rYRT>728ou(>R#gIcw*I zsK?P(O?4_t33D|vTJFL+NhL~8c6ul4I4)R2+DO_X?b>#_t;$0(-TOlQ@6Rp;y9J=$ zfmhFKkJM=n4pbH#{VZiaDSF!S?&>QKX`P@YOPe@byWjJkXdiocP(j3*Nd}uM=R4@{1+BFfH!JR+S2cU~ zV^Jb~`TF&76WJFY+V`7XdXoM;uO(mSYLW96;mG+sWnD7s;Cl;Cp4wUZJ=dz0 zg5KOe@Z9{_r|o=oAs4tpRz*pq$JP9Fy}Y3$&@sO4du53F8@cm$md@!&^-@qW$Psz- z-s(~C1^FvJ^L>|x=$m|zf+sV*xVA8@yFN zH}%HfXK^k0NWyx5-A4)&#us?m!yhDh2c~)J)Tc`Iw0?;FrNT{Kcf>JbQ^k#R>sNjr zAzPH)=f-|9SaMu<&5+fAzNpCiPp*z$%8KWTlWYoS?SH-O-5X&R_v`|vv3u5a#?eammes25Hy)Rlm797w zX2mrp1lYLTi)BEB9^RAXJ%UIi_DJ3GQMIGguDI9x6iuN2F z>ef&C^toT#@@_%$?{Lb2RYh0M+8&$RD;=xxo=X^g)GPJ zaH_4@Ju(=-bN@vFbEwNF+;d{+j(5Z=ULn_y0V*wSQSB9cS_dn=Cb?2Rc3WwvY`kuK zr9$;x($fX(>Cd|*Gmq<(=lvR7e?WKDCI3TPO5Yr`Fw+cdyli+x>*g9Yp~1fJF1^8Z zp)G02y+@aNa@FqCj+NncR1@dqp1bmd{D$-*5v64Bn|*JeYVq1W;g9(cb9kPk%Y`k9 zmy^A;Q#pQp>iF8xG%xpr_l>X$nUfC&b+2X7BDp!E4ixEAivs!t)h+}E`73T*P-FN_ zXyeq}J7XV3T@s(&(_yP}jM>vR}nc-MzTJxk;${o3JJPcdp04XNJ!$T&*^t7XXze|@SHEcPi9ux;HQc`BK*e% zuut?bUb!~7j4PlkngzWAbft{ z36iNe@nOfurOPy>zD+h}^JLuNIJxgsZ`lurfpN3Bv7Ji{;*&C>_B5Z`wDD5+&v9=4 z(sSPX7JBa#>5_}Ok=MC*O?(pP!UYq?Vo$XNt1Cknm7DhF6QB`(69+>#V^-)!6%lTPLi9}Q4+Flr#k2@5R-BK z_HLY1^v3+sp~>0JN(sB2hh>kZe^cW-teQ6K`f$jPb@K{_pvE3~mumY( z-NZoMa+Tbyk{8=UE?hQn3H5DL-}bn)Ki6semsG2yp^__i*o#k3Zum?8Hu*LCWtjwuB6S zwbJ!*A%O)<6M1!x^>e@Zow!Rml;d|a_Eo5+jMzetmxDQ@iJGO620$hoiq-QyoG( zz2_UrDz0;bpiDZn%1q<^1AO#9IQ^0P#*?%I}ukQYai zw^zD-AKgf5dh^AhEbz2?@ucOIldtS9w5wQN6|hhJS{tCc<>B{Dk((d4d-N3D-L92j z?D%8-zJumN>q|~4U4C)UZA+H?nbTsr_Cedq=9NWS%-iOb`R1uM=Mc#<+L}#AYDIlN z*FuwmWA?}74By>|yj5`F$teZL#?cs=WcH>aAIY4CG_Il-FZm>Uu3I?|b2g=9yi(cT z7cbgXzBN#8-Kj{EfU4Ex-AcYGA2%JGDC?SJDsUXg&21c!T+=49o=@{+v4H9v^Ti>q zu9lo+!^6ejF0S!X@i{rH-rTT<@>A}}pvP&In>U`d{XG9VB4V(isrk`fY47fv@I_+I~UF?v%lO8F)LZB=bxIgIN!M-^l0u{>E23N z^FvuYeWm&G>r2(nY*Tlie77pEm^8KC`+0n)mG8|WT~o@7cZ=)Wzn0#C<=1zU^Eg6x zeI*$w=EU)IKd9cD?KS7@b7!{a?k}gHFUtD&3^yE{Y$;le6A;nq&p> ze&VZT&ZEuC4S!M=AjP|AiG*bO&rM!lLo#)$ajQxx8hK%1=RMUOCj;d!v52J84IP<#k=Y<~FD+WUcvnzvI|MG`F)w|L%zuSzHAif7 zhc1fg=X4u>(i!?GzR2og=>X|w>v-K!(bH?vN(M|cmp*hX@xl^cAGFoDk)iH){bskd z=B`5%L8}X1g~V-d_L996d0_X!*%H0w^n(H>o}xBu!cW|$-x;GGnXUHou%np;ty@$i zgH5_4;j>SO`qI_gZZ0WYs@T^QzilKayIU~d@ugjo*UmjD=h@oNUp|_$A^q4Tqch)5 z+J|y{JcX6DOFciOirHG}^0!zzKUyJXyS&H!ec{FSgvOiNABTQLx*Uzm$dstOeo<}g zhr4j4$V;y0iH?=Ahue+eWsQ6nVZ|wETi+ zj`-m0^n=!p#z9jZ=H=(_Up#sGUPMC$sX^oDK=9&6yH+J+Z@-bXQi7Y|)Zo(Pw5laz zT@2f?z_2-AGhCWB=A>QloC;0~cyqZH`txR<&B65F_gvm>=4=e~&5Y7eXWH+zcs57v zn%$(ezG*kXFJCSLbG5Zg*#Is19>RGdg?vXrBuzDz3Ps*w8_ zr|8b$Xugindp#%5&Y$dJJF{Oh$FJ6?<=a=O=@II5?k;(GG#zLxGX*W16yrcQ+(A%f=XG2t`v4K|*l#>$P zabYh%QQwHauMj%KGq=`aRM9P3B=OsO`^VPdY>WNb6KW4P^DIk!J}8v={FqU*>c{%k zz3&rt1dobKoxaX3qb75wh3(jnV3qsNg=7xvlpnM>WHC!3JgnhbYP$3AebZ2F%l3~l zK{64It`bIvL_Q97e&%>l#9sHA=NKuhy)Qr|%G=py&eq`}>6#qT+Lu$BQ$-i79Cm13 zZS`^8x6GPjr`_^FyH(@^Gm#5;a4`QwL<3&D%CyEpxxzx#-!*ZD)+~wB^Ev7q1r7)GF<45cXa;$EibTl3pol zd%M#&s;w?Pd(rMYW|4+|YH}Y=QiEBwrg6Blxq(@h`TQKCV|nc_{sY7>TeVpm!UwLenAmeXZGHlZI)r$2fuo|>AA<4 z-pgJ<8q9t0I(lh_iSxgwZKNx*`i*cg#eWTYy?&jZ?vZ(_KaO(V66S=KGHBvHX~e0M-*sk3 z$3p&t%9rGOQ{u(73SQio(2E(`b->gqqhfb(ljkOTv+fjl>R@rY*thR;zs_X(D~dhc z@^~A)!cf%X`1~CyY^%(ZR<$a;_+D>uYhrk)y}atk+t z(ut^!jY8Es%NJD4cXxBzJM3O;$5-}{CjMITW9g<{bLE_d+7^3ip?y|nlYwF2 zhL>M_ySjCreoNlsV4Jy6@9@Z?$8)9cj8xt%3K!{8=lfR@z;7{#`dlNb2E>v&{ilxn54C_sWqT{Jx`q(v-59YZt%4?M39Q z7w&a;dZG`CY!JHq%m0R)he`PhHR-53JX?Ykq~g5v2jjhW+Ke3gc*tg{%qvgrmV%`E zQuR~b{-ItgK7O}VeS6R2XTO$eWKMcYWjA-d*gtS)zBSlyS0SB^OKS6&WL*K3|%ynkM0EA5xava-|PRE>GPxNE#h z%Owo_MvUW*-;-;< z^UM?WBI=r4$u0fqEh{6AfAbd={ZMU_uk;dgU%XCs!N4@(u&%FQ5Xa1u;{@eS%)yID)|2H2WqvLNr{@n22 zeEivpzxliV(GLE6)ZgkG{-Zyl|L}+Z(GLDh;@{fG$4dB{FZqx5@#iG|Rv#a`;&1+A z@CE*IoZ!#X{jI(gv@iRY`lA2Xp2z>u4*smw-`dywNB{BX%l}qi{vX@T>_4_=#6Q}{pP&9)JHMd*-;S%*|7Zt)j{0xy;Ln5q&1d^ZJNWaH zf2)7+AM302kNWs?UVrO9KE}Y`+Q-Lk`dj_Vf3$z+AIF0-^2fpY!{hPlJxo|LhEuul-{?Ecr+MsDG?)wlxX18x8yP8afOi4fXJ7*-M`G zg~Q;7u@JV?udv)0d^^)HfAk=t5%QJc28sKOjj)0cBFJ~XPWa=YL_7HQ#p5iKSZ)jc zBWDQB=~sA`2L_M9+i5g_4FchW{3Jo5KgA+MJ37c;HjnTV@ETtw6#{7$rQfc%zbqW|3oi1pP*ejNB#b0uo$`$M9>q!3YmH}d&m&?vnA2PI;;N~k~k z`UsyNJp{_yzc*pf9K61XJ+Z#UsQz~NVYUpMsd@Xkr(4!Q?QeyFj_~@=WQqE$cGkd- z!+j?YqCXy}J}H{;6SWARRe#egqMcU!fmVpQsQ#23;iu;P_c$?w9f7y6h(81mA&Tl# z;X;7>o%jQ~5LL+EN+Q~s-TU9=Iy4gXO_0wz-jt3L_2c-7^4($*Z%nx5FfbY3pMgQ*JT*uCIbTcoE@-`2{eLS$wDbBsv0ndM9|q&X+cE!2 z_^i>idEvak{quUn{>8`j!@~dusl)wGxy1U)6E=1=fv9hfKPU{rx}MycMJ#tE{xCNL zKJFAA_%nQXJ6&k|u=;aoGg1Fw7*QWi+v)hahN$m{9*CAfel6?>yq#ZuM19tIq+>+% z$3cSdS@(h~F0A^*c4pOAgpp72cF6dk01&L}Oc^>KuZj`0f4xT{1bshePeXorXs&9j;PQ6^}qcw z+eFk~)=0F&I^I6Q;6(U(o!Cb76E@>?tj{F;ljva*A>_YpmT-})2&R^*>9Bvf%I-v-^+SncobC+hRzZ%80m*V}${JW$c# z6s+U(hdNRJEk2+Ggv0bJJWBaP|fwkPZT7~6VceXkxSeAaorB#Edmjt^b|!P=f4VuXJJ zAAAG?f4_)F#tGs)qW^Ior5z&L|A`Mm0C8;k72Y47AhyFsG(g2d_~8=7c4i&t_RERozW(F5nhgVx;q7;d{&)YX+$5Ikk3TR6 z!P>vaZWF%RHljZ3dY%S54sYi=8t{R&zq(%&?R%l?0PFlp4k7$UI>dH}LhEH%fDgMY zj*b6uzKFpfiFo^~|2Pici4pCr#s`#vU~RWI@=!T^&UI;Mc_VVb!lRA^LM2h9JfxAGI$JZ@}<&z9|sVhX))-;qyjPu6zG*iE#* zA6;iyel9!Fe!nx(AJ%;;1HM4P`+0sg;j_-uPS}9B&xH@j09 zvySr>=ZNK&>Hl}Rp)g=9e!esQINzsWU`o6l9T{T1EYNZ@$B6bD(C1=S``Lj+ed-_g zFGV+ExhL>1JRz>5?a8nvd?x8{t-^ABzi5Rh5lj*tO8E+Us6ZiLt6U+5Pejs!V_Xo|1^VB$s zm~fv$wDSf3;s}CuUaxvZ`09V$M@oE&c1+Oc9XX;IOmrJje}Ou&of*i_OCkJ=Cy9Qt z&UeEaqM!VRgwJXxcQJ8a(;NHmb-Uh}sQ>&vv0n30`zO%xP=XJF2EjUiM=FSZ#-sZV z>wfwOeIArjAeIZ4wdvTyPt-5QA7qEnnSO<_!SsmbE=8YnS;x8AI>M*m1HeJB_DlIi zqMhbfgfEZUaY6U@(4EBgVfAPCbz*%R{x}~W!{E61{O~3ZGZt3lO|N&s&N9vyPLbL8AW|=y+!J z|0N&M&SLaA7cNKBQM8b#&+kj@$2G{G1p`!1uP;8xAOx%bCtnbLDf-;RYX1vH_`gN| zyWK`%V08RCM*ZXX|BgOKGj9{^hoR+;F^GP;@eutfBoh+~yovR#M(=M~??Zl}_n&I$ zI>XvNx%Y^6I{vti_s=2PX-y>h$&0Rg>FD#t%4EW4oiAyti24+KutA7JM0c?KNy1MW zCbmE8_)lC-9RE(}|JTw(?Hk=E>I)ws+Gm|#W@x`CqVG@CQTv?eePbf}-ja2Ex?CW( z^Mp8YzO(xC6@AYeb76NEmGvyM*}81x+fexoaxI73<2 z8S&%jctiI=*5@YQg+x2+orvSm1hu~aeU5HL?;Bb7_h2ug9Z&SRYzwOIjjqofe8l>) z-v2zwBKqIoLaZ=Yla;Q4x>LcIz6w&@e z^u8Sq*XdB+92me;s}A4b4tRQ6ABs4V^^)BapvM zfT%B0K(xd9+#P|w=hwjpAcdHN`tu4l6uvzpa|xfdUb(VFJK={3pS8an(E9;#^f^uh zE!PKrh=8|azmHh18uEos676@%6UQg(ys#M}+V7Ae>ce3?9bfHjGEm*~i+m+;8f#rad#--+O7r@0hJzS@L8y^iBz`Prv` z2c5n517H2`0r_7uE*17eo+`JLUVtZXo~l07`5y2YVW3lk?G|Q(pY5D?M+sjO4t^eC zK5aSS+4Di?xVa2eKGoZOD}etE^OLG4mt_HeKuh4O{$C~&$MB!Q3xqW8eYqFngb=WPy(Q%}Gts zZkm;kdPyEjFmkK20OP3geD+SXo6NXZ{laMGNy=q_zRrso%)1`>1aQ^EOxoLZ%qJ-Q zHH^=1N??vdZ+NB5H1O7T|ANp?%uT;?U;CDii?>bO=TEs; zka3-h@q@~FX&mw@hphZV^d_|X1LNw6q*J{w;N2NdikWr3E{p^FGM}vTrAI69IX41+ zN8_L9g`hK&c2D*2(@x<3P3{|Nzp7pdI-zeuKB`x969CWQ`d$6bUP*8nee1<_cU$sV zUkrtTFJs&iO?dZFfPZf;aFb8t;X4=y4&bhkeziQd@=EDIW zco*cLb|X$6)p6#Rxzt=fg?Fe2`Hbxk{C%Wvi03Y6kd%snCDb!^`A> z8zbjg^vgOQ_nm@0sb$%d>OX_eqr5m!@mtV7H=k*o)ZBAuUq1Afg(7zlS7Ls( zKIt474|p`=UWLE&DCE=NZqQeM7quSnn2!J#H|=~aSP!#x2;ize?|+57L9UfIJ24LZ z+RS)f=^v)w9NQKAi&{G0kKKX)Xd&pU9VmM#_?cB2@HNCw%>(=%=Cvjg-tZQ{2Q>qI z)sv(3LI36=&`Biz>2Z_~<3Me9`9{EZ-vND4|6Xe;;CrqEojRoR@?OyIP#*9n2!D@x zw()x~Uv4J+IQ9P!FCrgM3O{&D0&k!CVuO80U!K8V80fIqQBo}qur{+KlK#g zt=X>jYyNG3@1GAkwTa)Z2=F~iKu7ITRuuX*as=SLiT`d}z!L^RK01GMnfKVR2>6qT z-=_fhUrmM_G;aUp1@x=(PQd39{|)Z9Zd(RAS5ZFon}N?5?k`_K{4O%@jNGm(3w+g+ z#?-^*);i_SbhK;xubivEXX~MmkAz#!_ayhBzPbbO57_SbC204f4ro{0y7N7}1@Kk$ zzZ#DXZV$MJeoF29;MIVqm_mB_Zg>8aJKR43pMz*ObRMlt2cNYL1HTjTcfJgG67!-; z|8usROna#OEMExvi>c?T51&Vw!QB&h@f{XU_M;nyrZ|7f{@CTlZcE+N=<*Ik9mzz;PS70Wlx`BV1iB_VA3Rg?J^ z9hZ+Kab)1Nx}(286MqNuiodl1+)eoP%mKl!{+INFjYwzpO2F6lfgt-U|JMV4 zE7vdT2d}&Vam*fA7Hmel`?-#;PdbZcN9qr~V>E3Ri%{tYCaH*%|G>F3Msz)zxO|C9Ct zUZ3k+wI|ydmmcMMLG_{SG~lN)?-WHo*NY+SNa-b7}uoPcDlFoo&oNYk!Al0Uqx`y9$3w3ONk@IZXjiy9kUvvjOlZ zE04XUGvG1Q2bE8+I_U2b>gP}FZ?7$YcVNDHFySw~2l!W9r*|T}U?t{JDD!WX2=C7P zL(BIA<@}a(#PA<(?K7U@e&w~y+o=3+7ezAocHL~{YXBe3hr8}$yERz1sgK#*Lim@n zfZz3I*sGI-H<$dgpaGyL;vEo&Lg)!_b3Ri%Rj^iH_!2faDhn~d$r!@2Gw0r7b z+B^yR|FXVL*N^+Y0K6vaWHf##tOWX1D}tXFNq;KWm0iOCZ$|iV?n{nky|>zvo})qM zb^0~s|CTA}R|f6v7}7cN2;fB*p}%T}uX+M})@PkY1o5w;f86m9@KXry5rcLYj)6T< zyLWUb=(Mu@&X5y;&u))?slQvw_3W{}7+>Z8&7t6P8T+gA`WW*e4{>~>$xltnZSQxm z+f50NV}5nem1tM((%1KZevgBIYr8j2N52|pgP--J^NlEg(dU8853BwU`W1A3oh`rr_dxIyV;)A3Z?yBLywf0YzKLfRS@CL}jlh48d1KiYbiVcDKz{`F zP1mz?q#(_V*L5F)|GK1KZaClzc)lZ<@P}UqJjFaFA)k(K^%bCR*CDU`0{E|)M;qi@ z6BqXZ%iIZlQ$4wk`L`NhgO2k5Vk-FA$o&Pi z52GSL{~OjVgp;4utb43933M6~eqb5sY+^n^_2J+?z}0pc83*>s2cLz6?-BoK z#;ZB=B+UsQ#JIO3*W)@LD<(lcg*QMBD(9)Q0H0*d(+P3t*X6V`^+?|}2z=Ugv+?=B zU-v8Yuodxd?*#hKQBPDpjp#QkaGt82X)p!!pJ{;pD*sXMf&S>z(3AS4|86zFU!ot; zar`U|@N4)uiO%JMI865Pk?{54+FjgKQFUxP5Jz@6yOQX(5|ST^L={<=>NlbRr&A!FYuQ! z@1gV`{2TD=S?4KY2c7a9ck7(O$aLVho&~*Czxg-UryufMp7Qw%^HHmqAJF}sLG&Y= z81MbgcGv9&{g=4kt>Zpe0xcuYO)2Q_2;#piaHHoZt#!?B{eYir&G)%`(65(HLC#xA zXZ|z5#{)I;CJf;p4*@@)P;Ls}{50s;_TiN&pz{;+KR1%j80zzuRgjy;$-AEdemCwH ztNuTB81N=M*Rz^*R{aBbCGG>N9c#{jbapm^JXH<}uc5!S z_^6=zi-u(YKV%*YlJ9-ed5H1+%nhLPBK{MyiRVE&?E)a0_%-*V-PTP3*ZFeCRiJ-A z@f#Aq0`snSodW+Eg#Qo?I`et%Ovhz9^FlGRK)(_3XJ;cmti|{+g76QyPFcWpZYbeL z?*#p2tOpSFcE0OQg3l$~M^k=AK1#jfzDY&m@A(k$yxYN#%CoB&SfkH&onb%LSslLt z_D$!}*lU6Rm$j}rnG1Lf`PBG!CFA@h*8b_yw}78o4g4tm*^2<5J`?s$<@Ujc=(=~sE~M{9o@N%t$uIf!VUo32FsKj^QwH2|HqR}p?;q>}|3}ONqVlyPotFK8Kj%S=qxzkbjRF6g_D9s-`KpWr|3m3tZYI1)@*c*n zRkgZn{kZ1~b0< zxzDKjxt@8X6_p`pQA_7L{3r15V*N%m;n#>GFm%>153hRLiuHBt=*MG-zkCn)NgR)U z?I7H|>uBiYn#b4Vi+28$H`-PLzuL9vm(ItjQNW*@3Ap;5yJWp==rrdzig|Iq>}bF@ z4+OsI+uYuuU%3(b`zrC{`T~9(&+DoE`QlE%KfDR}F5>@M$Z@HzC@YGhW{1xYpM_PZUUWo*9PiC-LCo9%`{Ss2B6fgYg$;y$!npLEJIp0C06xZ3j`^MOBtby+Hh`nAyREp0)k zH|c-&BH+s}1N;fXmllBk3G_R)39qma@CuJYA8sT374AnId;oN=B78Xa5l(N#xM;qs zZhy4vo(MWRPfs(Cl=}|oWRuPKwpN zavh<1UK9yBTUZ~c@ku1t*FSMRsCxLzy}<9pd}%28KS}@6ll2MSdGR~&XE8sSPW(zY zpubBdK+ej~m-IV!yn5Zop!3X)z*jy`ah}HP0DLX!52=m*uHiaV`MEp<@Jz1PCK3PG zo1kCjFy!_C;rD$3cthf=Uwfwp_x z5;i#BiHFecIM%T%ev>VLFEs}wl=CUMXm>mF3~HZ4Mc_tH?0nsZZvn4CyZSQe zT+8|U#UG%r?M}%Ae)v+rb-wrF`tEbuy$+-^v<>j%Sx>I<&xv_}PfY+FQG4fmhUJB&^_}H6J&c$7 zn8(@W)A3!vI;-ehz@wd?%3G>GfKR*Lb)Xyln!-GW@>zxZkCEKRQTfka4!I3reOF!5 zzhyY++xLW|T?zd9-$M?H{}1YS>Wf^(U8B0*ZDrI0Q#etpHV)me+&3%o^#Rs zPgXC!Utau{4KOgafC-~0(>s_>s82ksuJFyY z524)eR({4)|KoYDh`1Z)8`Bm1_u{(jdbaxp?FgSU8~rU~ z)#0>b9mOH$6FL&V+ym&BT@U&GM9|5jp4>?MLCm{W9gcn#68=L2&`C`IKWaA)Z3cV+ z{g>+h(kReh*A;Yhd?)aH=vT~RsNKuij(v(5RvpeyQdnj5KhM(hFS!p}=CMHiKSsI5 z6oSvcI4;-T4L++e&eZtx2;<2)%$vQ={&uFFuR*`2R|(L!qlEAIrIhqaf>Y~$whrHd&Wq`gTOZ;dWFCGJ;|+~lj(v`P)#UwGY6rSY zqQl5-M>){hL^>%sz_;rayS@lLO#2)1R6l+L=aGl&Al1VbRYAXi_aiAklRbd9;<;&= z=FYeF3BdE1pRZ4NVioW+pXZlvB78Xgrd@w{*R{aE+6{SLMf}Fy0AIxUtNiS3j&^Ht z9hyq~s1bnQ%>BXp2(NuF;9D6#j3KhD*ff8!}XNTmu<4q zX2#_k^FX_NVrHFh?Geb|&QHGIlJui6j_PMS2m^-BXr9xl4KgA1TBF@G?rXFpywkmy zU-4GHy=FA%Y-T;b&d2gMgU%l2LsYM>;Ci+$ACy=7(C8@e2U+LEn#Y6x`J=$UETf#S zZZhEgcphKU7tYs`>(C9!z*oEa_8;K0KkMq%AB9#0o$b5_Nyq)RTY*3O3+S`r@A?;f zR^&QM@kb5bJ7Mufcr>wYSs7@fkYTEkL_EE^i4z zledhv>T^D2{-^Xf@Dsy!C$rr&u5;B6KhPiaAGiYarxCvg<@_i2dDj#E(0ItdCD--0 z5#FmG=)A@KU-gf-9S3|4>pj$-l&T9l-*iN~I*zwL26?VL4gSTs4Ya`DIj1#ooYiEGYJjN}mZ;N+9&b2H%u#xMgSyMs( z61JPa4}8w#I$G%uc^UKvRz`ovv0o3=1N^i7fDa?QEAt_Lc7omBa1nlxAdc1WU*GcM z4Jx8t+aLYX0r*XtTznPeIT+xOojjM+(y~{5XgBh9 zga4z%AHM~1Zf*J5WY!ICd+cXucMJ1K>7=urwwvJr{Uh|tx^5c6bzjKmkeljBEcYos8i(=v zj`}c~c0PLs@Rk3)Q^1dXzeEK6bsFzKtU`XilZH&cTGd3qB;DbBS%f2b z6M=j_(hzjgcOKLfu9|AT9x17QO}Cz<=~8N@GQ-aC_eqIPWgNznh!+PB>i z3AkMs`Z@i`wbjt>Z=`=6*C~CN*HSqYj0PRM&hwS(fbVC#q~r3!JAhyL4CJQzd21~C zHS1Ee+l=jIG44Ih^H8dvT^kMN{Mv32pc%(OoEKw= zKUo~B1HTLNNaOHl%VJ#W&IA8x#2-=%_*+?LbtU2JCEzr4l3BN`ad=l| zFM-Zt-lwPb;isD*&t*f=ZWQ@B%=*B~c%DVn%=v!)7ws-Li5>Y~cK($6YcB%*Xs&;& z625-|>cAKA{*ws8FBd_Xew|=_pw8=@M9?|L`(xD})_)#+HaP}9A19seoL_xH0G~{I zn7$qK2VMp~b>3ZjC*TdZPN`2i^{BUuufucrSA{7RdFuY7KyUsyg2aJ7ejO@$oxG9Re?M?MHTr6&ToZ;jJq0iYTO-Y$9~-c z{7v+Ojfh{R67cPNGoFz|jcIo&<oD1UY20-dpv&N;u%-8E>dvJtzZe=r1Y{`7|LvBk1?jIZxG|EEa=f@W;-8{B>Qq zv>)hPO@F83TZeIMlRJU`CF!^70DhtvSLb0ELT;E3I-xvYrtSXz7T{Z!K>nRcXLni9 ziD2A5neZh)0{{K*{VZRU{vbe^B8 z-wX0oIgI)hbk^~Hp2ftk)&_h&%6cC4o8RREJ}ex3rV{_MBG8%2`&GnEJ73rWz%OSU zGLi6k9>BNp{;1l7U&B1ZU(7R%A$-&q$iwfq)+yIXAZo__W!iI{7o$Fb+%_-|Uxjpz z97MZyS_jJch3cSlnDrGZ|IxD0GxP^?9i-#FO$>s8AD<68ZApLO4}h=S0lN`T_}z@7 zZf1S5+QXTwvpUQ=aJ9D)vEXMW_wRImt=W%$UCp}ms-!=%3*bM~&&u|S^EG2W)2>G? zHxKmfcRFr<67b|Zq0dqd;3UQyDK^LwNr?fIo=)q!S5$@f*PR@jRf8V@N9K z)QJK8``F+280Tcq0$k&$ak_L09Mb*? z@Uxw9m&SEfnOASf^Smmzw?#2bzwCE9TD}7KO0H9MKE8Gl=d|y}`fzzQzj4mzq4-7R&Da8VWl0 zI~u!w0=zZ%ziN>GlwF{2-?LHY0rc115%ctC;?JNw2QZ(k_As#v=$B%BuiBq}QkQG= z;Uezql_#B{%K@LndPwy<-?arD`+bf0(SXM={;W+p$+FL7|F`r{b~&gD8w_5Z;q!Ow=z$tUw^q5p!; zUk_k>)qbw71^fi=)9E_mjk>^Z&b+Alo#%v}k^h_4Ip{VY1K+MUp4bs`Uc-5+{oR@k z{EN1NPo=+gH2C@PI@rT1>~ELWfZO%P)fo5M@5M|`M7w*&f_^&b+}$7W-D4mJjX#^e z26%VghZ95mk-q_6k@x>7KR+G^eC$J@qw=4>2>q&f1KQn1I&Vz}d@lD38e*73zUd7* zcHL38=KwFub&&FZtK=_@-rjx;afSNRSh4?RTvl54;hAx0_k(TVNA26s)T;)U1FrME z-FuMpRIW!}CjYyx0(=th2U|<{_gq)n?}k*40RAk-+nL0_uQcGV)Bozcp2_@POP-$! zCH|&qz~6BYd`cMRd@Tgu(L>7)>=#34>Gr# zMSxHBN1us;89LjzZ>9R&l<~9e2fG~u{XZDbsDG@H3b_5g*k6T!&)|JiO21}z@MFIx z@*(p!DX&1m`!e3>I~;UU@5VT4T;UlA_|Ea@S03dvWjElt*F$dUg!lHKzpYu{sB~J$ z!r91SG4p|%w@FR|9s3=SY}P+~#eM&9(tnD1>5NS9sq4oA`aAm_hlj;rns(=KpGcO^ z&iC}YXxDzHBV;x3?RPo`KLz|}x1e1em*iI<=g&D_>NoQq2c2Bn2eqFQo&@~Idmy)N zP%S1E$cexq(4LDw((T??DokkMrY?geT@lzvR7~hM<9+~g@DA1X8 zHTcf~I3$mDwO<3k^9g@L)}dzpF16b*>EL|ZnFlMwy4IG2 z_q+#u+V6th*9~+U@!cGiPfR4_V85d=xeMr=u+Blm&jH+i|KcvL7aB2dkV1YYZ2^A4 zlh8Nyj~fZM-&NcufrQad`<;shUje>~df1fo*FTMZHD_Irj@KnW0Y9Gg3EJ*MHGprw z&-m9E$l>^}kaJzqFGqdeIRfxzgtw~=`u2N>$Mt;Kh>U_vRi|1 zzZdhF2YlM^YxHUXKJE9v$}(?hzlYeNA@Eyqou&5SGVTZ2?;c({7VVDb{8D`zy$E#d zcMp$q{rglsjIZj|v>oWzL2G@tnsz3G_FVn!n~#A0pwA#@)&JA$0k`j8S|)*_k=uUG z7xhz1uK|8b?rW&Op8G!Vui<)1!gc4nmw6KV{iBMkb8Go9?ElxqzqB0W(<>czyE);d zIKD64134%^&o%?TeV<9jeDG<%qfv+Xig*7M#gI?saGw+aoBrDGWjx9{Vf+1yTPB14 z-U7%|+@FQ9{m7=T0hh4H`H~s~-+pf*iR;R{UkCoZ#D9f(xs3ZD|2qjkxe0vM zT?qU(g!kusKh_rgO(i`4F7(%aH}Ltl0RNcr&o#tfEDRX=9Aq4>bpBvmWWO8uv>W&j zS^G85zXZ7bKHx`V0JrObb1Aob+M>TI=S=yF;iqyfz&|6O?SBW{e!uVVqa2sg&}X%i z+cyK>exI@LpOB~he&3o$0N=y?5sh1Z?+7~g{{=Zq+Qj*m4+cD*@l|8;dCBvD+wb)4 zl|aSxYclY+J_9GXX4dp<~?eWe#Hks|2v*D(s9{HzgDg$ z=p+!o!Aoe@eqZn1vY=zv4?npb`1ZSa>sjZs%E~uZhywojGHCZvwtK6@u_kWc->$p^ z!B6F#w>9W*&kq4nJ5z`G!vyYY$S^tIpMQYQZ9G?EwH&!0e-@> zKwsq&g-)PFVB2SL&EQ+eSU-YUGE{hI^(OQtRqr?+L-4Y z?RO&HO9DR?27%8`r9f!56yh3vh@A;|IO*@@zJC+$ldAuEZ5ilX%shX6;t%J!C;NT9 zc6-pTPCVD3arS5ibCLD)&u>ltsh0NZ52^^8mwSfn)IBVcmts75A|Ia0~5x zZ_-(M0Qfh~!T5^WJ6|=<)2rETd*XjF6@1$F|Mz_t@B>eSe~l+cZw34)_bau(6`w}C zrFp-f_N!DS;M@1GrM3h-?@G{DJ2q?-==|Oo{P!iFk=(zw-tbvhpx&IFyg?a;37JKQXPG4h|y^NF#fGx9a!HvoQ5!d;AWO7VPgG~p44 z(cih;uTj5wYa_s)couSyWt#K7&iz5Vt~HJOlJ{73P}8~Z^B&vPxb9O?7{mX+jJJo7 zpBh)8-FUXE{O<_^d`m^}^EUD8j|V)D^$9AsFGfHPO}NjcOKE#Z%GUu-z<*VXu8wKIT~7gQxx4+7oo*n77gS zm?Mg3=r^JtRKIW}3H;da3~uH6rMq?BYPuL$LuX+d$Y1+)$2`z!&GUmU^1tOv;BV&n z5%qU>-2pzQ^PLN|dyh;6ozHKFoOQmGo(wvfTo)*vZHzzv&fR3+GqPch?sl9Pc!C)W)T0D!=N*(3+RZualXTYfN#Ig^7ty?A7!11+UMoZ zg3s2xk4wUJ=Nmo@_{R@I&g!q+`?`>1Rw&q{puilGwpP)Hk$9mvr0PF2_UazW$ zcI~=i_c*}q`s65{n;XMCu+r%?7xeA-6mDX^t~J+XlgLk9=FeXriGC@aiSxk!!NM{Q z=Iz9`_eu)A-uB;kkQY-nYU4Ua*+GBUAg|sBYq3&XRRW%tLuxq z?gX7Dsc$Oh)goR)KZE<%tw|?uCgA%=BM!NO@W;r{XAeV9)Q&aaI=43K>LZDtE{?{T zr;HD^-M@~bzxF$H6K(JcVe9qZ{72g^Aqsfalcr{{rHc7*QNc` zaeS=__+QNZ`ree=-Jb(KY$W77o$y<30K6*K%W5YJx}v}T(66bSr;GzUj{aBm^WW;= z$F2u{eHZB4@7B$^6?D2XpOZ#@uIKu95B;?)Z=J8{K+vBx9{fiW{xa*6TQiRxMfe>n zu+Nxgoj*#We`&=$t@iih_rd3@%-d)jmADPh^CEgQ^jybfE9)L7 z{sy}@p7h)F1^wtJK>uIr=lf}Z|KkQfTG!OD0_fZC4ul;9ygAPe)g}GK-vb`s7xe#P z{Q2f};D5|DpudjzPp~dGDFXcKIQIDlbbg^fRXetA3E=j7bD0%D|G;+0`BBn$&jCD~ z@lPD#VOgNlEeGxXMtIEIkc0hx!53W5&Kw1N_3!V^2L6rQ2iZY7+XsNY{q9fIOTbU1 zx4`Eu#4p2mWB*jhCx-9`nV;E8|5%^!20ZU(zfaeg@pc9k$4&g-o(Dhn`*90z1V2-) z_44ymfgjcy{EXx{-c}#|9l-NYIxcs12mT|iG448##*@xHR{hNU37}J+_s>60J{yYy z8-2FlO&G%c>ycbiqjxpJQcV^yW9O?IY6YZ8^Jg@d`<1>&$0_Csv`N!Wu zXDZLRXdH4o>q71K-I7HhhJXA0zAx?v{q4M$Ps)v)@3Af5rwQ-(R{dW{{@u*0B$59| zJA-~F?kB1pTXh%U+fPIODxYd%a11{uQlPgQA6AtB-oWkmjM1`700ke}H=4x)<~+k8*h96Ub*)B;a+4|MG{ReYP z@w$z92?R82BiVN-32-qaXqW{xqk@ohjHHNIR21;{@V9%R2GMBQ*P#gH8SYM=e?8bV4$Gir4s{Tw$0G*h7(e9NT zuP?p<{&%da*LhU&2;!NsR$bGBagf7U)@A8j(bJHHCasKYyBzc5VNDEAt*Lc|U;8mtivTjr=cWz5OWi6TKSn zd!iwq5Xxr?<8b?Zu~6xtp<~~x_8{};)0l@*IixOx-0XLDGME?ro9F#C4!mkF`a6~T z=^953?#6Mn>NB6K5Bhzm=k3|A?HS;64da|zgvXTuovsVe-)O>rn-Bb(+QAOQGOn1y zc>5&h@8gtDGwvTnF@JR%=^XwV{7gL(ycgN|*tH%Q%%oURYC>mQ~|d~4`;+6y{W*xy%00Sx>VtM2F;<_+rSP(HLv zU7r9QyH0y|7x3fZyjHz>LjoH^zclqNhV4Gz5_Fc)Z>s+qcLH$xJ%ydz?>NTuvzE{zwk%+r=F?-;Jff&k??FuJ-VC*57WW+*D6?7eNk-UjluN^Sepn#mJ`(@6k;m z{e825-?}RBb>2PCJk<)TuAtX+@N+Hmz{-DL$#0nVea4O{?@-pbV(S6m|2>=hu-(35 zC=5Tf_}-SvX9??S?0c3rPXqs#*2lQ0UrzWFaQmHwrzG$&^fS0_x|!|%dmmYa71=o$%w3Pebx~ zQYML&ek+Bf@Nj$XHb{@7KJ!(+s6%=q(F+J~Nm4;6xD zTuPUP9>x(~NgR-Y4|^PR+7do7VGY>f8EBXm=XV3v?r$N2n*u zhd|C6ztvoecKfhS^kL8 zI`8%}&ped@$Wh|YT@E_-y+&=11O8MT=&RkE_9^(hzY*YZq;ts?fH$(2Ih7_`S>z+(>xk&p^k1&*G9Q=zPcLmNACjte!PF9#zpwS*A>B!{XX6BcL49m`wiBU z&Z!=t^DFJoM8a=<5b#z@peL%Iy$=8$&3BI8Cw>g=x&8j&nm%ava_%!~ycfavF#i_V z^H)jdeKD9u-xl*6tIGN5L4e!uGIW)|$>3iX3i&Ia>)!*sHS>XCq~B^R;ES#a#J`kz z;43}_yf*QRUf9cKWm&Pqexjy=d_a&wh z|N9K^W4~+gF5|=PjB{oYzw993zshx}`h`8GARqhvg8s6QH}V`gAN;#X=Z%+v|0Lt& zc7%sL4f^&weJ^$goh0s8s$Q)+3b=iLe#rBHuVEgnJ?Xbzf_Clq5dYl{eES`uRq=pN z7+6~wD0S9Zw2sk#$w#t5Wn6>C{DSKFdy?yq390iNgC;_7RO=mE3)oL{r;7& z0B*li@K%4cTfSD{ye`Xpru}}|9gI(orvd*pwp%Fz{p!GXDm8Aob_w9?7Xn}BZ$qv_ z8#AwxPC75l1fL$O{(J$?3H~(~{Z%{my{rpNf9*QVw95du-&^U}9&r2K{;vO^-F3WY zRqe^zVUW)#`tfM;dGZ0k?RUx=KLYra$H3=A;*S=6Fm<76R(`T0;|Dvg{wx&y*nT-q z7%=_acrWHlL(;!K7yYvB%#tV2ZUamIYkvVcbsxgGXgu(09N-PU0sIfBX~-$fqaaeORA!n)6-Uiu0{s4tf5>eN5RtcE0;* z_eNTI;G?YfoAodFp9A!e;Zs4UQ8{#I3E?YN0=~)vxa!sK%wO5}Fnl=-{k7j&yGr5< zGro7R?zaKyzxOckS8@HW_M|TTj=he4igB-94}35A+(!SaerkraW7@snYWJHb(6618 zv$oswPQWX4gM6N&JR3dAdBHjswO5xgKD6(7=r;p&?DyJ|BhX*_9f1nv0k_vjm8YTI zO*_F)eabECBEWmFj-6%GA#tpO${h#%io~xG3;O%HPp5t}Rss(*U+j0;4za#*80)gs zu6DT(?Otu2KRt2;aQhuM&!v#V2r1zb#X%6Uj zqCHpqD$$^G?P}1G?L6mOBooT?t1asWRc|Bn0dI5?__AzwzAEAe4gNjck5>FC+?TZ9 zFWAX?@|XDTc|6F3yb=TYLrY=)svgdr2m1DVZ53J9)QNcynLf@}z7@Vg0MJ>-`}A}kJyi{GyPmV&-+Lmx-y+NG--@)_3QcmD}k30sr z{l42Fo_if}8~EHx{5L;DyOr*Np6I%7P%_~5`)eB+Z`Mt}B(fxe{KoiFSM!1r@MRQ+l8Lmb~vp(pBp@1GC&YOa4(&h8HYU%VCcn~{Fb zv!HM1PwGtqydwRqu3y%^1v&++yHk6TJs0pstWVZ?l*aW%2i`N#knOHvzHZ>P&}Zed zT^!mi&AN9Hi}MXBAbr;Bs@x{W0&c&9*8N`4>CL*?A*9o$Bjj(tQ?`WuZqHYckEC&& z@1824bDy>Ee3brlXd3uef3%MBJX-xy=l2syr{P}EN#Xv5uJ79Bf}ekQf1~DUr^$lF z=)=mUpri7y%edEmH*FRD{v_UabOqaeY#Znty$f`7A7>=_pTu)0YG>}|zE9nOkb~N> zHlx7j#uJ#oYHvT|ytChB=rIlWUxkBCD*17b13xua0N#P{WA6aIgZE<$CHyBbXhsh9 zy9}3oj&XnfDfCO%nk%f9?mLkF(u~ifGratIYTW_zqA&4pCjSQxfR4`J{Alo5jq80;Z|D2t8PHk6{O~}+ zBk8Z}PQy6LvfBB|bO(Neo}jP&Ix1broK}GT@!*XH}oa-VFJ) zc7y)aq%%kownh%~xG${uC&XYHxcweP%q^gA--l3z`%ts#*P4+2=~`&F9p4WsB)kLH zcd6qb2W>ZX5!$uicYCon)=ibHb@4@c!0*Joy85Fkl>dSnpr68a+a3fzo!MX2!yB0Q z{*mjN8;L)y0qDQD3vv@SobMavo$UAi4oLlmk=vtOUue4v9s!-Ue22(IIv2@682qcp zL;uwthKvK9BIf`55&yK{oBi=c);j&lE}%1$`+8f6zvofF6FBZ_|G!{eqWvD+Q#|)^ zlIwJ}Z=b&lxw&b#?`3>DoOML@dw-W4Lc1I5KyEsZDpKFv%-^csj;{cG`(1{n2LSKY z5Ofs(*Y=RlU#!p3alDuE-$*@FeOPca=v>zd`tTb0@4XE0#awr*-d6bl{oQ?QV7sGg z1HXX#da5URPXWH;35=uK;Y%6+EcyU+be(wTOwdo`zLmyr-yQ(`Pv&)XUX02C{bgJ) zYyRig{lK^1eW)M-mC>s*ybq@$^&yM#PXq3=-%9wWV&_d>Vx2X=s&jq4hxaw9oVRly zwhZe`l+PK=uiEbf&3FcU4(B_<8lU_w4#n{K71tf2uFh9$HQ@HUaC72x0Se6Gsp@N?)_wXx7c3Fn-zEAz=0ai4S|;d{z}&YshV^Xn7-BJI5We!*>G zD2zOZ@qMMb#Q%08__yD)nDiL%D{>x5I>Py0s}20kR-XK?`+#r1TTx9Mw`q6wrI62y zq!YagaQoeg1^=R7b-Aul|9CV3@PtMfUr|fvtMdimWBCs6JA}7je&z=5r>p&}+Y{|} zV!g52&%Z7KohIC0)A{~ZH^6rhzmW8|4F;WZ-2ZAz_{om}-^g*VLim)rYylfRS5e-j}ZMsdEAE!FWUAbr}!X@9RA+fuf-k#keS&{G8^v+wW`K!uV(L z0@y2!>$)d`|BB5qjw+wMPlEpG<`@^{=i$#NPu>GBX2<#N&H%jLHqcS|$LFBlds;uV z`}9S?-;xCR?5zpT|EWC3 zs{DU83i$SW83*FQPYsT*+Q}O40ltg%uH{L8C+i~Y_cH2L2ma06uhDjAr=i_;j1N_> z-e#WgbH3*iL;5|bxAuKsUvi(telO#t=IF2eo<$q3yY2TcK8*mr{qEAk?}5*Q^k0(p zbiQ_O^s5ffL#h5>u^#Z{%s1+|ciRTI`%CD9+SN~vpi&$IGHb58?qzsKYr z0QyJfL$5@=ov(a8;Kz6lSLOfgTEMU1dj~pSYBL^aL_L)0?|g5T1AYbOW9t(h$#XrI z@?D-d!rvpGb-A8WeXf)W{s%k*ImmQ&zCoQq|Nc7g3&RL+B>{t(*Y=CUqv5$p8o5`W7+;M?y2mfr#T zi|IEt4s7r+;P!hQy?LHJ<__?=pY${OgZ|M}*d?_mCq6|S9?kbhdK3SE@MGfhTC87H z{`)h2&Wr_}X|#L4OCrU{c|{c3)wt*?+LL7&fM<~Y(R;v;{q9EHS1~T%zX1G6#IG*2Nc{DOLEnDwFNSqxhiai;GOe8NsmsxB4DY8^{$nbiTQQD34|wG?`yxZ8}yHH zy`cVO#zDaC_d!O{-*w@BtMWgqG~)LC*1gS_3xXL(`@O;>?$;#qzGCgyOH&{R`(3A# zoL@g4MZa|3ZTuMY>(qz*tFgaLXdmqN5GTI?{PH~a9ZCE@-vInc<~@|3ORj*N_m{$W zX*@Y40{Hg5Rku?QJv_IfblRr@|Jse9qw}#!E6{KEIQZ9o)zp0cVc@I%%w!#@{Z8T! zVt0+4?e|Sye;)E|Y29BjXad?D%l#(RlLDErhE5FMU&yC?a>@bUemCl&GB`i};wX&E zLgM%P0CenkK>nb8+t2$Xb-vfE1bemr9z-&#hl$l;-`*S!xSR9`xIn)w^Wmz8nfn1h z#q)`ah=0}9kV948d!T-KsU#Lme>YBroHftzZ7JZN;CZwvq_dB8N9jCQsB!6>#*mL) zAHIJ)=-k5n4(0R92EfneJ=>3v{(@}4?RQ&ZSPym$&qu3$TfP?fm00(s{kr&W^lM#r z^h@>d)K9<TsGx8FOfIuZ02@*JGT6>%Zp$9}JK4bMgHqCV)jFJV66ImT&M zke`KZK>wyZQF!@8yv~>MG5G0T0dgKrco*&q*zd4>E{bII?PBZx-tWhQ&fHd@qk2+p z8{pfxudVC)rDAU@%XzE2N>y-Lti*Wu$!~$*j`c`|i>uOkvMucd6v`O4CMmSNqp+S?qib7NS)9Y^|g=A*xJd0t-k4aXFs&S%l6!1-QH z46Kn)xaBvqIbX`rFRMQ9W&OPUo=fH$(CNqfC3K#?vkCI~r&*w!+i*X+$pf&%Ey#aH zB=GI`R(d}H`u6*qUEc=0Vh_;&i{mnp_OmbZT@y*a=O@7biTjVr=e~IuuYt!w$M{$C zjiWv%bON91k9NO9I;`)Ku*dlh&H&tgXS44V^y}zw=yPA<*Erra_<7LJfWMgq zeq=k$`6g8ZpZ2?)Q{w=)-%Fi%7vS3y(QZG|dG;IdY2Pz;JPqyI@4R$i-O**-|5Ceg zY8UA5e-3<#TH@ontm|;d?Et|wyMq1z);Y8#{O=zDx9i@^iDDc5Je~*o9f@zQWvIiy z`~RobV$iYQ53TqE;3IfmOy~Q~HsIfWkL(E7?*q9nS)Yv*+zmQctiwE2cxHLP?e{}J zx(xK&y$SwjkH!}ZM5>UhN_fzQ8~=TUgwEWjf(A?GNz``jkvowoEw zzuw`zu9^t^_S`4BgZK}zzpFk0omPauC<9^m?8Ev%&08LR5Om6nf}XD;{kOj&pIo<& zQGUb`7&`qJ4=ev2RsueUeo)+&^Sw6$?b`2dTpt7an|a@n#<$BDC+}eWr24P#z6Ac0 zr?4*5c5_+*UZ3x&sXpId1N;oK?0-ld@Kf~&k6HzO+J*yuGvWOX0R9;5&$EQj zUkG^e=ip!MWZRd(=Xc`(7x6mZHCusi-xt($5Ad50LA&aYE*1vNxHq_?41S+<(j|~E z@Yi^cSvSHTz8&zbTvzJ++BE_6TUzffmC6DA^cJAMfqFPo;tE4QhWjt-$D^4Cu=gX} z>w!P;67;t|?a%OIfcGK)70Ks(3D^w%*Y82Qs<+>XoXx&ct>c$Dn7ZEC$T(p)^C}w8 ztb7`Drtn?P-lV@U3-Fq(e^B|ico^^)=5@7S%@;yGGpzgkALD$VvJ84V?jkf$p7nnA zJEtRlhx|*k{$KUHr>vVyf7eAqKHA^X9G9_gkUsezvjX_o#@$a{sG<+wY>*;X3*ozH1y!I@83_82axro=+mY#mnedIiBlO z`w%q(eA@4mJ}w)ShK~I{X}cqU=l%`5C&##)FY6TG_PLKQ81LEdnR+?^-+o^vZ4&sj z-?_NI3HV%3J=gjB3F|SAoPhqg+22ay&<+3gyEE6)-rDCr8a;w`=kR>`ZPe#k^+9LX zgV4iANdN1(;KyU_mu2<>9s6CFuH47mYOOo!$U?~Qd2|8zk0$-KzoOllUjZIRcuW!S zyRHR4Vy2ugsWaNO-?9Dv4#4eqTdM2@efxcuRg(dKnQ@W&wdcgJ7(U-&y|L;~eXi3h z@_woozF^hhIJre#4mgnd@kDuy%MwOd=F)y-EEJezdFALJOcXm zIga>Rz(37>Nf|!pyJ0)vizsJNZ|57<8to3?eL?dGk6=A>pY>?>Il^llK)d!kr!@wG z&NK9Dt%=`06!0YzFplbHLo(Bo^9$T5jT<+~&uJ1B;&Khn%E@-+7bN8sxLhHwxL(~{ zZcmT(H2&QMpTCwp)~n#+@ymy?H|_Ue;Z(84n;#gki*o|7%;?#%e2EctKu#GK6h z*bMLA3@ouA(v$7Zj7v!@2n$O|OUiQ<4T(2rLCgv6XgS1b@)B#U5^GBa~hfaFRUmIP_a&wKUh9wx#~88$2_IlU+>teN~hGbumc zRWLl)bTc)_P)RJv%#U*iE3{BouP{ey30)Eknx*7qi1nck|nIdW;e=`apifX!@TbSo@6{Y7D6eeX7W&I}d*ie%@)D+kP_Yz|OJY+O)F68( z6t^I7a79hD19=`tc1|1Nkt)fY!U9)Lsw*!kd$7lqnpGgwMhJ=#jBoUv-zibeWSIQm zUd2TtK8^Njx+^s&PZU^m`wSWieV56WBAijqGVi=27SNvCb1rpvhA!32JKq?I9m;|U zO7RTK4apypR}hktlOK|wo*j~sl$>u2)nHLQgA*1ae{l`=6u7dIh8g7(QJkdc$rrKV?Qy0YWCCWi_ArutI_$7f_^#K!h=B}N$c zlh8%1sna#_wb_NnRC|WR#Rt_>T<|X9@*?QBCqDuKq+lfofH~kTjM7iKhgW^6cv{!oe z@NP*3dFjIfhox&qc&zz1wtX17V)`K?85)zGG?>58%jIAgr_@F5)udGDPVj zGd=nF=5I;zN32M6#H0X{L0n z5o{Nk-@#hLvzouKC=qg|#N;{I;>^TLxgC>j$z5b3_;YGSQ2huCR8OxSiMAVE#hlBG zElO}~tSD-f#BJ`JELT!Wit3Z`R<44i!7_-w5`$_LLlV{xL3T5V(1wcU$7RL#5W{OC z*C<(2i0_p3N~)~SOmEGsjx=#TY^0ycMr3=2V##0_ks&Y9N5r2|iz6;fi)Ca~i)B8W zSS???J{LB|H1=_P7z}t&QYofWJ|adLL0TFdjg0MBk&oGFJm~??( zkV5|~_RX;tTtWLLy2-)BnJ6YpCRa0&C=yJvddSI38tjQhUPxwB`-=)^1*i zD=WvHo@$nWCSemM$$^xd+~EQhqn{Kmi;d9O;O4*Oz+|Z)D-hwFFiHgqW|n2pcSQEh9&Rx^OX$o2f}MtJ)HhI#L7;#7s@D85n;6LW2% zX%lovx3jWJ_+5w5voDHD=x%P;SjqPptKoH|L9ACC2P?V=2YaR*nV%^Nm={6G)3$VB z-VjLUzv+J%md#*ZtrF!ZNz!f_rpX*P2{xJW=Zs=SA0$63pClS&-G{+9_T~KJE6Y?c za5rNotUGHEBk>rd!s6nwo|Le&NZJjTw0KgS*cHdaHcL!O^~7Zt#AS64YpQ?G7G;ps zPk00Yv6|-ZB%RIlC5UMSH@4a2h4J{Ag{zEOH@v-Cp#-Qtc6Jo=6O;I^YYWhygLcG*slH^ z61O7>O;>JCW_rr-SV@&YgTlky>G|RSCC4X!k<3bRp_BE>@{3t4MR3a~NhVCBO2=#c z+&8`dclGx)%8yE033LOIE-|7@y;wGb0xvdO)2)so~e^L2if%(j~&^SA-wO(joeOoYo>5am0b0!*89 z1pf73j9rlDit&0b!&YYzWtNF_LtPn?=!or|Df%lMC%9teCz3Sk;gWw661$y;CY)`p z7ZxUF&1_tz%Up7ne3*^K$T_JU(F$3^h?!MA)SX{pF082p&diE%$_cCT&$)6lLQk~H zOHno?J%c44Kj(mUar?%R=2e7pM)sN&Yr#ZSw1Tq77M#zwqcGE8m@6(m!{mP@fhpUz zCJCI_))^A%+J9$cnrUQVY`DvvRFEXzq=&R?oKo@lFfjEa+Hck{aS3NvWN-IOr~Y?O zN!zq}k+0@DV+*o#LSRdwa)ho!xuKaM|l;#H>U_aFaG5 zHyPWEo0M35nRTfQh;$;tSu~ndzmr516%o@21qpYFd`lj-NME+@TzRN27r?D=%81uC zgCf2=HrCB-lxR^2>&6RcCf2VT#sx|_OMz^DN+2ogYm*5?642!OLd~@ClgEY3m=c%4 zXYtCx_)NN{PW@$;*;$&BvVtZ17a3_0a<~z4ZZ2X!pZ0MdBog}|j5cWR`}ybOXodCB+kIjBE`fQ%C2Xff28XI?eyTW@L)& z$aQv|X@^OEB;#)|j4Vu0X};vdPAy`B-dOapCKElg>5&dL5w5N273JcEm-=R&WdNMxV(f z%iMGlw9mdHJWPhCD8sh{Tui;y>IEoz36d#^tuyU;8{H_LE6`1tpq82E zH^U=M2&-03d!$J@Q$wOzCSM}k*=8_S{|tjfZY7Gb7LZE*zZ4kOqMG;%4>ggV*0kzc z!*3HrmncqIlauS0Xe+#_)HF$^Buny8VsQepN$%LNP*c_>MQf742uoH`S=tcXum^;! zUWX9jNZBbCGn;hrVkWqeBUzy&cZSqqVR0Rwm6_$Yz^0jG0f)~{ig*V*g~zg3H#SCm zodmq1Rwg~fO0FPt_kjk61sP5Pzq{iqo&2O$1eY8rNL`a3&n1@r1bA;JN^^qIb_n79 zlCJ-|;`ox%CIXNQx=6-Yy7S8rHFZXeMUk>mDr06+c$y{R-YMu>io&UNrYOJ}9_gkp zZx@tid9#3LtC5hku{XhI7H)xyVr9$=WsQvPEmC-eoB}u3L z#^q?(U4ifQg@Ck5l`vz@vi`DuI>CRCKOJtA9O0X`thEb5J0b37az zQviYljP1FlF9m?6WE1shI4UDzloFQ~PFCNkmdNNV|1aFjq=@&gYzQjw3aHr);KC{2 zO_5|SQW*caDN-X>%%}%&5#)dehNeD;>GK!9?JJ}`oo1yrS`G4G}r%Y?={#kMhKMOrNUioyEA>6PEw=f7R_NGxUY z0Y%Pc3L^#NDs={2&>GMwJ3+;)@Gm9depAXjn~d}KRf{_#Av2+P4Y~Y+_y<#MLJ2FWWGeslqDQf2r?8;_YpP#{6 zN>*!^sKeXQV1*k^;?K);B^7=G=9U#PhGL2X3mto8dz?I#x6rXz-+W^nU{-ol@Vy>wHRKrW=>O_ZA;yhD0o+8VUcn+%$#(R;<+qyy44-q%#)j+E@yEOIQRk# z6IYcqkIyjY&yxRYZZ;1^lmP`lL8*x^OqE$?B6G2rGUuc_j+}kW+R@N|shfUYPLxtC zCbmKS8ZT+*3xNfeTbI&Yb0{ZpcZ=)vC_$7?77@hxUL(IEKb&P{cG)j)X zzyY3BC(Yg%m*(M;)bj09cn{8X=2HX0`K0F$sl^`qMW*4lPDJZah8K7v9i&L-*N20Ia7jOhtF+cEg}^aDOQyw zb;oYAH^f3K{~cthQZ~VsH&vZdYZmNz_mT`)toP`8iKFVrxxaD-HP}JeX|Gdo(&;99h6M%VRZ~0fYM=$wGXDFL&l`=>H}TkhaW; zF0pgw2y2N0A5^abH|HeYF*Ur%w>W1z6AQ9E(u9fG>0-}hU70lrGTnE6yOVa>sYKs? z0sZwx68@7Kt{wqoNruF`JAXm97jelil>lZ#&v-PKthTWNaV5FJdJGbI-xm^&k!-!NyFKBn&^VGOw$8qZ-B*70k*s7p2l=#aT60PvZ?2uqr zXJk-%Qq0YHb8dd|=l^a*d<#Rl@2wk-s`;0w$<#w}zbH!a2*sI}u@TJ>T)3pnSb~44 zjh9QckUR2j3CkkIq)@#@61G|N-=7pC;MBN!ag1fx9K-ol7@3W=y!63o1z9=y1qjm4 ztPg%g?}6)bqt(``TqA!cF{~0guK_O6@Hut8xU|nV3R36bSVfcZk*u2BeaW&W-!4Bc zhVj!3@+XNu=SC1*o8mtJQ6dltytBMC0#C@4bhD#V>=)!Z=R9@XJ2#BUpcCLZcckWm zv4cSw4v_(GEHE3gKCSvsLQ%0fPQoV`ZqLsFg+*xe;q1<7mCSj>t4&j+z9!G%@BH?* zIx<+t+U5-RJDM3QTk#1cR`4arPn}$VwdCsfqnBqREiA=|rtp@GCA(o62U8Rhbw zMwV-$OfJCdmWzwrVbv#^5(8hqwgRrM`wz;CWT@2eNqRh%72Td8(xJ0XEp%5LqR)_= z)5v&}2I|MDk}_&$spAz=pxM$DVhQPg5OjF(zbn%($}BNS=$AmD8nitaZDwD?>kegodc(SySeesr4$<8z|x+d;`)rTc12yT&yJhROM}a} z2h1iPY5&Dj5I2~1gn=`)#okR(*}cZmR=K9ZxT*`ulA0imJDT2mk$k-@UaBDGKY_Q0 z>os8k+d&$3`YVv5#KAG=GajNiTuV!k?{eoLlVQSj=NPq2aa55yHxQbn>N(T-B`ekW zsYbD)G_!$HQc0Sh3`;UUh#Pznq=dX&K`?^kSq zT$V&QLG|8tPQLY*43Zoz;qAT&IABt2LY~WX{BP4pv{oeNoc(w5iZKj~d{-v8O==+6 z8xtf7qtl5nW&9>djID@N*%-mS-Dg;RNE`O9g$Xdt7KHdKXU!j^2etMw)B&GErT#ZD z`qh<7NE|P752YNT@)m+~u2EdDm0dB{#K_@5SAJ5K+`=iP<+8yqx?bcYRm`@f-u&WZ z&JzoQzVF%UzXZd@Wh?Okg1#U%_$-%W2UhX>Nm=-po373MwC0Aoe9v{X%+9WF{Lmgb7S?pZU_!|9MV|%RR@8lVr2WZ6QAxL~;urEG*o=%u;%%)d(f} z>Hte)`E3glBP06T3EX3&a&86oH7Z@jIazSEI%!$Fw@;ZHV@MRGf>Xnp|!c`tpG9? z)%z@l*7%6NTID^eAPmyIt2a9q2#V!ETWVaT30P!7Wp53gSB_HSVHrxXYrZq$C9M!I z{BXE$;c6}|^gqsk6GGmxbJ#fVij^~nrg&&2eKaW#xrG!*9dz~WG<(*a+MtFgV1a`gisP#a;TjP{^HJ2EG1z? z34ESa9h?a69OfaIJS9C=f_SO!63_ARhGKX9mK2#wtl^*6_l4+w`8he)>}(o|M9obj zK}JZk7AjgwmPe~I{f-fMN8Bm!bdEpE8sj`q zbV<#O9NJRq(wPz*3J$lV`yW}6dDv?-_m05Da6G~ys z?f;fh515{sESFWD9BEAh5&M9|M$>Mb)P&5Di6s*LAW(jv2{(tPfTa2Vvo+p&k(=+3_ zVqjQ$mz!ai!TUgWM&zZc5UgCTigsm{%axN^)8qC_I5H!uD$)^|;mF8xRRcqd2V}$| zn&Gl7U?o5B&{`z6g?MP~lLaq+SRpS+tA0Spz)LR=sI^+40kQD=U(PxIbH4L^-}xf5 zY|r3wm8sfXS@a(^R|k( zLu8d@yp9lHAouP8mA_|0p*~eLP;5|^$W=&EVY!Un(pk>TlJ0Nr${-T)6r1BCb;`8z zT#ULgIO%iR>sv-gO@7D#30Vxp?|Tn0V_}RzjZ^}{98>_AG$)@nH=p8hM84+N@M~@# z*T74{ZrK=w_y?{6pbI4tBo@_#?j4{@ErNM%iN%@#jpspQhWYduW#~xPIHElU19tQ_ zV3KE8wAI^a7KtZTz?~q;n`zsMH%sSrg5_LO{V{I=Vb04l{vkt3lSxt^xK9WirsPKJekjjqCmR&x)O!A z3_~XbQ?vuIK1_4Iwq4HG6~#T(`8UtJz7PuLTQGcJsHjHQ{8 z$vjnqpfC$pEjuZn2VCHMXv?O!FvWgC6W-o643Wg-Rt#;J0)nJ5bdq)D(-gQNQe?H8 zOJ9DVUO|jmS_6T8YY=^(wUop2A+pPR=|S0yMVI>5FK><1LPrpWU7KFs9v*6Z9Wkw2 zetwdb?OC#~JFP1~+3zN1w0RaHlp;|P0gHy1OsubfDzqJFiwLm9A2`BbX7j1I)!{lm zTbV+JaEZz~{fCQxQN3PS+rm6a0H`;>@1%z_O_}Li&4vb#pmV-ygJWXIAnUc3nS(hF zvP41QUy1;WGIW|U7Y84tn-}du)lk3n;=llzJsqtX>emB z2zP8OCqhBAZDKs-1rJgt2b_MwbVx zWLiF_csV66gcOl7wu$5^c)d8O1g<}RH|E09!L>nBb?U}QS<^Ws2-+0rk;JJein|Yj z*Eneh*Uy)C5MxD(v&2P?YAo+kJC9Ao3>sA+^%`&x-^=v6J>j%$5kV#4uE;BD9R=UNb%!LP zSETyh>LpRyL=_X0B2-F>kneFgbgc}?ea_XA4e(=H46Wu2t#vlrzn*S830qsER~6#A z4+4Zp;;ebD#8(5wS2H1_Zjy|rB~WN-e!5XQ;haFyj(&1|VM`6DFUI57QAs)}slR!j z9H9lKy77eCJChlPJ7K=mo6{XAlr8=4^M_9`AZzc^qx67;-Lr%7#YtR>v~>MngaTYD2F+N^Y-%I$*_^oHl6zi+ z=J{@e=1FYo*xCthMNQ&!W)G_HVHBW^Zs1!nX|NWF9eqmd@ar0~=|W6FK~Rv2OcE|A z(}XT)kQ`;@rc~jh2nH{ZZgy3Z_GWk(0~&W5fb<1wko$xf!(uw{x#pL)JEf~^q^OC* zYFsGeI8{8KK0F_9Mkmx90%jHZbr@@b&D_z@LqBe|>Pk2{>R` zJX&$2)&Csp8%}CuSD?35msjLwn7}n@%PXRSJ@NFygXW167H_B(E1{KcWQcY|LWSNO z%4hW8F)V%-<{ZeLKmvx^u{Ql%o5gnp(5#fI4Y;JEWVf8Dn`0Fl z=eEW$*CmNH%&4?ThP1S%NMA%?o?%H7k!&xdxoHY%ymVX3*^3@0_2qy-@% zN&K<$*!eKpi>)mQLOQd)+Ox={xBkkEC9>P(oHK;B6z)~P#Q^MTF zOu5&UN^4?tzT6d6L*P6fAQHrU=6Wl)4Pt@zX=u^RqUg#^-JM5NjH4u7aP{?1Q<^K* z9i=_F1o;@7t^k;5rKoh?&nS{$URYL&l7a4WUQl&XMhT^Nv+lNU4W2EGyrvSUNSKkq zk7Cfl7*7>yolrH#M72$$50H}ys!h9hQTgTRc(`{Ln@w#=SL7BTx=Jm*Ru_xe1akr2 zqfTBtuLG0QrBas*ylA4&l=^&8kd0K9`>r&A& zOB2rciHNtMNft6y=NIUQa>&jI=sb&Bh^ZT=icx!`eR$fgI5O|>=IX&*gAn1|=)j8j zBn>48qXgp0Z-SIZYFo@Nj%oydR#3Y@uZZO9-NDakJS}m#UFQ{_KM*4c$)`i397qzE z!jPD|(FqXKdvxF5gR>zTT1Plru=0XI73AhCUZVlgd*k!L{1yk z_*Cv`MO8?OG~l04ASyuVm>nPP0p1@yn(Upf2G5Qsixs*x(jjJrVA+-?2x3lBM@bV0 zh|Q2k$}+UKqfdheLS@xx*567W?+(nF8N!^^2S>V;e)z%ZgQu8YIy?Koho4Ln5?qg@p98dbwx=0|9w4PSzCcKNw+yfm5V-j#x4^VB_R|NUdtn0mUQI zTb>6tXV*kgKONm+WK=Jc(asPkRGveE1@E3|Bk1H)(Z0sK?zl6!W`y*PZE{+i)rJp} zvw;lyTMq zI;`!BEg_w{sC^FJPY4DUL?(&Li3qCNfjAIwnA2$0us0yFO2BBQmzSZTqhBxrrI{d- zY+W-pS3eF{S_CFoHtMevdc_ev&~RPYKd$wgPk1eHa)buh+QOlznHvOJFru=WB%*o( z$FCqFL$r4bCjtQ%cMkT>UJtpRsCHaUIO%gaJ-Q%!0nK!6@gFt5Lco&`l?7&VD>e7Z z(Hj+UQOd_5R!NR~#dl|-K~f7bOUVH_FZ7034x{t;a#~QXGo~nhj_EQ70I9@3X>*Pfr{~0U+myQ$h+e0Cd;QbNGjv-L+Ci@i zFU}yIh+jd^PIj2My2;z;Tr97^*~ShwV7~Yv^PXySqCv{!8GKbxme1gT^@{^lcTOra zL*?%n<5nJxkfb;~CE0&6M{NLA1%T$59U;+)q{vF>4__Z8ef;6q-KUp<4fYb2%`@dVIxP| z`5M!}5G)#5mWcmUy99u(@%df5F?|FkY#T*Vu^Q9>JcW>wwm+X`<~62yWq29WrH3Qt zB*f7})TVR+?U#CTsOYkO-qzL%)bpn&UplbF5f}o~+QTU%4foh>Bc=)45G3B31Qg5@ z!I{WWt1EJbRS&t?+u~~173Oy>5X2?zak#2$$>Ic0U5F%-y&B7~-b|vlvdY`o``I#n z{7^O-^WF)jZ5cy9YeqQyBK23CxlWNJ%%FkQvjds`=G7^HZ7Hk*wW=TuhbRV=mMZJ3El z-+z>So9p8ONu~=Jt1yJ^Eaqj9keI6P*PBmMtHF#2X zGC8-S0$~Y3IfbW`Wa^f#poDH~dJ63~9S`5X02Ml)+oM*PorKuyaBn<0U7^U1t?zAm zY5Es;?vz?iR~F5=iWqn(tuS)j=DNBR9Z(1{>Bme;s12JC|QBvOCl>tB+g?G8eOxEpF zur!&^n70X0t?^u`Q-#CwdV{?mtJ-qT97xtsauATx!Ln;KDe2K@#Vu`^mMX3trb7@U%zW}j?#{qwE+ zCP`*ZwH#09{g(igIN4r}>_(gF*f2jP8%=bJAzXY<NMVhu;b9=MBNnDz%LjL%2Bm`%sA1U zW0%1fTaoT0{i?=LT{;C`GwW0vP1I1|NT{h+!%)bKj2#ykaa^GffX#p4zn2hW5ho@a zhrJ@$R7n?{<=aJy}3b#c&>wTp|>rcH9A%f}O^M|+zXX#C#r z@x^F4&N;1(Mc@WQv{`5YK&+-ekQIfa)CXY&Sq6q?l-kk?`0F#tF}`sq?cjg#&$373W@Y8HP`)K=~Q(r$9;~#L&GRVM&(zW&LX0w%HJj0nyv*p?DaW_ByKs3&Y0d zl1bh12GLkVRN;|TGPK6GwohR#AQH&=lEIaxYzQ&cD-T|W{Q#qh8kCh#SFX(3w};m< z>!Ry4nNtw$5yY62a0Fr_BFIbx1&E4bZI3=E)Qygv&U3AI4kkG4b>lWRq==kenT@fIcD4xg)3g2UA z$zxjX^^2aPLWb6|4|n+T06e(?K<CZEt<7;!$jTgwQaFAiwkIf@uHho&@wjH%d9zctgCRy(7p!&<<^|c$xpdgfu!1%G zIZnaszRjE1X6^q?oxk6LR)-M2iM)qn*?FqZ%EP{O>9exa381(cX3UKB=Bee_RZDU7}!A;8d?BaCHy&gg{7@eD1^X}q>JR~!64G=#v z%)3c0w&J}(mURv!tY~|pLu;ZdI_XZb4WVQ9&FF`s`vuB?3vrS03ENuMc2014 zXRag5DaG62NTzA&Tbmr&xbtR%-kq7xi1w2L31`E zrvlAsoYwn^G+4f9!-J{{8h$(E*%WjHmev<|FYjEkUW<0I=uzsm_nOvV7PgW7;&{Nr z!=mTvMw4PT62FFs$NGUplcUo~OZK$%sc^=urvm3n7teQ(_Sgkdy#`~bE=Ta~(KZE} zgW;)eU}VYFwx@(oh1)tOi8@y=FoffLb<%A~rD1s{uH$01Ep!z(l^--Qo)AGcux0x-7@UopSd__-6&FMQc@PSCAFAi zdF#pL@J50cfE#tzXX$KVOyv0xLZIoc2D^!VTFVsluCaVCI=oYc-khj@i7L=&Ew>O?4pNDXv)}%cpxRv+96?Wk6NZ)B6%0~mXflu zVWFam{wYd^L+zXhC`st-Du{fnC|Mi9lZE%Ll9A zMc5q9O2jsLK2Z>|K;1;#LCK(^%xgzh7>TIhZ(0D*+#WDEq+3_f0yIosr$>Js`UOQ# z`#A3tVAX>^n2`nH11N`Y4hO?Q!&KSByObQgM}OgJciHymzm70G=)m0~)QP9?<+?|i6b z3qSA4WV9HbBN_OZ(si5FkUeEfVveBy7$n<^97B6aDARI{Fja)xldd zxLXM?1T9el}H87flV$Bw1oexkQTL}(E1BP}^Nw7oAW5T#|pp5p6FTX{>FygVVMHL02)O&Yq zj+NL@9uPonajW&8<2%E3N;WbqHpwS&S(SA=J zpDmx04Q5Qb`W)$Nl^+f24A+jIG_YxO^|h!x*yr>{1Qdmvsqyqcda;OP48s~EZ2-E< zHCnWh`}G5JknI#CPiK*2S_69~BMaf7^rf6c>&R1kJVdIi7q;`w(&8SWCZ2I^VxbJ*2Ke~8? zy4_uXm99ydDJ{`BUC2!%IS$8rK0QWLf#at~>2A41+_bNfG6vq&>w(J?SdbAeHCY?m z`INjo(rzK1{$N3Ws#yQ$2Ncy zoY>;*C}Etdg#TP?vsP7LD8&%2$#5Q!Toc#P1H!GsDx!RI-OJ-3L41XSWQuT7%u9QF zyx5njt5LT937K1s3dx_)l#})K z=zci3q7A56Kv73FL8f{=>6i}FeMy}|oQRBgs_1Sh6c;GtCK|7?wM)e-z&7Vl%-*zf zH`KRBe+ihuPbZS85eO&E$P<&swTv_F(B&UI=$1I2hN|W^&!3Ez8sN?BN@ILCDAlmb zSKuu$sZc&H;N+cS3A6@)uk^rB^>$B+{s_XbX$p zAk{4)O&R>M2MCXL5IsN9e}w!de$c2yCb}i@7$tMjL=c~U0dhycA|Bqv&DAe4&FBh9 zgB!QPh7f0!^Ul4p3*=w4iS9gof=^<1niDFzUW5dv~d^ z+`)-Mrfq$wc14ZqD?VEzNpnpl071UyCb_FciTBQyCB<`l#H+c=q|(xh8HHG-3Tvl_NVtZg@_o8_8p3MiZ#aFl_xAY`hqQ@U&vG(6AI$-l74$Zb+YaCGEs?rxc@QHdc|BUJ?*bWJ zOPC#KOdJ?fWDy&LeFmkGjBjl2=KS=Cj*9M++5;7dgoKTIB9`zXfL%B(!p`T0df{F= zwV=<{JzR$W3W8QLRfFBn-X>Z4b8hXILP{wxdJ+Ocgabgkl0c;l{G1UjGnmr4&HXW9 z8EV>sO{CO$J&LF?nLKUz$aT36i7qL7vl=aZrdNp=QxlmRTR?|7Zb@cuVF(BYH(~D@ z#wnZGTkB*8GF~e_gvph3wCBvWM@ux4Q7>;*)6K$Wo06RJO*Y#+=Q4(i6syrrCfHAD z+{KOMFv$(S8@E<10k;|JJf}*bCQX|i2&#BcYu`{ohrA^XbCYxmLq+3>JFreKkagai zx~Q_Op zz5c-&QmIf4L1mjbQz0C~t}Qg*z#ah) zBB9~c0UN)U;B?0+#%fGbEcltC7Aie%p~6g?Vg|{B1*F<~$??NGmMl>5YoygDdbZ?4o3zgc5YM9spYrJ>?pQL|4;0$!N62Xu8}xD7uoj zEDgBqxXaNfQ4+XnJUJdc=h5}&XokEXAQU-TtLKXe6x2;v_t+@6fU2(7hYvawtZI(~ zDUiYaaG@`D8e3y3C51I9#Tu_nqabgaAZKFhbeuB^+Y+YbKGnCt%!V&TgjXV1yD5;J zTRc-56q<@uGTAkp+u(Q)i3TAhsh^3MKm&qAgTAWiXgk zkFzwX8psg1>k6X#x1)4wDzvPmQ{#~jB#rv%A!^{b3{FG6;l(ti!`V_sB(LwtN4CG+ zM4S>fk+25>SA+BC19}!EYY*dj>^2teqR?<7lC_!CL-(#MN^P(6$i;OwqM~Q&g5s(c z*4BJe0Wi(pCF-muT?(9OFBT33)K-17#BIh<|H%&&kc;4@7b%uF6#ig1eFJ9Zs{e1Uuh zZAm8!Qo-Ee`g4(;y-nm!5SHLGzoOJHWK@KiT;$dc<~(r9PBsuY7FAaB1)8V0%#sfH|fO%DD$Ik z0{vUV3Up1roQDfS`a_~Rv!0-UH?bc`VEFZ@D;PKRp1euGxFIGQ?+P(Sy zJF$>&E>c-TT9f#o`j}TycO= zkZ;6Y-2uV`tf|8cY)`As0d>JXpWRJY{xZy`KAyG33wUP^j!-Q+naE^8xOPU~CT?O^ zNW82ES1b$m*;Wx=@6?^Gn{V0MT~0XLPX;eeF{8j>3!z`T$x|aCMCC+#dhpHMB3;(q z$np~BxG@8EYpG+b!99Y>wIPu?3xoC+;Z7m|!OY>4XXm})_+BYap&~#tc}Drcx45p{cy6#aCFtI< z4?%bndT^NPhuUU}qW5Hfdb~O_mW+`fXLfgRFu1}ozIGS?1XMm;P9Hy6ai@8IU)HBg z9?YzTsdHfiyrIRrZM)Kr*9$Htl36`Kqz2rVvqF@Naq}`WU!4Q6HYLN(;gZPEvl0gA zrmDNNID>YEzmQ8-4}~u&ttK3Yxpi9dT=FU@Qf6_tY;J0nC2gAR3#!p-ih@T%ph)7R zuN|<%*{RKoG~DjOIWc*gdb^+jFB@MBSJK24NxfHttY)MH`IN|vqwWi0aDf7P zG+`sF!y_Pp6XJYaU-hQb)@mW)GY~%$jQarpqJ|v`3%{w60v5Si!vt z3r{y6PEVif=;SdaGAARGah^RhPpFkNb5kRUHYs@qznvT50M)ql5SSrJy~ORo{9N?J zAp5BQg5j$`Xwc==xg8nK6OOM0D|0`c%a2;TIhc_$?0(~b$2*!SBFGBOlbF^#80af^ zEzQ)2vqvMgT-$L!Mj{RlhaZdBz36#TYs$FM>OZ@PXhpUZUBB|ai6Ns6Um-g3!HURs z%zp$Vz{b#}#gDlcu9ayaS@gz{$cf6|s`Z4ArnA}bl$nb3sp^ZNE`vQCJzV}^w|#QO zoMRf03Aeb@>pjVzaEXC|+Qvv|dNjJ2t%j$lw2x&)U9(tRrLJfaw!r4l=}FdD2ax-? zxwCeX>CHISeaR19kMd%p+^HB`l~6r4a-0}!Spum=)`8%P%|b`+hP zJx6c_drx^J^e>9FaC<`PcPHS*B?{>;-(oEU8v}2tcO%_Mj{X9>4uBuIh>k(xPmi2meE;>5^|t*zT?Xpd>T!-+>r^FkQCYJQl#VYJx@U~a2*bYbMPXL zpsqKD{qP0kktC_yemI}%h-&feLQ(vIJ>gMF^^FvB{$1N6uVD{K6FS#g z5n^FDoIPgGE4*=pKSm>&f)SuFYS1lNNAL64(uVFy8diour9dmyKn5?`cdaB0i2gu+ zHx>HD86-y}NB65K@L@}mphDQ-Xj?8zT;jJfQpYA?)CYkk4&wDq9|QtbC#%tPc71qr zJX#P&^kp&8IO^hu(g&gAu`U*>J|D7SQcw?mZZJv^R)tNf^ z1qnr9$-CMz11}^mlCWh&UL<f8>Ai!k^HXPPSkdoQni0zu7Ko!Nq}%&}cHEnwcMLQ-Afx~~ z5o7>W=n_B4!+$hArHQ(y)HQr4 zDrkv&SHd&};6-D88H_;9VoxglL@t0n#M3ZamDTzgbl8EkWf`O2zBr$Zds{fpryy&E zjU^kl!5RZ(Y(R2Xi#mVa0)H-X1`C*|x5(Rqk_I105hM4Zn86vuD zi9^*LkhPKH2#F%owRLb2*dOIuI4!im02h(!AT`l)YGqVg7w+8-iG77gKJ*S3f5w$? z#(e-a!g6U#NY3quaeOrUx$Nbd6pCizbc2uHmW?mrOS`exwAlxH=XgQbKaxlV`Odl; zrwVE?-Al~bR*X*L)M(k3>}lW<%>dU|tOqgLNGN}#wz#oc-BRk@e=)U4(GF^t}lcd6NUz!z#x}gE4>xPW+PisqDyIdjDzx3`CmLH$rYx22E)EJw%QI zfoU13(%ApIalSJ(nxQ`o&G}X~S88LJ1TE^aMU`4SsG9u)c(O1ug~IW+)qJ6SZjIa} zkH_JXm#0pb2U+45xGuK6&FT5=>FDtp3}n(I-muOl_LDER1~0`}KH034J|V_!C4VPp zEM;h@I^;6uSpOna6@@#p8!6h-Jq~*#!Q_xL-XPaF`eXJI*{MxeT8aj08T62OKdu3wjiTfD>Cni*GQ>&@o^MUV4lvy zm9(zl0gP=CA&7%;SA?QM*gt)SgEmDtkf!;@aPpCj5Fh}r5PA_RJjhI|izASD5jpiD zkt!Ul0i;O8+=Yr{$Sm%M2!%X49S`^J^0WnDi(c!Z1bT*oJ*efow-@AtXz4&k(*n-| zs)2UHnm*3%X2^DN>LbVvs?-*XSb&c`6gj{k9y~Q04VI|pEuFBc^No!g44pErNJ?Ka zpdT2bE?6oPVZ$?UY$fA6W8b@WDnOAqC(#-l$M@nuF6dLvYuqMeSgWcET$FB7GHq^K zl{%fv{6x3+Ads~rO0-KA_M~c7o_R841`=RI!~pW zz-8VWa_6?rP5}Gh0&B1;zHCb^V^|nZyS-f)_o366^bNB1xidg3vE>Xdl5xPBAmo{g zM;Jh$mK?agze!;>MX0@70fm={b=eo^G6c(_yj~+~$3nbNni-p|UqrRz3H=Hsk0k;l zvbCJ&W28>xw<#MzhQ) zP;1i8&24kVI(7{+OAKrmB}&k9m?rS89c9-~uD4@bYM-ZU3oV++$p`F}GN4+X=qUWu zdjq^I6{?lZDSDVJTL$Z{3nVT@ni?i$VBA}NS!moDdZJw88W2{s$fiAk2_$$b&KlB?skPb!1CCO3L7o$6+OB`jAWb9TKtDmT z-!S^4%Hz9eSA^c9k~CwaOwrl8clR^~xec$AVFN}C_U|2IA3-=!-&IJ-D)pSXo(+-2jOffP)x|EWS_=AKA?9*1Q#ys((7UP&kzyG`2-`1*Lx$7 z9hZeL$@%<|$@@f|6+KxH50tVkY|~cMvnCUnsYDB$R*vYXh!*N2nwfYEyLjN3@OofF z@`5QIfP!-5$gOqLDl|gZRab+y*HF0gC$l75^;aBeP{2z0N~JXATB5bi6(Ck1yM_cL zdVYMOhsNH=%LyvAsl)ejdUQdNe~e2(l#uB5%g}ZP9V3Ck;ek5^%ye{tzGnjiLM2i7 zy)Iu72XZtTOVA8NM&=EgHy=$NV@#K!xGSVKPU9I<>W&6dTr|10fp~_)7c;4a!V9)k zi(ci+gt`;}DUe74AlTwR0(;Uq=cJOUtCVIEbBc^cN{-JiAQ2mb9=<}ms+X!LcsBq7 zB%)3Ivm(v0a2?Lgiu|4a4j`=g1z7F<3rcBcuuH};SVDS1qRTd2ee2#I%qWQAUERYy zv|mLp82pXj!ZPkni$rHdclSqVzsRiO)6NdEW>sm65D2UAL|(0BfjPXH5&c&@ye}A= z?r{_h)4~KiX9p`34K42vDMByUBbAE1e=$MVM|6+6rzDrSuX?+%8n+Gz>+I}CTTyhB zsp<{>T_!M~0`cKt(WTW1xU)`htU_UWYiipv_pA>o*R@&a?M)|c+<_LoOXOI4lQlCF zn>EXDd=}C!xE~50dyV@@q6T9SxNg2FYzKd}W&RQ*LOS~GD(ML)h&M@*>l8R$XP3O5 zrhe*IlEetEE*^o>(bK4O2SzGxT{do>`FS4|Fk34kS7ELoy$wjJr|>U{YYd{#6`_J77>Z0 z11a(mSgE%fiORB!2MRm zTan;SE?u7Ysvb>FruTS^0V{8p&TSQH!5~G!g&?8QULET&v!;9EY82F9bh)Ttr08CO z@;xcw)X1RYObCu`$?UB9m_fH21vncw2_~54c`#JuH_jK8?9V}vt$jhdJqW!dL3!1t zK(f_l1ZEo&QFP-Ny9?WGi!7;(ncW4&|LZqBn1h#R3sYU?uu^m5ESU6SZV!MhO4k+* zDfDNZr`#hIok5P=1q|f8wfR&VXB1%F-8`tRTL;g8{IW@F_BN9eNL`39&FFBrSe`9L zkEw~Aw(1*>&d;ZhPsLm#_eHBvxrrt9sfryJrz`P(WPUl+biniI2$uy*fztCvRL^Bb zcpnKZx8`$cxJ4L17K;dblAF=0W^b3-d0rAYyb~zifVozHTkwucqLK+vA#KVwdT8uS z1PqFJ&UGd#qNDJlB~v8(x84y$60BMZZDoxpII%t(D|-M{M_+x8cWCngXhDU<&^>20 z71b@+kJ$vW7932UWI2^7{?#)HJL#bWlHQn4_bXf~USnc;=2q^BZ$(s1Z%NBi;@BB^ST zEIQASBvq?MO3{!dCUG*M@z+P^lcDeY0CCJ_3gkE=fzD+Y=}bno2VFRn$G!lCtGGEe zAPn3MZAP?ymBjaVGACHDp^nnqI3k0@4k)#O8#h8~XPRZxdt-`&YYVkRCOQ&!PC~#f zO9XWiuYd5IC5BP9Nqj~MvDR*KM(NPD$=P6gdG^7%I~XS{Bk?5WOnEd^s0?pnqsFk# z7eWLy=y0{nMnEs&lj2?|Vj!-s-?~8WS89CrHlv!_8W?JZ-HQa2tGlVoU;J(`>?96b)# zH(B?}K*^4sO&ktHN=ZIqO@b#KC1>PCmG^>ut3@ZQ*uCxO^!e_R4?Me?=d7cnKG1S;6~## z?b^MQ{S&uqu<{Y(!%tJU4-)WQAZb!$u0Lz1^UiDd(pfxsVul$2Si$Cdi#l}y3erWG z0d%S0oK0#DfMv;I}e4kLNbzYGjg2C7^}|lG&??>1|REE)#POQrB@K z%J-lzK}T>YkUFV7`hD)na5Z||tmeAEq)%)vF+9~ZdmDS6-~v<;Uv%??|AHXFUPF+G zCTed@thIS9WK;A+K?7tT#)acc_9vL5B~G@+vA`N##2ydkc=k26Ptt0}yU#!_YiMH7BfX_Q$+3iXjx z@Fb^9A82Y|urgGVn-;||Q8-|@7DIS>)@_N=P$MKi>>WeJvpa?-6ID?3WKAiD0UD17uK?vMoFRMMGxxnAV0>LyTabkt=Vom4xuKw=gTgU*7yi3YH_ILVNE zS+}>*v1We|(-yA+f4b6m*WU~(x=BV5#){B8<*Ez9=sU@sk}_+ygW+cwW-%L!*&}6q zaZ{41xXlLzuUwxf8n;X~z#T2A_|jw{$uYt_i}6_3evi8o&*7Kh*%=^;jiq2wYMP73 z>74@+K0!8T6wuc4R{lx#r64=FaDhde{eEPY)_%&Im_5j~&aN7y#ciP)CHL5dff7Jx zZd9qfjEQ$U-HJGRD9{lAE|l9CDorCZYrTry3nfSb!C;{rQc#ELIM9L&!5;T+1#zb+ zXNBAA51=4t9(fAq&gZKNRpWY{yu#jhRfs#6P-%s`7;2!_G|GW1nrW0%@J8M2ysEWK zx!qYiuHEp}(Ds!-Wbcle^aWQ|F9|OAo$tDr3;a|>cafvz41aOuTn%}oFJxdRU}GzE zX;6Yd(QqDITbn#Jg;hmrJ8Sf6l$c z?0aQxv+ZHlB2zu<+QPM|t#|{2CN-UxLiPqEN{9sL(22Gil(lb;>{VL^U^6+WxdQs# zV~Hbedemn6Z#YyI97V^M+*v_Ck=G0&cM>@LgYT)tNuDL%XGO@WsR~r|oi}aFfviyh z4hyJ!7Mt)Qf%bhV^}-Mc9DS_ixnOGg2(cPzn@OVx*4c1ys_wa9r%54GWgDF&k2bXI z#)-jN)zV0%Lb(!rAY?3@qZR7t@x+6yK04Ljt8E)y7{@OAx6Jly=v}FHj|i3A#AZdC zsQGLdEG5Piekj}DnP4Tv)$kX7`^Z{m=4(-o|BH_2z}TRs&hSppo{Nol=}qlzY4mpT z`;^HqstzW6hf^k6S)QG(^og3igCYX;nk48>;9pJ|YWzczMLI;3dT%7rqzsHx^mr*4 zVpXs6RoE`nqoP)e431MzTP}vVrr)7{wrH@3X360BDXC0seZC+s#390_#0I?-^pMi^ z!4!2UUZkk-wO+wm;Ky=C0E9TFEw`!1Oq@&VZ8)hK7Q@=Mi6^ng@}b>+IyV*kOZa2y3YEnRwytY&;#wj=BsuL$?vhG-AKU_7jpeOdDS&$*NX z4G_-JRF(?q);U2&H{1k{O1&t)Thj#rn_Nw^@g1�>HYZpb}2v5O&Y);lng#P8}Q! zo(O&LLq>vVv*06=-_dSvv^ybM92V$DeYU{8yJ+Hy-SieufmhMZsp{W)n_O&f!Kzl& z3LH^~Mf8%9!cN0-DhkCY(Jj`cqd28mkv~N@%Uhp8k}>d62W%AGA-qm7ZT+Mr0>lt& zh%GzDss#yy%cV#dFXA1qA|0GkgjJY0WDZx(ITt*e%K3CYy$B!P4DA;?7c{sC7cK+y zW=dI6+?#B6cD7iH+h>hDONasnHX$*#^~;yAREkE3Y07b_MAKDuG8}LxLpS^`<9m_hBa(6E;_2BK*>#AmCWdMshN||c!{@yi zS6|1=6S^EFjpWP1G*}1?WNL%Z%2(5B@smPU&UGr<{h*uF#4ssyWdnD+nR+{1ea}8S zc4BjQD;#R5#zKcm!egm3i?6G!QWtis+bdR%CHN0U7FOqCMar(|mZ`fP;3`VY?Aihn z-hyijkfFh~9w^6T$xIu^V3(O{<7%f0JO)iCIgB04Y-oHf8C=c92*+Bsg|WM>?2<{9 zgDU5&3i3}u-zw#ERD<0+h6m6=EwYigp?n%WCDK zLkJt-l_Z&gI1GV1D7xTHr>Y^HPu(^BBynChxY1JV_)AEEB>n4Cbc=wIGy=p-;?|fN zY0MT+Mb&h8*+U=`Vb0CsIc+ja>yBwHZ8Zf^Cx-Z0VVdvHn_F5C?BI}90UIj1D!YFU z7YMZcf(8vaVuw4k1J@QAm2>VM95+uIf4Q0`jRBR?^h4Oqn`q946s^_s#l%^F!E}fT z4wQq?9l@(OgPeD52`^{k!V)+BmpPiN7=f6LX>R3Xni}c5>vUK~QUwblS4p))O?#eI zT+}4{qDXqg?nVU4E5-#j;oOZ(kfMiJgX4UBY)(Lo7eeZxClVofM&tR>y*1;dz6qEm zm?(orrvnW~7th!vA3zE@;2s7cI~%DR>zzbu=r1lFy$$6Fns((3VS?bk6MY8$x_qPR zK9ks`x5i!ofwj_+y|q(LE0ubl0wcf;e7JE6-bRC}?_t`9rDGl(mG}!L+3M**I1z4Q z%a4{h%iY82{9;Bj{EZ1lj!loOjQ*A`4BXViJ80cL!)YQ-SANWY z2hPaxQ&jFUX%-xT+F|d2Kt)}2wz7TDlk&);LzNUT$X?k<)2W- znv1_Qr?-8PB6JS?pPuyF1TLC@47LCO#AtkSalS&^{ZTupX@p83eyY__19dQ%;j1dj z`6r+N`2G+x7f63-prkV;MtCIlBj>6+iO4O)Eq?9vEM8jEN4=NfnRY z!4#2%D0-{ZyAG9aKnf3swxA&`b1J)j*3-k;J%E=HpMuWJ!S`Sekl<&$;yQ{!SHsD( zg+MmGHe!vtH&syJFiizT_AK|;kf2m5rDx4`Qu4;Rw7AwW%ONcepxAz8z%nT9^T|J% zo};JVM3mq?c42!x>H9aHV*Zyi#R8WzGUvRVhOyN20uKCxxE@cI*D1ARf=INg+>l$6 zSc65x5HWD3`EIuuV1dTFI<7QRIT2T&S+|fsH2j^~aM9l)PVNm4W#*|(tsW}sTiynRn7iPudj_rU+1Y)87~5pF6T6Q z3aXv5(bkGApESQ6;7Wcv}ffiXv5_#5j1_ z^JPVI;9E`z79Wn(Sd{ZB(Tk$nL~KXUl6tY6;K)zU^XM5kQjO3INmy47mi3rze1jdW zBO5#x7DpRMeDgG%PSGOi$G>=vTE{MJ^I+fSdVd^9GW8{2FlJ_+Dx%{*sO>0^m{)4d zz~cA>bWZ56LBVI<79(fWC)Thh=jy;YZW>0P87M>jDtH+E0R)3kc9*a=GCq4^;-IsjUI+ADpd5lyF6vVLO

I%m@iFjOWx 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

X8%|VYbwpXowYN~4{1s;i7q%O)Kfx2#HaEqy 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⪼} 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ⅅ$?nLa_ioO4x(>D)D-`{`U=xgy2tVdY=a}GY6 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 ICI>727gGcnCjbBd literal 0 HcmV?d00001 diff --git a/src/Simulation/Native/parseLog.py b/src/Simulation/Native/parseLog.py new file mode 100644 index 00000000000..ee7837867e0 --- /dev/null +++ b/src/Simulation/Native/parseLog.py @@ -0,0 +1,113 @@ +import re +import sys +import numpy as np + +logName = sys.argv[1] +reSched = re.compile(r"^==== sched:\s+(\S+)") +reFN = re.compile(r"^(\S+)\.") +reNQs = re.compile(r"nQs=(\d+) .*range=(\d+).*prb=(\d+)") +reSim = re.compile(' (Generic|AVX|AVX2|AVX512)$') +rePars = re.compile(r'OMP_NUM_THREADS=(\d+) fusedSpan=(\d) fusedDepth=(\d+) wfnCapacity=(\d+)') +reInfo = re.compile(r'sz=([.\d]+) nQs=([.\d]+) nCs=([.\d]+) flsh= *([.\de+-]+).*gts= *([.\de+-]+).*elap= *(\d+).*(.)gps= *([.\de+-]+).*fus= *([.\d]+).*ker= *([.\d]+)') +found = reFN.search(logName) +env = found.group(1) +fp = open(logName,'r') +gpss = [] +print(f'"env","test","typ","sim","qs","threads","span","sz","gps"') +sim = "" +totalQs = -1 +threads = -1 +span = -1 +sz = -1 +rng = 1 +prb = -1 +sched = "???" + +prbs = [ + "ladder" , + "ladder" , + "shor_4" , + "shor_6" , + "shor_8" , + "shor_10" , + "shor_12" , + "suprem_44", + "suprem_55", + "suprem_56", + "qulacs_5", + "qulacs_10", + "qulacs_15", + "qulacs_20", + "qulacs_25" +] +def dumpGpss(): + global gpss,env,sim,totalQs,threads,span,sz,rng,prb,sched + if len(gpss) > 0: + gpsMed = np.median(gpss) + cnt = 0.0 + tot = 0.0 + for gps in gpss: + if gps > gpsMed/2.0 and gps < gpsMed*1.5: + cnt += 1.0 + tot += gps + if cnt > 0: gps = tot/cnt + else: gps = gpsAvg + + nam = prbs[prb] + + if rng == 0: nam = f'{env},{nam}L' + elif rng == 2: nam = f'{env},{nam}H' + else: nam = f'{env},{nam}' + + print(f"{nam},{sched},{sim},{totalQs},{threads},{span},{sz},{gps:.1f}") + + gpss = [] + +while True: + inp = fp.readline() + if inp == "": + dumpGpss() + break + found = reSched.search(inp) + if found: + dumpGpss() + sched = found.group(1) + continue + found = reNQs.search(inp) + if found: + dumpGpss() + totalQs = found.group(1) + rng = int(found.group(2)) + prb = int(found.group(3)) + continue + found = reSim.search(inp) + if found: + dumpGpss() + sim = found.group(1) + continue + found = rePars.search(inp) + if found: + threads = found.group(1) + span = found.group(2) + limit = found.group(3) + wfnSiz = found.group(4) + continue + found = reInfo.search(inp) + if found: + sz = found.group(1) + nQs = float(found.group(2)) + nCs = float(found.group(3)) + flushes = found.group(4) + gates = found.group(5) + elap = found.group(6) + if (found.group(7) == 'k'): mul = 1000.0 + else: mul = 1.0 + gps = float(found.group(8)) * mul + fusions = found.group(9) + kernel = found.group(10) + gpss.append(gps) + continue + + +fp.close() + diff --git a/src/Simulation/Native/src/CMakeLists.txt b/src/Simulation/Native/src/CMakeLists.txt index e53864f85c9..faf1f1c480c 100644 --- a/src/Simulation/Native/src/CMakeLists.txt +++ b/src/Simulation/Native/src/CMakeLists.txt @@ -8,8 +8,9 @@ set(AVX2FLAGS "/arch:AVX2" ) set(AVX512FLAGS "/arch:AVX512" ) set(FMAFLAGS "") else(MSVC) -SET(AVXFLAGS "-mavx" ) -set(AVX2FLAGS -mfma;-mavx2) +SET(AVXFLAGS "-mavx") +set(AVX2FLAGS "-mfma -mavx2") +set(AVX512FLAGS "-mfma -mavx512f -mavx512cd") set(FMAFLAGS ) endif(MSVC) @@ -19,14 +20,16 @@ configure_file(version.hpp.in ${PROJECT_BINARY_DIR}/src/version.hpp) add_subdirectory(util) add_subdirectory(simulator) -set(SOURCES simulator/factory.cpp simulator/capi.cpp simulator/simulator.cpp util/openmp.cpp simulator/simulatoravx.cpp simulator/simulatoravx2.cpp ) +set(SOURCES simulator/factory.cpp simulator/capi.cpp simulator/simulator.cpp util/openmp.cpp simulator/simulatoravx.cpp simulator/simulatoravx2.cpp simulator/simulatoravx512.cpp ) if(BUILD_SHARED_LIBS) add_library(Microsoft.Quantum.Simulator.Runtime SHARED ${SOURCES}) set_source_files_properties(simulator/simulatoravx.cpp PROPERTIES COMPILE_FLAGS ${AVXFLAGS}) if (MSVC) set_source_files_properties(simulator/simulatoravx2.cpp PROPERTIES COMPILE_FLAGS -mfma COMPILE_FLAGS ${AVX2FLAGS}) +set_source_files_properties(simulator/simulatoravx512.cpp PROPERTIES COMPILE_FLAGS -mfma COMPILE_FLAGS ${AVX512FLAGS}) else(MSVC) -set_source_files_properties(simulator/simulatoravx2.cpp PROPERTIES COMPILE_FLAGS -mfma COMPILE_FLAGS "-mavx2 -mfma") +set_source_files_properties(simulator/simulatoravx2.cpp PROPERTIES COMPILE_FLAGS -mfma COMPILE_FLAGS ${AVX2FLAGS}) +set_source_files_properties(simulator/simulatoravx512.cpp PROPERTIES COMPILE_FLAGS -mfma COMPILE_FLAGS ${AVX512FLAGS}) endif(MSVC) message (STATUS "Building shared library") target_compile_definitions(Microsoft.Quantum.Simulator.Runtime PRIVATE BUILD_DLL=1) @@ -36,6 +39,7 @@ else(BUILD_SHARED_LIBS) add_library(Microsoft.Quantum.Simulator.Runtime STATIC ${SOURCES}) set_source_files_properties(simulator/simulatoravx.cpp PROPERTIES COMPILE_FLAGS ${AVXFLAGS}) set_source_files_properties(simulator/simulatoravx2.cpp PROPERTIES COMPILE_FLAGS ${AVX2FLAGS}) + set_source_files_properties(simulator/simulatoravx512.cpp PROPERTIES COMPILE_FLAGS ${AVX512FLAGS}) endif(BUILD_SHARED_LIBS) install(TARGETS Microsoft.Quantum.Simulator.Runtime diff --git a/src/Simulation/Native/src/Makefile b/src/Simulation/Native/src/Makefile new file mode 100644 index 00000000000..edaded273e5 --- /dev/null +++ b/src/Simulation/Native/src/Makefile @@ -0,0 +1,422 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"libraries\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# The main all target +all: cmake_check_build_system + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(CMAKE_COMMAND) -E cmake_progress_start /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/CMakeFiles /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/src/CMakeFiles/progress.marks + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/all + $(CMAKE_COMMAND) -E cmake_progress_start /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/rule +.PHONY : src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/rule + +# Convenience name for target. +Microsoft.Quantum.Simulator.Runtime: src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/rule + +.PHONY : Microsoft.Quantum.Simulator.Runtime + +# fast build rule for target. +Microsoft.Quantum.Simulator.Runtime/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build +.PHONY : Microsoft.Quantum.Simulator.Runtime/fast + +simulator/capi.o: simulator/capi.cpp.o + +.PHONY : simulator/capi.o + +# target to build an object file +simulator/capi.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/capi.cpp.o +.PHONY : simulator/capi.cpp.o + +simulator/capi.i: simulator/capi.cpp.i + +.PHONY : simulator/capi.i + +# target to preprocess a source file +simulator/capi.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/capi.cpp.i +.PHONY : simulator/capi.cpp.i + +simulator/capi.s: simulator/capi.cpp.s + +.PHONY : simulator/capi.s + +# target to generate assembly for a file +simulator/capi.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/capi.cpp.s +.PHONY : simulator/capi.cpp.s + +simulator/factory.o: simulator/factory.cpp.o + +.PHONY : simulator/factory.o + +# target to build an object file +simulator/factory.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/factory.cpp.o +.PHONY : simulator/factory.cpp.o + +simulator/factory.i: simulator/factory.cpp.i + +.PHONY : simulator/factory.i + +# target to preprocess a source file +simulator/factory.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/factory.cpp.i +.PHONY : simulator/factory.cpp.i + +simulator/factory.s: simulator/factory.cpp.s + +.PHONY : simulator/factory.s + +# target to generate assembly for a file +simulator/factory.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/factory.cpp.s +.PHONY : simulator/factory.cpp.s + +simulator/simulator.o: simulator/simulator.cpp.o + +.PHONY : simulator/simulator.o + +# target to build an object file +simulator/simulator.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulator.cpp.o +.PHONY : simulator/simulator.cpp.o + +simulator/simulator.i: simulator/simulator.cpp.i + +.PHONY : simulator/simulator.i + +# target to preprocess a source file +simulator/simulator.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulator.cpp.i +.PHONY : simulator/simulator.cpp.i + +simulator/simulator.s: simulator/simulator.cpp.s + +.PHONY : simulator/simulator.s + +# target to generate assembly for a file +simulator/simulator.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulator.cpp.s +.PHONY : simulator/simulator.cpp.s + +simulator/simulatoravx.o: simulator/simulatoravx.cpp.o + +.PHONY : simulator/simulatoravx.o + +# target to build an object file +simulator/simulatoravx.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulatoravx.cpp.o +.PHONY : simulator/simulatoravx.cpp.o + +simulator/simulatoravx.i: simulator/simulatoravx.cpp.i + +.PHONY : simulator/simulatoravx.i + +# target to preprocess a source file +simulator/simulatoravx.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulatoravx.cpp.i +.PHONY : simulator/simulatoravx.cpp.i + +simulator/simulatoravx.s: simulator/simulatoravx.cpp.s + +.PHONY : simulator/simulatoravx.s + +# target to generate assembly for a file +simulator/simulatoravx.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulatoravx.cpp.s +.PHONY : simulator/simulatoravx.cpp.s + +simulator/simulatoravx2.o: simulator/simulatoravx2.cpp.o + +.PHONY : simulator/simulatoravx2.o + +# target to build an object file +simulator/simulatoravx2.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulatoravx2.cpp.o +.PHONY : simulator/simulatoravx2.cpp.o + +simulator/simulatoravx2.i: simulator/simulatoravx2.cpp.i + +.PHONY : simulator/simulatoravx2.i + +# target to preprocess a source file +simulator/simulatoravx2.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulatoravx2.cpp.i +.PHONY : simulator/simulatoravx2.cpp.i + +simulator/simulatoravx2.s: simulator/simulatoravx2.cpp.s + +.PHONY : simulator/simulatoravx2.s + +# target to generate assembly for a file +simulator/simulatoravx2.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulatoravx2.cpp.s +.PHONY : simulator/simulatoravx2.cpp.s + +simulator/simulatoravx512.o: simulator/simulatoravx512.cpp.o + +.PHONY : simulator/simulatoravx512.o + +# target to build an object file +simulator/simulatoravx512.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulatoravx512.cpp.o +.PHONY : simulator/simulatoravx512.cpp.o + +simulator/simulatoravx512.i: simulator/simulatoravx512.cpp.i + +.PHONY : simulator/simulatoravx512.i + +# target to preprocess a source file +simulator/simulatoravx512.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulatoravx512.cpp.i +.PHONY : simulator/simulatoravx512.cpp.i + +simulator/simulatoravx512.s: simulator/simulatoravx512.cpp.s + +.PHONY : simulator/simulatoravx512.s + +# target to generate assembly for a file +simulator/simulatoravx512.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/simulator/simulatoravx512.cpp.s +.PHONY : simulator/simulatoravx512.cpp.s + +util/openmp.o: util/openmp.cpp.o + +.PHONY : util/openmp.o + +# target to build an object file +util/openmp.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/util/openmp.cpp.o +.PHONY : util/openmp.cpp.o + +util/openmp.i: util/openmp.cpp.i + +.PHONY : util/openmp.i + +# target to preprocess a source file +util/openmp.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/util/openmp.cpp.i +.PHONY : util/openmp.cpp.i + +util/openmp.s: util/openmp.cpp.s + +.PHONY : util/openmp.s + +# target to generate assembly for a file +util/openmp.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/build.make src/CMakeFiles/Microsoft.Quantum.Simulator.Runtime.dir/util/openmp.cpp.s +.PHONY : util/openmp.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... install/local" + @echo "... install" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... test" + @echo "... Microsoft.Quantum.Simulator.Runtime" + @echo "... simulator/capi.o" + @echo "... simulator/capi.i" + @echo "... simulator/capi.s" + @echo "... simulator/factory.o" + @echo "... simulator/factory.i" + @echo "... simulator/factory.s" + @echo "... simulator/simulator.o" + @echo "... simulator/simulator.i" + @echo "... simulator/simulator.s" + @echo "... simulator/simulatoravx.o" + @echo "... simulator/simulatoravx.i" + @echo "... simulator/simulatoravx.s" + @echo "... simulator/simulatoravx2.o" + @echo "... simulator/simulatoravx2.i" + @echo "... simulator/simulatoravx2.s" + @echo "... simulator/simulatoravx512.o" + @echo "... simulator/simulatoravx512.i" + @echo "... simulator/simulatoravx512.s" + @echo "... util/openmp.o" + @echo "... util/openmp.i" + @echo "... util/openmp.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/src/Simulation/Native/src/config.hpp b/src/Simulation/Native/src/config.hpp new file mode 100644 index 00000000000..363baa4d241 --- /dev/null +++ b/src/Simulation/Native/src/config.hpp @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#pragma once + +#include + +// check if we want to force single precision +/* #undef USE_SINGLE_PRECISION */ + +// check if we have AVX intrinsics +/* #undef HAVE_INTRINSICS */ + +// check if we have AVX-512 intrinsics +/* #undef HAVE_AVX512 */ + +// check if we want to use fused kernels +#define USE_GATE_FUSION + +#define BUILD_SHARED_LIBS + + +#if defined (_MSC_VER) && defined (BUILD_SHARED_LIBS) + +#ifdef BUILD_DLL +#define MICROSOFT_QUANTUM_DECL __declspec(dllexport) +#else +#define MICROSOFT_QUANTUM_DECL __declspec(dllimport) +#endif +#define MICROSOFT_QUANTUM_DECL_IMPORT __declspec(dllimport) +#else +#define MICROSOFT_QUANTUM_DECL +#define MICROSOFT_QUANTUM_DECL_IMPORT +#endif + +#ifdef HAVE_INTRINSICS +#ifdef HAVE_AVX512 +#define SIMULATOR SimulatorAVX512 +#else +#ifdef HAVE_FMA +#define SIMULATOR SimulatorAVX2 +#else +#define SIMULATOR SimulatorAVX +#endif +#endif +#else +#define SIMULATOR SimulatorGeneric +#endif + + diff --git a/src/Simulation/Native/src/external/avx/kernel1.hpp b/src/Simulation/Native/src/external/avx/kernel1.hpp index eac0cf47ea4..24799c4524e 100644 --- a/src/Simulation/Native/src/external/avx/kernel1.hpp +++ b/src/Simulation/Native/src/external/avx/kernel1.hpp @@ -22,7 +22,7 @@ inline void kernel_core(V& psi, std::size_t I, std::size_t d0, M const& m, M con template void kernel(V& psi, unsigned id0, M const& matrix, std::size_t ctrlmask) { - std::size_t n = psi.size(); + std::size_t n = psi.size(); std::size_t d0 = 1ULL << id0; auto m = matrix; std::size_t dsorted[] = {d0}; @@ -49,7 +49,7 @@ void kernel(V& psi, unsigned id0, M const& matrix, std::size_t ctrlmask) #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE1) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE1) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; ++i1){ kernel_core(psi, i0 + i1, dsorted[0], mm, mmt); @@ -57,7 +57,7 @@ void kernel(V& psi, unsigned id0, M const& matrix, std::size_t ctrlmask) } } else{ - #pragma omp for collapse(LOOP_COLLAPSE1) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE1) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; ++i1){ if (((i0 + i1)&ctrlmask) == ctrlmask) diff --git a/src/Simulation/Native/src/external/avx/kernel2.hpp b/src/Simulation/Native/src/external/avx/kernel2.hpp index 24f6c8ee13d..7d52dc39eec 100644 --- a/src/Simulation/Native/src/external/avx/kernel2.hpp +++ b/src/Simulation/Native/src/external/avx/kernel2.hpp @@ -63,7 +63,7 @@ void kernel(V& psi, unsigned id1, unsigned id0, M const& matrix, std::size_t ctr #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE2) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE2) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; ++i2){ @@ -73,7 +73,7 @@ void kernel(V& psi, unsigned id1, unsigned id0, M const& matrix, std::size_t ctr } } else{ - #pragma omp for collapse(LOOP_COLLAPSE2) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE2) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; ++i2){ diff --git a/src/Simulation/Native/src/external/avx/kernel3.hpp b/src/Simulation/Native/src/external/avx/kernel3.hpp index a63dbc28693..58248d4742e 100644 --- a/src/Simulation/Native/src/external/avx/kernel3.hpp +++ b/src/Simulation/Native/src/external/avx/kernel3.hpp @@ -102,7 +102,7 @@ void kernel(V& psi, unsigned id2, unsigned id1, unsigned id0, M const& matrix, s #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE3) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE3) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -114,7 +114,7 @@ void kernel(V& psi, unsigned id2, unsigned id1, unsigned id0, M const& matrix, s } } else{ - #pragma omp for collapse(LOOP_COLLAPSE3) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE3) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/avx/kernel4.hpp b/src/Simulation/Native/src/external/avx/kernel4.hpp index 92f573a0255..7ddcd504404 100644 --- a/src/Simulation/Native/src/external/avx/kernel4.hpp +++ b/src/Simulation/Native/src/external/avx/kernel4.hpp @@ -227,7 +227,7 @@ void kernel(V& psi, unsigned id3, unsigned id2, unsigned id1, unsigned id0, M co #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE4) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE4) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -241,7 +241,7 @@ void kernel(V& psi, unsigned id3, unsigned id2, unsigned id1, unsigned id0, M co } } else{ - #pragma omp for collapse(LOOP_COLLAPSE4) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE4) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/avx/kernel5.hpp b/src/Simulation/Native/src/external/avx/kernel5.hpp index 0cdba4b89c5..72078dd6fd4 100644 --- a/src/Simulation/Native/src/external/avx/kernel5.hpp +++ b/src/Simulation/Native/src/external/avx/kernel5.hpp @@ -380,7 +380,7 @@ void kernel(V& psi, unsigned id4, unsigned id3, unsigned id2, unsigned id1, unsi #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE5) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE5) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -396,7 +396,7 @@ void kernel(V& psi, unsigned id4, unsigned id3, unsigned id2, unsigned id1, unsi } } else{ - #pragma omp for collapse(LOOP_COLLAPSE5) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE5) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/avx/kernel6.hpp b/src/Simulation/Native/src/external/avx/kernel6.hpp index 343c6e3154c..89a4364b22c 100644 --- a/src/Simulation/Native/src/external/avx/kernel6.hpp +++ b/src/Simulation/Native/src/external/avx/kernel6.hpp @@ -212,7 +212,7 @@ void kernel(V& psi, unsigned id5, unsigned id4, unsigned id3, unsigned id2, unsi #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE6) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE6) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -230,7 +230,7 @@ void kernel(V& psi, unsigned id5, unsigned id4, unsigned id3, unsigned id2, unsi } } else{ - #pragma omp for collapse(LOOP_COLLAPSE6) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE6) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/avx/kernel7.hpp b/src/Simulation/Native/src/external/avx/kernel7.hpp index ecd0f45f3cf..8dfda9eee71 100644 --- a/src/Simulation/Native/src/external/avx/kernel7.hpp +++ b/src/Simulation/Native/src/external/avx/kernel7.hpp @@ -389,7 +389,7 @@ void kernel(V& psi, unsigned id6, unsigned id5, unsigned id4, unsigned id3, unsi #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE7) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE7) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -409,7 +409,7 @@ void kernel(V& psi, unsigned id6, unsigned id5, unsigned id4, unsigned id3, unsi } } else{ - #pragma omp for collapse(LOOP_COLLAPSE7) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE7) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/avx2/kernel1.hpp b/src/Simulation/Native/src/external/avx2/kernel1.hpp index eac0cf47ea4..198676259e4 100644 --- a/src/Simulation/Native/src/external/avx2/kernel1.hpp +++ b/src/Simulation/Native/src/external/avx2/kernel1.hpp @@ -49,7 +49,7 @@ void kernel(V& psi, unsigned id0, M const& matrix, std::size_t ctrlmask) #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE1) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE1) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; ++i1){ kernel_core(psi, i0 + i1, dsorted[0], mm, mmt); @@ -57,7 +57,7 @@ void kernel(V& psi, unsigned id0, M const& matrix, std::size_t ctrlmask) } } else{ - #pragma omp for collapse(LOOP_COLLAPSE1) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE1) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; ++i1){ if (((i0 + i1)&ctrlmask) == ctrlmask) diff --git a/src/Simulation/Native/src/external/avx2/kernel2.hpp b/src/Simulation/Native/src/external/avx2/kernel2.hpp index 24f6c8ee13d..7d52dc39eec 100644 --- a/src/Simulation/Native/src/external/avx2/kernel2.hpp +++ b/src/Simulation/Native/src/external/avx2/kernel2.hpp @@ -63,7 +63,7 @@ void kernel(V& psi, unsigned id1, unsigned id0, M const& matrix, std::size_t ctr #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE2) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE2) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; ++i2){ @@ -73,7 +73,7 @@ void kernel(V& psi, unsigned id1, unsigned id0, M const& matrix, std::size_t ctr } } else{ - #pragma omp for collapse(LOOP_COLLAPSE2) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE2) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; ++i2){ diff --git a/src/Simulation/Native/src/external/avx2/kernel3.hpp b/src/Simulation/Native/src/external/avx2/kernel3.hpp index a63dbc28693..58248d4742e 100644 --- a/src/Simulation/Native/src/external/avx2/kernel3.hpp +++ b/src/Simulation/Native/src/external/avx2/kernel3.hpp @@ -102,7 +102,7 @@ void kernel(V& psi, unsigned id2, unsigned id1, unsigned id0, M const& matrix, s #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE3) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE3) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -114,7 +114,7 @@ void kernel(V& psi, unsigned id2, unsigned id1, unsigned id0, M const& matrix, s } } else{ - #pragma omp for collapse(LOOP_COLLAPSE3) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE3) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/avx2/kernel4.hpp b/src/Simulation/Native/src/external/avx2/kernel4.hpp index 92f573a0255..7ddcd504404 100644 --- a/src/Simulation/Native/src/external/avx2/kernel4.hpp +++ b/src/Simulation/Native/src/external/avx2/kernel4.hpp @@ -227,7 +227,7 @@ void kernel(V& psi, unsigned id3, unsigned id2, unsigned id1, unsigned id0, M co #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE4) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE4) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -241,7 +241,7 @@ void kernel(V& psi, unsigned id3, unsigned id2, unsigned id1, unsigned id0, M co } } else{ - #pragma omp for collapse(LOOP_COLLAPSE4) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE4) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/avx2/kernel5.hpp b/src/Simulation/Native/src/external/avx2/kernel5.hpp index 0cdba4b89c5..72078dd6fd4 100644 --- a/src/Simulation/Native/src/external/avx2/kernel5.hpp +++ b/src/Simulation/Native/src/external/avx2/kernel5.hpp @@ -380,7 +380,7 @@ void kernel(V& psi, unsigned id4, unsigned id3, unsigned id2, unsigned id1, unsi #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE5) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE5) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -396,7 +396,7 @@ void kernel(V& psi, unsigned id4, unsigned id3, unsigned id2, unsigned id1, unsi } } else{ - #pragma omp for collapse(LOOP_COLLAPSE5) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE5) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/avx2/kernel6.hpp b/src/Simulation/Native/src/external/avx2/kernel6.hpp index 343c6e3154c..89a4364b22c 100644 --- a/src/Simulation/Native/src/external/avx2/kernel6.hpp +++ b/src/Simulation/Native/src/external/avx2/kernel6.hpp @@ -212,7 +212,7 @@ void kernel(V& psi, unsigned id5, unsigned id4, unsigned id3, unsigned id2, unsi #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE6) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE6) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -230,7 +230,7 @@ void kernel(V& psi, unsigned id5, unsigned id4, unsigned id3, unsigned id2, unsi } } else{ - #pragma omp for collapse(LOOP_COLLAPSE6) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE6) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/avx2/kernel7.hpp b/src/Simulation/Native/src/external/avx2/kernel7.hpp index ecd0f45f3cf..8dfda9eee71 100644 --- a/src/Simulation/Native/src/external/avx2/kernel7.hpp +++ b/src/Simulation/Native/src/external/avx2/kernel7.hpp @@ -389,7 +389,7 @@ void kernel(V& psi, unsigned id6, unsigned id5, unsigned id4, unsigned id3, unsi #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE7) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE7) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -409,7 +409,7 @@ void kernel(V& psi, unsigned id6, unsigned id5, unsigned id4, unsigned id3, unsi } } else{ - #pragma omp for collapse(LOOP_COLLAPSE7) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE7) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/avx512/kernel1.hpp b/src/Simulation/Native/src/external/avx512/kernel1.hpp new file mode 100644 index 00000000000..19f2c473370 --- /dev/null +++ b/src/Simulation/Native/src/external/avx512/kernel1.hpp @@ -0,0 +1,85 @@ +// (C) 2018 ETH Zurich, ITP, Thomas Häner and Damian Steiger + +template +inline void kernel_core(V& psi, std::size_t I, std::size_t d0, M const& m, M const& mt) +{ + __m256d v[1]; + + v[0] = load1(&psi[I]); + + __m256d tmp[1] = {_mm256_setzero_pd()}; + + tmp[0] = fma(v[0], m[0], mt[0], tmp[0]); + + v[0] = load1(&psi[I + d0]); + + tmp[0] = fma(v[0], m[1], mt[1], tmp[0]); + store((double*)&psi[I + d0], (double*)&psi[I], tmp[0]); + +} + +// bit indices id[.] are given from high to low (e.g. control first for CNOT) +template +void kernel(V& psi, unsigned id0, M const& matrix, std::size_t ctrlmask) +{ + std::size_t n = psi.size(); + std::size_t d0 = 1ULL << id0; + auto m = matrix; + std::size_t dsorted[] = {d0}; + permute_qubits_and_matrix(dsorted, 1, m); + + __m256d mm[2]; + for (unsigned b = 0; b < 2; ++b){ + for (unsigned r = 0; r < 1; ++r){ + for (unsigned c = 0; c < 1; ++c){ + mm[b*1+r*1+c] = loada(&m[2*r+0][c+b*1], &m[2*r+1][c+b*1]); + } + } + } + + __m256d mmt[2]; + for (unsigned b = 0; b < 2; ++b){ + for (unsigned r = 0; r < 1; ++r){ + for (unsigned c = 0; c < 1; ++c){ + mmt[b*1+r*1+c] = loadbm(&m[2*r+0][c+b*1], &m[2*r+1][c+b*1]); + } + } + } + + +#ifndef _MSC_VER + if (ctrlmask == 0){ + #pragma omp parallel for collapse(LOOP_COLLAPSE1) schedule(static) proc_bind(spread) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; ++i1){ + kernel_core(psi, i0 + i1, dsorted[0], mm, mmt); + } + } + } + else{ + #pragma omp parallel for collapse(LOOP_COLLAPSE1) schedule(static) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; ++i1){ + if (((i0 + i1)&ctrlmask) == ctrlmask) + kernel_core(psi, i0 + i1, dsorted[0], mm, mmt); + } + } + } +#else + std::intptr_t zero = 0; + std::intptr_t dmask = dsorted[0]; + + if (ctrlmask == 0){ + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & dmask) == zero) + kernel_core(psi, i, dsorted[0], mm, mmt); + } else { + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & ctrlmask) == ctrlmask && (i & dmask) == zero) + kernel_core(psi, i, dsorted[0], mm, mmt); + } +#endif +} + diff --git a/src/Simulation/Native/src/external/avx512/kernel2.hpp b/src/Simulation/Native/src/external/avx512/kernel2.hpp new file mode 100644 index 00000000000..9a47f3044fb --- /dev/null +++ b/src/Simulation/Native/src/external/avx512/kernel2.hpp @@ -0,0 +1,98 @@ +// (C) 2018 ETH Zurich, ITP, Thomas Häner and Damian Steiger + +template +inline void kernel_core(V& psi, std::size_t I, std::size_t d0, std::size_t d1, M const& m, M const& mt) +{ + __m512d v[1]; + + v[0] = load1x4(&psi[I]); + + __m512d tmp[1] = {_mm512_setzero_pd()}; + + tmp[0] = fma(v[0], m[0], mt[0], tmp[0]); + + v[0] = load1x4(&psi[I + d0]); + + tmp[0] = fma(v[0], m[1], mt[1], tmp[0]); + + v[0] = load1x4(&psi[I + d1]); + + tmp[0] = fma(v[0], m[2], mt[2], tmp[0]); + + v[0] = load1x4(&psi[I + d0 + d1]); + + tmp[0] = fma(v[0], m[3], mt[3], tmp[0]); + store((double*)&psi[I + d0 + d1], (double*)&psi[I + d1], (double*)&psi[I + d0], (double*)&psi[I], tmp[0]); + +} + +// bit indices id[.] are given from high to low (e.g. control first for CNOT) +template +void kernel(V& psi, unsigned id1, unsigned id0, M const& matrix, std::size_t ctrlmask) +{ + std::size_t n = psi.size(); + std::size_t d0 = 1ULL << id0; + std::size_t d1 = 1ULL << id1; + auto m = matrix; + std::size_t dsorted[] = {d0, d1}; + permute_qubits_and_matrix(dsorted, 2, m); + + __m512d mm[4]; + for (unsigned b = 0; b < 4; ++b){ + for (unsigned r = 0; r < 1; ++r){ + for (unsigned c = 0; c < 1; ++c){ + mm[b*1+r*1+c] = loada(&m[4*r+0][c+b*1], &m[4*r+1][c+b*1], &m[4*r+2][c+b*1], &m[4*r+3][c+b*1]); + } + } + } + + __m512d mmt[4]; + for (unsigned b = 0; b < 4; ++b){ + for (unsigned r = 0; r < 1; ++r){ + for (unsigned c = 0; c < 1; ++c){ + mmt[b*1+r*1+c] = loadbm(&m[4*r+0][c+b*1], &m[4*r+1][c+b*1], &m[4*r+2][c+b*1], &m[4*r+3][c+b*1]); + } + } + } + + +#ifndef _MSC_VER + if (ctrlmask == 0){ + #pragma omp parallel for collapse(LOOP_COLLAPSE2) schedule(static) proc_bind(spread) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; ++i2){ + kernel_core(psi, i0 + i1 + i2, dsorted[1], dsorted[0], mm, mmt); + } + } + } + } + else{ + #pragma omp parallel for collapse(LOOP_COLLAPSE2) schedule(static) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; ++i2){ + if (((i0 + i1 + i2)&ctrlmask) == ctrlmask) + kernel_core(psi, i0 + i1 + i2, dsorted[1], dsorted[0], mm, mmt); + } + } + } + } +#else + std::intptr_t zero = 0; + std::intptr_t dmask = dsorted[0] + dsorted[1]; + + if (ctrlmask == 0){ + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & dmask) == zero) + kernel_core(psi, i, dsorted[1], dsorted[0], mm, mmt); + } else { + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & ctrlmask) == ctrlmask && (i & dmask) == zero) + kernel_core(psi, i, dsorted[1], dsorted[0], mm, mmt); + } +#endif +} + diff --git a/src/Simulation/Native/src/external/avx512/kernel3.hpp b/src/Simulation/Native/src/external/avx512/kernel3.hpp new file mode 100644 index 00000000000..a0f27741672 --- /dev/null +++ b/src/Simulation/Native/src/external/avx512/kernel3.hpp @@ -0,0 +1,128 @@ +// (C) 2018 ETH Zurich, ITP, Thomas Häner and Damian Steiger + +template +inline void kernel_core(V& psi, std::size_t I, std::size_t d0, std::size_t d1, std::size_t d2, M const& m, M const& mt) +{ + __m512d v[1]; + + v[0] = load1x4(&psi[I]); + + __m512d tmp[2] = {_mm512_setzero_pd(), _mm512_setzero_pd()}; + + tmp[0] = fma(v[0], m[0], mt[0], tmp[0]); + tmp[1] = fma(v[0], m[1], mt[1], tmp[1]); + + v[0] = load1x4(&psi[I + d0]); + + tmp[0] = fma(v[0], m[2], mt[2], tmp[0]); + tmp[1] = fma(v[0], m[3], mt[3], tmp[1]); + + v[0] = load1x4(&psi[I + d1]); + + tmp[0] = fma(v[0], m[4], mt[4], tmp[0]); + tmp[1] = fma(v[0], m[5], mt[5], tmp[1]); + + v[0] = load1x4(&psi[I + d0 + d1]); + + tmp[0] = fma(v[0], m[6], mt[6], tmp[0]); + tmp[1] = fma(v[0], m[7], mt[7], tmp[1]); + + v[0] = load1x4(&psi[I + d2]); + + tmp[0] = fma(v[0], m[8], mt[8], tmp[0]); + tmp[1] = fma(v[0], m[9], mt[9], tmp[1]); + + v[0] = load1x4(&psi[I + d0 + d2]); + + tmp[0] = fma(v[0], m[10], mt[10], tmp[0]); + tmp[1] = fma(v[0], m[11], mt[11], tmp[1]); + + v[0] = load1x4(&psi[I + d1 + d2]); + + tmp[0] = fma(v[0], m[12], mt[12], tmp[0]); + tmp[1] = fma(v[0], m[13], mt[13], tmp[1]); + + v[0] = load1x4(&psi[I + d0 + d1 + d2]); + + tmp[0] = fma(v[0], m[14], mt[14], tmp[0]); + tmp[1] = fma(v[0], m[15], mt[15], tmp[1]); + store((double*)&psi[I + d0 + d1], (double*)&psi[I + d1], (double*)&psi[I + d0], (double*)&psi[I], tmp[0]); + store((double*)&psi[I + d0 + d1 + d2], (double*)&psi[I + d1 + d2], (double*)&psi[I + d0 + d2], (double*)&psi[I + d2], tmp[1]); + +} + +// bit indices id[.] are given from high to low (e.g. control first for CNOT) +template +void kernel(V& psi, unsigned id2, unsigned id1, unsigned id0, M const& matrix, std::size_t ctrlmask) +{ + std::size_t n = psi.size(); + std::size_t d0 = 1ULL << id0; + std::size_t d1 = 1ULL << id1; + std::size_t d2 = 1ULL << id2; + auto m = matrix; + std::size_t dsorted[] = {d0, d1, d2}; + permute_qubits_and_matrix(dsorted, 3, m); + + __m512d mm[16]; + for (unsigned b = 0; b < 8; ++b){ + for (unsigned r = 0; r < 2; ++r){ + for (unsigned c = 0; c < 1; ++c){ + mm[b*2+r*1+c] = loada(&m[4*r+0][c+b*1], &m[4*r+1][c+b*1], &m[4*r+2][c+b*1], &m[4*r+3][c+b*1]); + } + } + } + + __m512d mmt[16]; + for (unsigned b = 0; b < 8; ++b){ + for (unsigned r = 0; r < 2; ++r){ + for (unsigned c = 0; c < 1; ++c){ + mmt[b*2+r*1+c] = loadbm(&m[4*r+0][c+b*1], &m[4*r+1][c+b*1], &m[4*r+2][c+b*1], &m[4*r+3][c+b*1]); + } + } + } + + +#ifndef _MSC_VER + if (ctrlmask == 0){ + #pragma omp parallel for collapse(LOOP_COLLAPSE3) schedule(static) proc_bind(spread) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ + for (std::size_t i3 = 0; i3 < dsorted[2]; ++i3){ + kernel_core(psi, i0 + i1 + i2 + i3, dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } + } + } + } + } + else{ + #pragma omp parallel for collapse(LOOP_COLLAPSE3) schedule(static) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ + for (std::size_t i3 = 0; i3 < dsorted[2]; ++i3){ + if (((i0 + i1 + i2 + i3)&ctrlmask) == ctrlmask) + kernel_core(psi, i0 + i1 + i2 + i3, dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } + } + } + } + } +#else + std::intptr_t zero = 0; + std::intptr_t dmask = dsorted[0] + dsorted[1] + dsorted[2]; + + if (ctrlmask == 0){ + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & dmask) == zero) + kernel_core(psi, i, dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } else { + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & ctrlmask) == ctrlmask && (i & dmask) == zero) + kernel_core(psi, i, dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } +#endif +} + diff --git a/src/Simulation/Native/src/external/avx512/kernel4.hpp b/src/Simulation/Native/src/external/avx512/kernel4.hpp new file mode 100644 index 00000000000..e956661a996 --- /dev/null +++ b/src/Simulation/Native/src/external/avx512/kernel4.hpp @@ -0,0 +1,207 @@ +// (C) 2018 ETH Zurich, ITP, Thomas Häner and Damian Steiger + +template +inline void kernel_core(V& psi, std::size_t I, std::size_t d0, std::size_t d1, std::size_t d2, std::size_t d3, M const& m, M const& mt) +{ + __m512d v[1]; + + v[0] = load1x4(&psi[I]); + + __m512d tmp[4] = {_mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd()}; + + tmp[0] = fma(v[0], m[0], mt[0], tmp[0]); + tmp[1] = fma(v[0], m[1], mt[1], tmp[1]); + tmp[2] = fma(v[0], m[2], mt[2], tmp[2]); + tmp[3] = fma(v[0], m[3], mt[3], tmp[3]); + + v[0] = load1x4(&psi[I + d0]); + + tmp[0] = fma(v[0], m[4], mt[4], tmp[0]); + tmp[1] = fma(v[0], m[5], mt[5], tmp[1]); + tmp[2] = fma(v[0], m[6], mt[6], tmp[2]); + tmp[3] = fma(v[0], m[7], mt[7], tmp[3]); + + v[0] = load1x4(&psi[I + d1]); + + tmp[0] = fma(v[0], m[8], mt[8], tmp[0]); + tmp[1] = fma(v[0], m[9], mt[9], tmp[1]); + tmp[2] = fma(v[0], m[10], mt[10], tmp[2]); + tmp[3] = fma(v[0], m[11], mt[11], tmp[3]); + + v[0] = load1x4(&psi[I + d0 + d1]); + + tmp[0] = fma(v[0], m[12], mt[12], tmp[0]); + tmp[1] = fma(v[0], m[13], mt[13], tmp[1]); + tmp[2] = fma(v[0], m[14], mt[14], tmp[2]); + tmp[3] = fma(v[0], m[15], mt[15], tmp[3]); + + v[0] = load1x4(&psi[I + d2]); + + tmp[0] = fma(v[0], m[16], mt[16], tmp[0]); + tmp[1] = fma(v[0], m[17], mt[17], tmp[1]); + tmp[2] = fma(v[0], m[18], mt[18], tmp[2]); + tmp[3] = fma(v[0], m[19], mt[19], tmp[3]); + + v[0] = load1x4(&psi[I + d0 + d2]); + + tmp[0] = fma(v[0], m[20], mt[20], tmp[0]); + tmp[1] = fma(v[0], m[21], mt[21], tmp[1]); + tmp[2] = fma(v[0], m[22], mt[22], tmp[2]); + tmp[3] = fma(v[0], m[23], mt[23], tmp[3]); + + v[0] = load1x4(&psi[I + d1 + d2]); + + tmp[0] = fma(v[0], m[24], mt[24], tmp[0]); + tmp[1] = fma(v[0], m[25], mt[25], tmp[1]); + tmp[2] = fma(v[0], m[26], mt[26], tmp[2]); + tmp[3] = fma(v[0], m[27], mt[27], tmp[3]); + + v[0] = load1x4(&psi[I + d0 + d1 + d2]); + + tmp[0] = fma(v[0], m[28], mt[28], tmp[0]); + tmp[1] = fma(v[0], m[29], mt[29], tmp[1]); + tmp[2] = fma(v[0], m[30], mt[30], tmp[2]); + tmp[3] = fma(v[0], m[31], mt[31], tmp[3]); + + v[0] = load1x4(&psi[I + d3]); + + tmp[0] = fma(v[0], m[32], mt[32], tmp[0]); + tmp[1] = fma(v[0], m[33], mt[33], tmp[1]); + tmp[2] = fma(v[0], m[34], mt[34], tmp[2]); + tmp[3] = fma(v[0], m[35], mt[35], tmp[3]); + + v[0] = load1x4(&psi[I + d0 + d3]); + + tmp[0] = fma(v[0], m[36], mt[36], tmp[0]); + tmp[1] = fma(v[0], m[37], mt[37], tmp[1]); + tmp[2] = fma(v[0], m[38], mt[38], tmp[2]); + tmp[3] = fma(v[0], m[39], mt[39], tmp[3]); + + v[0] = load1x4(&psi[I + d1 + d3]); + + tmp[0] = fma(v[0], m[40], mt[40], tmp[0]); + tmp[1] = fma(v[0], m[41], mt[41], tmp[1]); + tmp[2] = fma(v[0], m[42], mt[42], tmp[2]); + tmp[3] = fma(v[0], m[43], mt[43], tmp[3]); + + v[0] = load1x4(&psi[I + d0 + d1 + d3]); + + tmp[0] = fma(v[0], m[44], mt[44], tmp[0]); + tmp[1] = fma(v[0], m[45], mt[45], tmp[1]); + tmp[2] = fma(v[0], m[46], mt[46], tmp[2]); + tmp[3] = fma(v[0], m[47], mt[47], tmp[3]); + + v[0] = load1x4(&psi[I + d2 + d3]); + + tmp[0] = fma(v[0], m[48], mt[48], tmp[0]); + tmp[1] = fma(v[0], m[49], mt[49], tmp[1]); + tmp[2] = fma(v[0], m[50], mt[50], tmp[2]); + tmp[3] = fma(v[0], m[51], mt[51], tmp[3]); + + v[0] = load1x4(&psi[I + d0 + d2 + d3]); + + tmp[0] = fma(v[0], m[52], mt[52], tmp[0]); + tmp[1] = fma(v[0], m[53], mt[53], tmp[1]); + tmp[2] = fma(v[0], m[54], mt[54], tmp[2]); + tmp[3] = fma(v[0], m[55], mt[55], tmp[3]); + + v[0] = load1x4(&psi[I + d1 + d2 + d3]); + + tmp[0] = fma(v[0], m[56], mt[56], tmp[0]); + tmp[1] = fma(v[0], m[57], mt[57], tmp[1]); + tmp[2] = fma(v[0], m[58], mt[58], tmp[2]); + tmp[3] = fma(v[0], m[59], mt[59], tmp[3]); + + v[0] = load1x4(&psi[I + d0 + d1 + d2 + d3]); + + tmp[0] = fma(v[0], m[60], mt[60], tmp[0]); + tmp[1] = fma(v[0], m[61], mt[61], tmp[1]); + tmp[2] = fma(v[0], m[62], mt[62], tmp[2]); + tmp[3] = fma(v[0], m[63], mt[63], tmp[3]); + store((double*)&psi[I + d0 + d1], (double*)&psi[I + d1], (double*)&psi[I + d0], (double*)&psi[I], tmp[0]); + store((double*)&psi[I + d0 + d1 + d2], (double*)&psi[I + d1 + d2], (double*)&psi[I + d0 + d2], (double*)&psi[I + d2], tmp[1]); + store((double*)&psi[I + d0 + d1 + d3], (double*)&psi[I + d1 + d3], (double*)&psi[I + d0 + d3], (double*)&psi[I + d3], tmp[2]); + store((double*)&psi[I + d0 + d1 + d2 + d3], (double*)&psi[I + d1 + d2 + d3], (double*)&psi[I + d0 + d2 + d3], (double*)&psi[I + d2 + d3], tmp[3]); + +} + +// bit indices id[.] are given from high to low (e.g. control first for CNOT) +template +void kernel(V& psi, unsigned id3, unsigned id2, unsigned id1, unsigned id0, M const& matrix, std::size_t ctrlmask) +{ + std::size_t n = psi.size(); + std::size_t d0 = 1ULL << id0; + std::size_t d1 = 1ULL << id1; + std::size_t d2 = 1ULL << id2; + std::size_t d3 = 1ULL << id3; + auto m = matrix; + std::size_t dsorted[] = {d0, d1, d2, d3}; + permute_qubits_and_matrix(dsorted, 4, m); + + __m512d mm[64]; + for (unsigned b = 0; b < 16; ++b){ + for (unsigned r = 0; r < 4; ++r){ + for (unsigned c = 0; c < 1; ++c){ + mm[b*4+r*1+c] = loada(&m[4*r+0][c+b*1], &m[4*r+1][c+b*1], &m[4*r+2][c+b*1], &m[4*r+3][c+b*1]); + } + } + } + + __m512d mmt[64]; + for (unsigned b = 0; b < 16; ++b){ + for (unsigned r = 0; r < 4; ++r){ + for (unsigned c = 0; c < 1; ++c){ + mmt[b*4+r*1+c] = loadbm(&m[4*r+0][c+b*1], &m[4*r+1][c+b*1], &m[4*r+2][c+b*1], &m[4*r+3][c+b*1]); + } + } + } + + +#ifndef _MSC_VER + if (ctrlmask == 0){ + #pragma omp parallel for collapse(LOOP_COLLAPSE4) schedule(static) proc_bind(spread) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ + for (std::size_t i3 = 0; i3 < dsorted[2]; i3 += 2 * dsorted[3]){ + for (std::size_t i4 = 0; i4 < dsorted[3]; ++i4){ + kernel_core(psi, i0 + i1 + i2 + i3 + i4, dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } + } + } + } + } + } + else{ + #pragma omp parallel for collapse(LOOP_COLLAPSE4) schedule(static) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ + for (std::size_t i3 = 0; i3 < dsorted[2]; i3 += 2 * dsorted[3]){ + for (std::size_t i4 = 0; i4 < dsorted[3]; ++i4){ + if (((i0 + i1 + i2 + i3 + i4)&ctrlmask) == ctrlmask) + kernel_core(psi, i0 + i1 + i2 + i3 + i4, dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } + } + } + } + } + } +#else + std::intptr_t zero = 0; + std::intptr_t dmask = dsorted[0] + dsorted[1] + dsorted[2] + dsorted[3]; + + if (ctrlmask == 0){ + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & dmask) == zero) + kernel_core(psi, i, dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } else { + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & ctrlmask) == ctrlmask && (i & dmask) == zero) + kernel_core(psi, i, dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } +#endif +} + diff --git a/src/Simulation/Native/src/external/avx512/kernel5.hpp b/src/Simulation/Native/src/external/avx512/kernel5.hpp new file mode 100644 index 00000000000..ec1cdb918e6 --- /dev/null +++ b/src/Simulation/Native/src/external/avx512/kernel5.hpp @@ -0,0 +1,296 @@ +// (C) 2018 ETH Zurich, ITP, Thomas Häner and Damian Steiger + +template +inline void kernel_core(V& psi, std::size_t I, std::size_t d0, std::size_t d1, std::size_t d2, std::size_t d3, std::size_t d4, M const& m, M const& mt) +{ + __m512d v[2]; + + v[0] = load1x4(&psi[I]); + v[1] = load1x4(&psi[I + d0]); + + __m512d tmp[8] = {_mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd()}; + + tmp[0] = fma(v[0], m[0], mt[0], fma(v[1], m[1], mt[1], tmp[0])); + tmp[1] = fma(v[0], m[2], mt[2], fma(v[1], m[3], mt[3], tmp[1])); + tmp[2] = fma(v[0], m[4], mt[4], fma(v[1], m[5], mt[5], tmp[2])); + tmp[3] = fma(v[0], m[6], mt[6], fma(v[1], m[7], mt[7], tmp[3])); + tmp[4] = fma(v[0], m[8], mt[8], fma(v[1], m[9], mt[9], tmp[4])); + tmp[5] = fma(v[0], m[10], mt[10], fma(v[1], m[11], mt[11], tmp[5])); + tmp[6] = fma(v[0], m[12], mt[12], fma(v[1], m[13], mt[13], tmp[6])); + tmp[7] = fma(v[0], m[14], mt[14], fma(v[1], m[15], mt[15], tmp[7])); + + v[0] = load1x4(&psi[I + d1]); + v[1] = load1x4(&psi[I + d0 + d1]); + + tmp[0] = fma(v[0], m[16], mt[16], fma(v[1], m[17], mt[17], tmp[0])); + tmp[1] = fma(v[0], m[18], mt[18], fma(v[1], m[19], mt[19], tmp[1])); + tmp[2] = fma(v[0], m[20], mt[20], fma(v[1], m[21], mt[21], tmp[2])); + tmp[3] = fma(v[0], m[22], mt[22], fma(v[1], m[23], mt[23], tmp[3])); + tmp[4] = fma(v[0], m[24], mt[24], fma(v[1], m[25], mt[25], tmp[4])); + tmp[5] = fma(v[0], m[26], mt[26], fma(v[1], m[27], mt[27], tmp[5])); + tmp[6] = fma(v[0], m[28], mt[28], fma(v[1], m[29], mt[29], tmp[6])); + tmp[7] = fma(v[0], m[30], mt[30], fma(v[1], m[31], mt[31], tmp[7])); + + v[0] = load1x4(&psi[I + d2]); + v[1] = load1x4(&psi[I + d0 + d2]); + + tmp[0] = fma(v[0], m[32], mt[32], fma(v[1], m[33], mt[33], tmp[0])); + tmp[1] = fma(v[0], m[34], mt[34], fma(v[1], m[35], mt[35], tmp[1])); + tmp[2] = fma(v[0], m[36], mt[36], fma(v[1], m[37], mt[37], tmp[2])); + tmp[3] = fma(v[0], m[38], mt[38], fma(v[1], m[39], mt[39], tmp[3])); + tmp[4] = fma(v[0], m[40], mt[40], fma(v[1], m[41], mt[41], tmp[4])); + tmp[5] = fma(v[0], m[42], mt[42], fma(v[1], m[43], mt[43], tmp[5])); + tmp[6] = fma(v[0], m[44], mt[44], fma(v[1], m[45], mt[45], tmp[6])); + tmp[7] = fma(v[0], m[46], mt[46], fma(v[1], m[47], mt[47], tmp[7])); + + v[0] = load1x4(&psi[I + d1 + d2]); + v[1] = load1x4(&psi[I + d0 + d1 + d2]); + + tmp[0] = fma(v[0], m[48], mt[48], fma(v[1], m[49], mt[49], tmp[0])); + tmp[1] = fma(v[0], m[50], mt[50], fma(v[1], m[51], mt[51], tmp[1])); + tmp[2] = fma(v[0], m[52], mt[52], fma(v[1], m[53], mt[53], tmp[2])); + tmp[3] = fma(v[0], m[54], mt[54], fma(v[1], m[55], mt[55], tmp[3])); + tmp[4] = fma(v[0], m[56], mt[56], fma(v[1], m[57], mt[57], tmp[4])); + tmp[5] = fma(v[0], m[58], mt[58], fma(v[1], m[59], mt[59], tmp[5])); + tmp[6] = fma(v[0], m[60], mt[60], fma(v[1], m[61], mt[61], tmp[6])); + tmp[7] = fma(v[0], m[62], mt[62], fma(v[1], m[63], mt[63], tmp[7])); + + v[0] = load1x4(&psi[I + d3]); + v[1] = load1x4(&psi[I + d0 + d3]); + + tmp[0] = fma(v[0], m[64], mt[64], fma(v[1], m[65], mt[65], tmp[0])); + tmp[1] = fma(v[0], m[66], mt[66], fma(v[1], m[67], mt[67], tmp[1])); + tmp[2] = fma(v[0], m[68], mt[68], fma(v[1], m[69], mt[69], tmp[2])); + tmp[3] = fma(v[0], m[70], mt[70], fma(v[1], m[71], mt[71], tmp[3])); + tmp[4] = fma(v[0], m[72], mt[72], fma(v[1], m[73], mt[73], tmp[4])); + tmp[5] = fma(v[0], m[74], mt[74], fma(v[1], m[75], mt[75], tmp[5])); + tmp[6] = fma(v[0], m[76], mt[76], fma(v[1], m[77], mt[77], tmp[6])); + tmp[7] = fma(v[0], m[78], mt[78], fma(v[1], m[79], mt[79], tmp[7])); + + v[0] = load1x4(&psi[I + d1 + d3]); + v[1] = load1x4(&psi[I + d0 + d1 + d3]); + + tmp[0] = fma(v[0], m[80], mt[80], fma(v[1], m[81], mt[81], tmp[0])); + tmp[1] = fma(v[0], m[82], mt[82], fma(v[1], m[83], mt[83], tmp[1])); + tmp[2] = fma(v[0], m[84], mt[84], fma(v[1], m[85], mt[85], tmp[2])); + tmp[3] = fma(v[0], m[86], mt[86], fma(v[1], m[87], mt[87], tmp[3])); + tmp[4] = fma(v[0], m[88], mt[88], fma(v[1], m[89], mt[89], tmp[4])); + tmp[5] = fma(v[0], m[90], mt[90], fma(v[1], m[91], mt[91], tmp[5])); + tmp[6] = fma(v[0], m[92], mt[92], fma(v[1], m[93], mt[93], tmp[6])); + tmp[7] = fma(v[0], m[94], mt[94], fma(v[1], m[95], mt[95], tmp[7])); + + v[0] = load1x4(&psi[I + d2 + d3]); + v[1] = load1x4(&psi[I + d0 + d2 + d3]); + + tmp[0] = fma(v[0], m[96], mt[96], fma(v[1], m[97], mt[97], tmp[0])); + tmp[1] = fma(v[0], m[98], mt[98], fma(v[1], m[99], mt[99], tmp[1])); + tmp[2] = fma(v[0], m[100], mt[100], fma(v[1], m[101], mt[101], tmp[2])); + tmp[3] = fma(v[0], m[102], mt[102], fma(v[1], m[103], mt[103], tmp[3])); + tmp[4] = fma(v[0], m[104], mt[104], fma(v[1], m[105], mt[105], tmp[4])); + tmp[5] = fma(v[0], m[106], mt[106], fma(v[1], m[107], mt[107], tmp[5])); + tmp[6] = fma(v[0], m[108], mt[108], fma(v[1], m[109], mt[109], tmp[6])); + tmp[7] = fma(v[0], m[110], mt[110], fma(v[1], m[111], mt[111], tmp[7])); + + v[0] = load1x4(&psi[I + d1 + d2 + d3]); + v[1] = load1x4(&psi[I + d0 + d1 + d2 + d3]); + + tmp[0] = fma(v[0], m[112], mt[112], fma(v[1], m[113], mt[113], tmp[0])); + tmp[1] = fma(v[0], m[114], mt[114], fma(v[1], m[115], mt[115], tmp[1])); + tmp[2] = fma(v[0], m[116], mt[116], fma(v[1], m[117], mt[117], tmp[2])); + tmp[3] = fma(v[0], m[118], mt[118], fma(v[1], m[119], mt[119], tmp[3])); + tmp[4] = fma(v[0], m[120], mt[120], fma(v[1], m[121], mt[121], tmp[4])); + tmp[5] = fma(v[0], m[122], mt[122], fma(v[1], m[123], mt[123], tmp[5])); + tmp[6] = fma(v[0], m[124], mt[124], fma(v[1], m[125], mt[125], tmp[6])); + tmp[7] = fma(v[0], m[126], mt[126], fma(v[1], m[127], mt[127], tmp[7])); + + v[0] = load1x4(&psi[I + d4]); + v[1] = load1x4(&psi[I + d0 + d4]); + + tmp[0] = fma(v[0], m[128], mt[128], fma(v[1], m[129], mt[129], tmp[0])); + tmp[1] = fma(v[0], m[130], mt[130], fma(v[1], m[131], mt[131], tmp[1])); + tmp[2] = fma(v[0], m[132], mt[132], fma(v[1], m[133], mt[133], tmp[2])); + tmp[3] = fma(v[0], m[134], mt[134], fma(v[1], m[135], mt[135], tmp[3])); + tmp[4] = fma(v[0], m[136], mt[136], fma(v[1], m[137], mt[137], tmp[4])); + tmp[5] = fma(v[0], m[138], mt[138], fma(v[1], m[139], mt[139], tmp[5])); + tmp[6] = fma(v[0], m[140], mt[140], fma(v[1], m[141], mt[141], tmp[6])); + tmp[7] = fma(v[0], m[142], mt[142], fma(v[1], m[143], mt[143], tmp[7])); + + v[0] = load1x4(&psi[I + d1 + d4]); + v[1] = load1x4(&psi[I + d0 + d1 + d4]); + + tmp[0] = fma(v[0], m[144], mt[144], fma(v[1], m[145], mt[145], tmp[0])); + tmp[1] = fma(v[0], m[146], mt[146], fma(v[1], m[147], mt[147], tmp[1])); + tmp[2] = fma(v[0], m[148], mt[148], fma(v[1], m[149], mt[149], tmp[2])); + tmp[3] = fma(v[0], m[150], mt[150], fma(v[1], m[151], mt[151], tmp[3])); + tmp[4] = fma(v[0], m[152], mt[152], fma(v[1], m[153], mt[153], tmp[4])); + tmp[5] = fma(v[0], m[154], mt[154], fma(v[1], m[155], mt[155], tmp[5])); + tmp[6] = fma(v[0], m[156], mt[156], fma(v[1], m[157], mt[157], tmp[6])); + tmp[7] = fma(v[0], m[158], mt[158], fma(v[1], m[159], mt[159], tmp[7])); + + v[0] = load1x4(&psi[I + d2 + d4]); + v[1] = load1x4(&psi[I + d0 + d2 + d4]); + + tmp[0] = fma(v[0], m[160], mt[160], fma(v[1], m[161], mt[161], tmp[0])); + tmp[1] = fma(v[0], m[162], mt[162], fma(v[1], m[163], mt[163], tmp[1])); + tmp[2] = fma(v[0], m[164], mt[164], fma(v[1], m[165], mt[165], tmp[2])); + tmp[3] = fma(v[0], m[166], mt[166], fma(v[1], m[167], mt[167], tmp[3])); + tmp[4] = fma(v[0], m[168], mt[168], fma(v[1], m[169], mt[169], tmp[4])); + tmp[5] = fma(v[0], m[170], mt[170], fma(v[1], m[171], mt[171], tmp[5])); + tmp[6] = fma(v[0], m[172], mt[172], fma(v[1], m[173], mt[173], tmp[6])); + tmp[7] = fma(v[0], m[174], mt[174], fma(v[1], m[175], mt[175], tmp[7])); + + v[0] = load1x4(&psi[I + d1 + d2 + d4]); + v[1] = load1x4(&psi[I + d0 + d1 + d2 + d4]); + + tmp[0] = fma(v[0], m[176], mt[176], fma(v[1], m[177], mt[177], tmp[0])); + tmp[1] = fma(v[0], m[178], mt[178], fma(v[1], m[179], mt[179], tmp[1])); + tmp[2] = fma(v[0], m[180], mt[180], fma(v[1], m[181], mt[181], tmp[2])); + tmp[3] = fma(v[0], m[182], mt[182], fma(v[1], m[183], mt[183], tmp[3])); + tmp[4] = fma(v[0], m[184], mt[184], fma(v[1], m[185], mt[185], tmp[4])); + tmp[5] = fma(v[0], m[186], mt[186], fma(v[1], m[187], mt[187], tmp[5])); + tmp[6] = fma(v[0], m[188], mt[188], fma(v[1], m[189], mt[189], tmp[6])); + tmp[7] = fma(v[0], m[190], mt[190], fma(v[1], m[191], mt[191], tmp[7])); + + v[0] = load1x4(&psi[I + d3 + d4]); + v[1] = load1x4(&psi[I + d0 + d3 + d4]); + + tmp[0] = fma(v[0], m[192], mt[192], fma(v[1], m[193], mt[193], tmp[0])); + tmp[1] = fma(v[0], m[194], mt[194], fma(v[1], m[195], mt[195], tmp[1])); + tmp[2] = fma(v[0], m[196], mt[196], fma(v[1], m[197], mt[197], tmp[2])); + tmp[3] = fma(v[0], m[198], mt[198], fma(v[1], m[199], mt[199], tmp[3])); + tmp[4] = fma(v[0], m[200], mt[200], fma(v[1], m[201], mt[201], tmp[4])); + tmp[5] = fma(v[0], m[202], mt[202], fma(v[1], m[203], mt[203], tmp[5])); + tmp[6] = fma(v[0], m[204], mt[204], fma(v[1], m[205], mt[205], tmp[6])); + tmp[7] = fma(v[0], m[206], mt[206], fma(v[1], m[207], mt[207], tmp[7])); + + v[0] = load1x4(&psi[I + d1 + d3 + d4]); + v[1] = load1x4(&psi[I + d0 + d1 + d3 + d4]); + + tmp[0] = fma(v[0], m[208], mt[208], fma(v[1], m[209], mt[209], tmp[0])); + tmp[1] = fma(v[0], m[210], mt[210], fma(v[1], m[211], mt[211], tmp[1])); + tmp[2] = fma(v[0], m[212], mt[212], fma(v[1], m[213], mt[213], tmp[2])); + tmp[3] = fma(v[0], m[214], mt[214], fma(v[1], m[215], mt[215], tmp[3])); + tmp[4] = fma(v[0], m[216], mt[216], fma(v[1], m[217], mt[217], tmp[4])); + tmp[5] = fma(v[0], m[218], mt[218], fma(v[1], m[219], mt[219], tmp[5])); + tmp[6] = fma(v[0], m[220], mt[220], fma(v[1], m[221], mt[221], tmp[6])); + tmp[7] = fma(v[0], m[222], mt[222], fma(v[1], m[223], mt[223], tmp[7])); + + v[0] = load1x4(&psi[I + d2 + d3 + d4]); + v[1] = load1x4(&psi[I + d0 + d2 + d3 + d4]); + + tmp[0] = fma(v[0], m[224], mt[224], fma(v[1], m[225], mt[225], tmp[0])); + tmp[1] = fma(v[0], m[226], mt[226], fma(v[1], m[227], mt[227], tmp[1])); + tmp[2] = fma(v[0], m[228], mt[228], fma(v[1], m[229], mt[229], tmp[2])); + tmp[3] = fma(v[0], m[230], mt[230], fma(v[1], m[231], mt[231], tmp[3])); + tmp[4] = fma(v[0], m[232], mt[232], fma(v[1], m[233], mt[233], tmp[4])); + tmp[5] = fma(v[0], m[234], mt[234], fma(v[1], m[235], mt[235], tmp[5])); + tmp[6] = fma(v[0], m[236], mt[236], fma(v[1], m[237], mt[237], tmp[6])); + tmp[7] = fma(v[0], m[238], mt[238], fma(v[1], m[239], mt[239], tmp[7])); + + v[0] = load1x4(&psi[I + d1 + d2 + d3 + d4]); + v[1] = load1x4(&psi[I + d0 + d1 + d2 + d3 + d4]); + + tmp[0] = fma(v[0], m[240], mt[240], fma(v[1], m[241], mt[241], tmp[0])); + tmp[1] = fma(v[0], m[242], mt[242], fma(v[1], m[243], mt[243], tmp[1])); + tmp[2] = fma(v[0], m[244], mt[244], fma(v[1], m[245], mt[245], tmp[2])); + tmp[3] = fma(v[0], m[246], mt[246], fma(v[1], m[247], mt[247], tmp[3])); + store((double*)&psi[I + d0 + d1], (double*)&psi[I + d1], (double*)&psi[I + d0], (double*)&psi[I], tmp[0]); + store((double*)&psi[I + d0 + d1 + d2], (double*)&psi[I + d1 + d2], (double*)&psi[I + d0 + d2], (double*)&psi[I + d2], tmp[1]); + store((double*)&psi[I + d0 + d1 + d3], (double*)&psi[I + d1 + d3], (double*)&psi[I + d0 + d3], (double*)&psi[I + d3], tmp[2]); + store((double*)&psi[I + d0 + d1 + d2 + d3], (double*)&psi[I + d1 + d2 + d3], (double*)&psi[I + d0 + d2 + d3], (double*)&psi[I + d2 + d3], tmp[3]); + tmp[4] = fma(v[0], m[248], mt[248], fma(v[1], m[249], mt[249], tmp[4])); + tmp[5] = fma(v[0], m[250], mt[250], fma(v[1], m[251], mt[251], tmp[5])); + tmp[6] = fma(v[0], m[252], mt[252], fma(v[1], m[253], mt[253], tmp[6])); + tmp[7] = fma(v[0], m[254], mt[254], fma(v[1], m[255], mt[255], tmp[7])); + store((double*)&psi[I + d0 + d1 + d4], (double*)&psi[I + d1 + d4], (double*)&psi[I + d0 + d4], (double*)&psi[I + d4], tmp[4]); + store((double*)&psi[I + d0 + d1 + d2 + d4], (double*)&psi[I + d1 + d2 + d4], (double*)&psi[I + d0 + d2 + d4], (double*)&psi[I + d2 + d4], tmp[5]); + store((double*)&psi[I + d0 + d1 + d3 + d4], (double*)&psi[I + d1 + d3 + d4], (double*)&psi[I + d0 + d3 + d4], (double*)&psi[I + d3 + d4], tmp[6]); + store((double*)&psi[I + d0 + d1 + d2 + d3 + d4], (double*)&psi[I + d1 + d2 + d3 + d4], (double*)&psi[I + d0 + d2 + d3 + d4], (double*)&psi[I + d2 + d3 + d4], tmp[7]); + +} + +// bit indices id[.] are given from high to low (e.g. control first for CNOT) +template +void kernel(V& psi, unsigned id4, unsigned id3, unsigned id2, unsigned id1, unsigned id0, M const& matrix, std::size_t ctrlmask) +{ + std::size_t n = psi.size(); + std::size_t d0 = 1ULL << id0; + std::size_t d1 = 1ULL << id1; + std::size_t d2 = 1ULL << id2; + std::size_t d3 = 1ULL << id3; + std::size_t d4 = 1ULL << id4; + auto m = matrix; + std::size_t dsorted[] = {d0, d1, d2, d3, d4}; + permute_qubits_and_matrix(dsorted, 5, m); + + __m512d mm[256]; + for (unsigned b = 0; b < 16; ++b){ + for (unsigned r = 0; r < 8; ++r){ + for (unsigned c = 0; c < 2; ++c){ + mm[b*16+r*2+c] = loada(&m[4*r+0][c+b*2], &m[4*r+1][c+b*2], &m[4*r+2][c+b*2], &m[4*r+3][c+b*2]); + } + } + } + + __m512d mmt[256]; + for (unsigned b = 0; b < 16; ++b){ + for (unsigned r = 0; r < 8; ++r){ + for (unsigned c = 0; c < 2; ++c){ + mmt[b*16+r*2+c] = loadbm(&m[4*r+0][c+b*2], &m[4*r+1][c+b*2], &m[4*r+2][c+b*2], &m[4*r+3][c+b*2]); + } + } + } + + +#ifndef _MSC_VER + if (ctrlmask == 0){ + #pragma omp parallel for collapse(LOOP_COLLAPSE5) schedule(static) proc_bind(spread) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ + for (std::size_t i3 = 0; i3 < dsorted[2]; i3 += 2 * dsorted[3]){ + for (std::size_t i4 = 0; i4 < dsorted[3]; i4 += 2 * dsorted[4]){ + for (std::size_t i5 = 0; i5 < dsorted[4]; ++i5){ + kernel_core(psi, i0 + i1 + i2 + i3 + i4 + i5, dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } + } + } + } + } + } + } + else{ + #pragma omp parallel for collapse(LOOP_COLLAPSE5) schedule(static) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ + for (std::size_t i3 = 0; i3 < dsorted[2]; i3 += 2 * dsorted[3]){ + for (std::size_t i4 = 0; i4 < dsorted[3]; i4 += 2 * dsorted[4]){ + for (std::size_t i5 = 0; i5 < dsorted[4]; ++i5){ + if (((i0 + i1 + i2 + i3 + i4 + i5)&ctrlmask) == ctrlmask) + kernel_core(psi, i0 + i1 + i2 + i3 + i4 + i5, dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } + } + } + } + } + } + } +#else + std::intptr_t zero = 0; + std::intptr_t dmask = dsorted[0] + dsorted[1] + dsorted[2] + dsorted[3] + dsorted[4]; + + if (ctrlmask == 0){ + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & dmask) == zero) + kernel_core(psi, i, dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } else { + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & ctrlmask) == ctrlmask && (i & dmask) == zero) + kernel_core(psi, i, dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm, mmt); + } +#endif +} + diff --git a/src/Simulation/Native/src/external/avx512/kernel6.hpp b/src/Simulation/Native/src/external/avx512/kernel6.hpp new file mode 100644 index 00000000000..77a6a89465e --- /dev/null +++ b/src/Simulation/Native/src/external/avx512/kernel6.hpp @@ -0,0 +1,252 @@ +// (C) 2018 ETH Zurich, ITP, Thomas Häner and Damian Steiger + +template +inline void kernel_core(V& psi, std::size_t I, std::size_t d0, std::size_t d1, std::size_t d2, std::size_t d3, std::size_t d4, std::size_t d5, M const& m) +{ + __m512d v[4]; + + v[0] = load1x4(&psi[I]); + v[1] = load1x4(&psi[I + d0]); + v[2] = load1x4(&psi[I + d1]); + v[3] = load1x4(&psi[I + d0 + d1]); + + __m512d tmp[16] = {_mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd()}; + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[0 + i * 4 + 0], fma(v[1], m[0 + i * 4 + 1], fma(v[2], m[0 + i * 4 + 2], fma(v[3], m[0 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2]); + v[1] = load1x4(&psi[I + d0 + d2]); + v[2] = load1x4(&psi[I + d1 + d2]); + v[3] = load1x4(&psi[I + d0 + d1 + d2]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[64 + i * 4 + 0], fma(v[1], m[64 + i * 4 + 1], fma(v[2], m[64 + i * 4 + 2], fma(v[3], m[64 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3]); + v[1] = load1x4(&psi[I + d0 + d3]); + v[2] = load1x4(&psi[I + d1 + d3]); + v[3] = load1x4(&psi[I + d0 + d1 + d3]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[128 + i * 4 + 0], fma(v[1], m[128 + i * 4 + 1], fma(v[2], m[128 + i * 4 + 2], fma(v[3], m[128 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3]); + v[1] = load1x4(&psi[I + d0 + d2 + d3]); + v[2] = load1x4(&psi[I + d1 + d2 + d3]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[192 + i * 4 + 0], fma(v[1], m[192 + i * 4 + 1], fma(v[2], m[192 + i * 4 + 2], fma(v[3], m[192 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d4]); + v[1] = load1x4(&psi[I + d0 + d4]); + v[2] = load1x4(&psi[I + d1 + d4]); + v[3] = load1x4(&psi[I + d0 + d1 + d4]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[256 + i * 4 + 0], fma(v[1], m[256 + i * 4 + 1], fma(v[2], m[256 + i * 4 + 2], fma(v[3], m[256 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d4]); + v[1] = load1x4(&psi[I + d0 + d2 + d4]); + v[2] = load1x4(&psi[I + d1 + d2 + d4]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d4]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[320 + i * 4 + 0], fma(v[1], m[320 + i * 4 + 1], fma(v[2], m[320 + i * 4 + 2], fma(v[3], m[320 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3 + d4]); + v[1] = load1x4(&psi[I + d0 + d3 + d4]); + v[2] = load1x4(&psi[I + d1 + d3 + d4]); + v[3] = load1x4(&psi[I + d0 + d1 + d3 + d4]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[384 + i * 4 + 0], fma(v[1], m[384 + i * 4 + 1], fma(v[2], m[384 + i * 4 + 2], fma(v[3], m[384 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3 + d4]); + v[1] = load1x4(&psi[I + d0 + d2 + d3 + d4]); + v[2] = load1x4(&psi[I + d1 + d2 + d3 + d4]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3 + d4]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[448 + i * 4 + 0], fma(v[1], m[448 + i * 4 + 1], fma(v[2], m[448 + i * 4 + 2], fma(v[3], m[448 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d5]); + v[1] = load1x4(&psi[I + d0 + d5]); + v[2] = load1x4(&psi[I + d1 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d5]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[512 + i * 4 + 0], fma(v[1], m[512 + i * 4 + 1], fma(v[2], m[512 + i * 4 + 2], fma(v[3], m[512 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d5]); + v[1] = load1x4(&psi[I + d0 + d2 + d5]); + v[2] = load1x4(&psi[I + d1 + d2 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d5]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[576 + i * 4 + 0], fma(v[1], m[576 + i * 4 + 1], fma(v[2], m[576 + i * 4 + 2], fma(v[3], m[576 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3 + d5]); + v[1] = load1x4(&psi[I + d0 + d3 + d5]); + v[2] = load1x4(&psi[I + d1 + d3 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d3 + d5]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[640 + i * 4 + 0], fma(v[1], m[640 + i * 4 + 1], fma(v[2], m[640 + i * 4 + 2], fma(v[3], m[640 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3 + d5]); + v[1] = load1x4(&psi[I + d0 + d2 + d3 + d5]); + v[2] = load1x4(&psi[I + d1 + d2 + d3 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3 + d5]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[704 + i * 4 + 0], fma(v[1], m[704 + i * 4 + 1], fma(v[2], m[704 + i * 4 + 2], fma(v[3], m[704 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d4 + d5]); + v[1] = load1x4(&psi[I + d0 + d4 + d5]); + v[2] = load1x4(&psi[I + d1 + d4 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d4 + d5]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[768 + i * 4 + 0], fma(v[1], m[768 + i * 4 + 1], fma(v[2], m[768 + i * 4 + 2], fma(v[3], m[768 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d4 + d5]); + v[1] = load1x4(&psi[I + d0 + d2 + d4 + d5]); + v[2] = load1x4(&psi[I + d1 + d2 + d4 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d4 + d5]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[832 + i * 4 + 0], fma(v[1], m[832 + i * 4 + 1], fma(v[2], m[832 + i * 4 + 2], fma(v[3], m[832 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3 + d4 + d5]); + v[1] = load1x4(&psi[I + d0 + d3 + d4 + d5]); + v[2] = load1x4(&psi[I + d1 + d3 + d4 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d3 + d4 + d5]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[896 + i * 4 + 0], fma(v[1], m[896 + i * 4 + 1], fma(v[2], m[896 + i * 4 + 2], fma(v[3], m[896 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3 + d4 + d5]); + v[1] = load1x4(&psi[I + d0 + d2 + d3 + d4 + d5]); + v[2] = load1x4(&psi[I + d1 + d2 + d3 + d4 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3 + d4 + d5]); + for (unsigned i = 0; i < 16; ++i){ + tmp[i] = fma(v[0], m[960 + i * 4 + 0], fma(v[1], m[960 + i * 4 + 1], fma(v[2], m[960 + i * 4 + 2], fma(v[3], m[960 + i * 4 + 3], tmp[i])))); + } + + store((double*)&psi[I + d0 + d1], (double*)&psi[I + d1], (double*)&psi[I + d0], (double*)&psi[I], tmp[0]); + store((double*)&psi[I + d0 + d1 + d2], (double*)&psi[I + d1 + d2], (double*)&psi[I + d0 + d2], (double*)&psi[I + d2], tmp[1]); + store((double*)&psi[I + d0 + d1 + d3], (double*)&psi[I + d1 + d3], (double*)&psi[I + d0 + d3], (double*)&psi[I + d3], tmp[2]); + store((double*)&psi[I + d0 + d1 + d2 + d3], (double*)&psi[I + d1 + d2 + d3], (double*)&psi[I + d0 + d2 + d3], (double*)&psi[I + d2 + d3], tmp[3]); + store((double*)&psi[I + d0 + d1 + d4], (double*)&psi[I + d1 + d4], (double*)&psi[I + d0 + d4], (double*)&psi[I + d4], tmp[4]); + store((double*)&psi[I + d0 + d1 + d2 + d4], (double*)&psi[I + d1 + d2 + d4], (double*)&psi[I + d0 + d2 + d4], (double*)&psi[I + d2 + d4], tmp[5]); + store((double*)&psi[I + d0 + d1 + d3 + d4], (double*)&psi[I + d1 + d3 + d4], (double*)&psi[I + d0 + d3 + d4], (double*)&psi[I + d3 + d4], tmp[6]); + store((double*)&psi[I + d0 + d1 + d2 + d3 + d4], (double*)&psi[I + d1 + d2 + d3 + d4], (double*)&psi[I + d0 + d2 + d3 + d4], (double*)&psi[I + d2 + d3 + d4], tmp[7]); + store((double*)&psi[I + d0 + d1 + d5], (double*)&psi[I + d1 + d5], (double*)&psi[I + d0 + d5], (double*)&psi[I + d5], tmp[8]); + store((double*)&psi[I + d0 + d1 + d2 + d5], (double*)&psi[I + d1 + d2 + d5], (double*)&psi[I + d0 + d2 + d5], (double*)&psi[I + d2 + d5], tmp[9]); + store((double*)&psi[I + d0 + d1 + d3 + d5], (double*)&psi[I + d1 + d3 + d5], (double*)&psi[I + d0 + d3 + d5], (double*)&psi[I + d3 + d5], tmp[10]); + store((double*)&psi[I + d0 + d1 + d2 + d3 + d5], (double*)&psi[I + d1 + d2 + d3 + d5], (double*)&psi[I + d0 + d2 + d3 + d5], (double*)&psi[I + d2 + d3 + d5], tmp[11]); + store((double*)&psi[I + d0 + d1 + d4 + d5], (double*)&psi[I + d1 + d4 + d5], (double*)&psi[I + d0 + d4 + d5], (double*)&psi[I + d4 + d5], tmp[12]); + store((double*)&psi[I + d0 + d1 + d2 + d4 + d5], (double*)&psi[I + d1 + d2 + d4 + d5], (double*)&psi[I + d0 + d2 + d4 + d5], (double*)&psi[I + d2 + d4 + d5], tmp[13]); + store((double*)&psi[I + d0 + d1 + d3 + d4 + d5], (double*)&psi[I + d1 + d3 + d4 + d5], (double*)&psi[I + d0 + d3 + d4 + d5], (double*)&psi[I + d3 + d4 + d5], tmp[14]); + store((double*)&psi[I + d0 + d1 + d2 + d3 + d4 + d5], (double*)&psi[I + d1 + d2 + d3 + d4 + d5], (double*)&psi[I + d0 + d2 + d3 + d4 + d5], (double*)&psi[I + d2 + d3 + d4 + d5], tmp[15]); + +} + +// bit indices id[.] are given from high to low (e.g. control first for CNOT) +template +void kernel(V& psi, unsigned id5, unsigned id4, unsigned id3, unsigned id2, unsigned id1, unsigned id0, M const& matrix, std::size_t ctrlmask) +{ + std::size_t n = psi.size(); + std::size_t d0 = 1ULL << id0; + std::size_t d1 = 1ULL << id1; + std::size_t d2 = 1ULL << id2; + std::size_t d3 = 1ULL << id3; + std::size_t d4 = 1ULL << id4; + std::size_t d5 = 1ULL << id5; + auto m = matrix; + std::size_t dsorted[] = {d0, d1, d2, d3, d4, d5}; + permute_qubits_and_matrix(dsorted, 6, m); + + __m512d mm[1024]; + for (unsigned b = 0; b < 16; ++b){ + for (unsigned r = 0; r < 16; ++r){ + for (unsigned c = 0; c < 4; ++c){ + mm[b*64+r*4+c] = loadab(&m[4*r+0][c+b*4], &m[4*r+1][c+b*4], &m[4*r+2][c+b*4], &m[4*r+3][c+b*4]); + } + } + } + + +#ifndef _MSC_VER + if (ctrlmask == 0){ + #pragma omp parallel for collapse(LOOP_COLLAPSE6) schedule(static) proc_bind(spread) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ + for (std::size_t i3 = 0; i3 < dsorted[2]; i3 += 2 * dsorted[3]){ + for (std::size_t i4 = 0; i4 < dsorted[3]; i4 += 2 * dsorted[4]){ + for (std::size_t i5 = 0; i5 < dsorted[4]; i5 += 2 * dsorted[5]){ + for (std::size_t i6 = 0; i6 < dsorted[5]; ++i6){ + kernel_core(psi, i0 + i1 + i2 + i3 + i4 + i5 + i6, dsorted[5], dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm); + } + } + } + } + } + } + } + } + else{ + #pragma omp parallel for collapse(LOOP_COLLAPSE6) schedule(static) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ + for (std::size_t i3 = 0; i3 < dsorted[2]; i3 += 2 * dsorted[3]){ + for (std::size_t i4 = 0; i4 < dsorted[3]; i4 += 2 * dsorted[4]){ + for (std::size_t i5 = 0; i5 < dsorted[4]; i5 += 2 * dsorted[5]){ + for (std::size_t i6 = 0; i6 < dsorted[5]; ++i6){ + if (((i0 + i1 + i2 + i3 + i4 + i5 + i6)&ctrlmask) == ctrlmask) + kernel_core(psi, i0 + i1 + i2 + i3 + i4 + i5 + i6, dsorted[5], dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm); + } + } + } + } + } + } + } + } +#else + std::intptr_t zero = 0; + std::intptr_t dmask = dsorted[0] + dsorted[1] + dsorted[2] + dsorted[3] + dsorted[4] + dsorted[5]; + + if (ctrlmask == 0){ + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & dmask) == zero) + kernel_core(psi, i, dsorted[5], dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm); + } else { + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & ctrlmask) == ctrlmask && (i & dmask) == zero) + kernel_core(psi, i, dsorted[5], dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm); + } +#endif +} + diff --git a/src/Simulation/Native/src/external/avx512/kernel7.hpp b/src/Simulation/Native/src/external/avx512/kernel7.hpp new file mode 100644 index 00000000000..8e60b76cff2 --- /dev/null +++ b/src/Simulation/Native/src/external/avx512/kernel7.hpp @@ -0,0 +1,417 @@ +// (C) 2018 ETH Zurich, ITP, Thomas Häner and Damian Steiger + +template +inline void kernel_core(V& psi, std::size_t I, std::size_t d0, std::size_t d1, std::size_t d2, std::size_t d3, std::size_t d4, std::size_t d5, std::size_t d6, M const& m) +{ + __m512d v[4]; + + v[0] = load1x4(&psi[I]); + v[1] = load1x4(&psi[I + d0]); + v[2] = load1x4(&psi[I + d1]); + v[3] = load1x4(&psi[I + d0 + d1]); + + __m512d tmp[32] = {_mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd(), _mm512_setzero_pd()}; + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[0 + i * 4 + 0], fma(v[1], m[0 + i * 4 + 1], fma(v[2], m[0 + i * 4 + 2], fma(v[3], m[0 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2]); + v[1] = load1x4(&psi[I + d0 + d2]); + v[2] = load1x4(&psi[I + d1 + d2]); + v[3] = load1x4(&psi[I + d0 + d1 + d2]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[128 + i * 4 + 0], fma(v[1], m[128 + i * 4 + 1], fma(v[2], m[128 + i * 4 + 2], fma(v[3], m[128 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3]); + v[1] = load1x4(&psi[I + d0 + d3]); + v[2] = load1x4(&psi[I + d1 + d3]); + v[3] = load1x4(&psi[I + d0 + d1 + d3]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[256 + i * 4 + 0], fma(v[1], m[256 + i * 4 + 1], fma(v[2], m[256 + i * 4 + 2], fma(v[3], m[256 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3]); + v[1] = load1x4(&psi[I + d0 + d2 + d3]); + v[2] = load1x4(&psi[I + d1 + d2 + d3]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[384 + i * 4 + 0], fma(v[1], m[384 + i * 4 + 1], fma(v[2], m[384 + i * 4 + 2], fma(v[3], m[384 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d4]); + v[1] = load1x4(&psi[I + d0 + d4]); + v[2] = load1x4(&psi[I + d1 + d4]); + v[3] = load1x4(&psi[I + d0 + d1 + d4]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[512 + i * 4 + 0], fma(v[1], m[512 + i * 4 + 1], fma(v[2], m[512 + i * 4 + 2], fma(v[3], m[512 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d4]); + v[1] = load1x4(&psi[I + d0 + d2 + d4]); + v[2] = load1x4(&psi[I + d1 + d2 + d4]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d4]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[640 + i * 4 + 0], fma(v[1], m[640 + i * 4 + 1], fma(v[2], m[640 + i * 4 + 2], fma(v[3], m[640 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3 + d4]); + v[1] = load1x4(&psi[I + d0 + d3 + d4]); + v[2] = load1x4(&psi[I + d1 + d3 + d4]); + v[3] = load1x4(&psi[I + d0 + d1 + d3 + d4]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[768 + i * 4 + 0], fma(v[1], m[768 + i * 4 + 1], fma(v[2], m[768 + i * 4 + 2], fma(v[3], m[768 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3 + d4]); + v[1] = load1x4(&psi[I + d0 + d2 + d3 + d4]); + v[2] = load1x4(&psi[I + d1 + d2 + d3 + d4]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3 + d4]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[896 + i * 4 + 0], fma(v[1], m[896 + i * 4 + 1], fma(v[2], m[896 + i * 4 + 2], fma(v[3], m[896 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d5]); + v[1] = load1x4(&psi[I + d0 + d5]); + v[2] = load1x4(&psi[I + d1 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d5]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[1024 + i * 4 + 0], fma(v[1], m[1024 + i * 4 + 1], fma(v[2], m[1024 + i * 4 + 2], fma(v[3], m[1024 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d5]); + v[1] = load1x4(&psi[I + d0 + d2 + d5]); + v[2] = load1x4(&psi[I + d1 + d2 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d5]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[1152 + i * 4 + 0], fma(v[1], m[1152 + i * 4 + 1], fma(v[2], m[1152 + i * 4 + 2], fma(v[3], m[1152 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3 + d5]); + v[1] = load1x4(&psi[I + d0 + d3 + d5]); + v[2] = load1x4(&psi[I + d1 + d3 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d3 + d5]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[1280 + i * 4 + 0], fma(v[1], m[1280 + i * 4 + 1], fma(v[2], m[1280 + i * 4 + 2], fma(v[3], m[1280 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3 + d5]); + v[1] = load1x4(&psi[I + d0 + d2 + d3 + d5]); + v[2] = load1x4(&psi[I + d1 + d2 + d3 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3 + d5]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[1408 + i * 4 + 0], fma(v[1], m[1408 + i * 4 + 1], fma(v[2], m[1408 + i * 4 + 2], fma(v[3], m[1408 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d4 + d5]); + v[1] = load1x4(&psi[I + d0 + d4 + d5]); + v[2] = load1x4(&psi[I + d1 + d4 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d4 + d5]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[1536 + i * 4 + 0], fma(v[1], m[1536 + i * 4 + 1], fma(v[2], m[1536 + i * 4 + 2], fma(v[3], m[1536 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d4 + d5]); + v[1] = load1x4(&psi[I + d0 + d2 + d4 + d5]); + v[2] = load1x4(&psi[I + d1 + d2 + d4 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d4 + d5]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[1664 + i * 4 + 0], fma(v[1], m[1664 + i * 4 + 1], fma(v[2], m[1664 + i * 4 + 2], fma(v[3], m[1664 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3 + d4 + d5]); + v[1] = load1x4(&psi[I + d0 + d3 + d4 + d5]); + v[2] = load1x4(&psi[I + d1 + d3 + d4 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d3 + d4 + d5]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[1792 + i * 4 + 0], fma(v[1], m[1792 + i * 4 + 1], fma(v[2], m[1792 + i * 4 + 2], fma(v[3], m[1792 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3 + d4 + d5]); + v[1] = load1x4(&psi[I + d0 + d2 + d3 + d4 + d5]); + v[2] = load1x4(&psi[I + d1 + d2 + d3 + d4 + d5]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3 + d4 + d5]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[1920 + i * 4 + 0], fma(v[1], m[1920 + i * 4 + 1], fma(v[2], m[1920 + i * 4 + 2], fma(v[3], m[1920 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d6]); + v[1] = load1x4(&psi[I + d0 + d6]); + v[2] = load1x4(&psi[I + d1 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[2048 + i * 4 + 0], fma(v[1], m[2048 + i * 4 + 1], fma(v[2], m[2048 + i * 4 + 2], fma(v[3], m[2048 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d6]); + v[1] = load1x4(&psi[I + d0 + d2 + d6]); + v[2] = load1x4(&psi[I + d1 + d2 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[2176 + i * 4 + 0], fma(v[1], m[2176 + i * 4 + 1], fma(v[2], m[2176 + i * 4 + 2], fma(v[3], m[2176 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3 + d6]); + v[1] = load1x4(&psi[I + d0 + d3 + d6]); + v[2] = load1x4(&psi[I + d1 + d3 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d3 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[2304 + i * 4 + 0], fma(v[1], m[2304 + i * 4 + 1], fma(v[2], m[2304 + i * 4 + 2], fma(v[3], m[2304 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3 + d6]); + v[1] = load1x4(&psi[I + d0 + d2 + d3 + d6]); + v[2] = load1x4(&psi[I + d1 + d2 + d3 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[2432 + i * 4 + 0], fma(v[1], m[2432 + i * 4 + 1], fma(v[2], m[2432 + i * 4 + 2], fma(v[3], m[2432 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d4 + d6]); + v[1] = load1x4(&psi[I + d0 + d4 + d6]); + v[2] = load1x4(&psi[I + d1 + d4 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d4 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[2560 + i * 4 + 0], fma(v[1], m[2560 + i * 4 + 1], fma(v[2], m[2560 + i * 4 + 2], fma(v[3], m[2560 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d4 + d6]); + v[1] = load1x4(&psi[I + d0 + d2 + d4 + d6]); + v[2] = load1x4(&psi[I + d1 + d2 + d4 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d4 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[2688 + i * 4 + 0], fma(v[1], m[2688 + i * 4 + 1], fma(v[2], m[2688 + i * 4 + 2], fma(v[3], m[2688 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3 + d4 + d6]); + v[1] = load1x4(&psi[I + d0 + d3 + d4 + d6]); + v[2] = load1x4(&psi[I + d1 + d3 + d4 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d3 + d4 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[2816 + i * 4 + 0], fma(v[1], m[2816 + i * 4 + 1], fma(v[2], m[2816 + i * 4 + 2], fma(v[3], m[2816 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3 + d4 + d6]); + v[1] = load1x4(&psi[I + d0 + d2 + d3 + d4 + d6]); + v[2] = load1x4(&psi[I + d1 + d2 + d3 + d4 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3 + d4 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[2944 + i * 4 + 0], fma(v[1], m[2944 + i * 4 + 1], fma(v[2], m[2944 + i * 4 + 2], fma(v[3], m[2944 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d5 + d6]); + v[1] = load1x4(&psi[I + d0 + d5 + d6]); + v[2] = load1x4(&psi[I + d1 + d5 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d5 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[3072 + i * 4 + 0], fma(v[1], m[3072 + i * 4 + 1], fma(v[2], m[3072 + i * 4 + 2], fma(v[3], m[3072 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d5 + d6]); + v[1] = load1x4(&psi[I + d0 + d2 + d5 + d6]); + v[2] = load1x4(&psi[I + d1 + d2 + d5 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d5 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[3200 + i * 4 + 0], fma(v[1], m[3200 + i * 4 + 1], fma(v[2], m[3200 + i * 4 + 2], fma(v[3], m[3200 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3 + d5 + d6]); + v[1] = load1x4(&psi[I + d0 + d3 + d5 + d6]); + v[2] = load1x4(&psi[I + d1 + d3 + d5 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d3 + d5 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[3328 + i * 4 + 0], fma(v[1], m[3328 + i * 4 + 1], fma(v[2], m[3328 + i * 4 + 2], fma(v[3], m[3328 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3 + d5 + d6]); + v[1] = load1x4(&psi[I + d0 + d2 + d3 + d5 + d6]); + v[2] = load1x4(&psi[I + d1 + d2 + d3 + d5 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3 + d5 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[3456 + i * 4 + 0], fma(v[1], m[3456 + i * 4 + 1], fma(v[2], m[3456 + i * 4 + 2], fma(v[3], m[3456 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d4 + d5 + d6]); + v[1] = load1x4(&psi[I + d0 + d4 + d5 + d6]); + v[2] = load1x4(&psi[I + d1 + d4 + d5 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d4 + d5 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[3584 + i * 4 + 0], fma(v[1], m[3584 + i * 4 + 1], fma(v[2], m[3584 + i * 4 + 2], fma(v[3], m[3584 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d4 + d5 + d6]); + v[1] = load1x4(&psi[I + d0 + d2 + d4 + d5 + d6]); + v[2] = load1x4(&psi[I + d1 + d2 + d4 + d5 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d4 + d5 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[3712 + i * 4 + 0], fma(v[1], m[3712 + i * 4 + 1], fma(v[2], m[3712 + i * 4 + 2], fma(v[3], m[3712 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d3 + d4 + d5 + d6]); + v[1] = load1x4(&psi[I + d0 + d3 + d4 + d5 + d6]); + v[2] = load1x4(&psi[I + d1 + d3 + d4 + d5 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d3 + d4 + d5 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[3840 + i * 4 + 0], fma(v[1], m[3840 + i * 4 + 1], fma(v[2], m[3840 + i * 4 + 2], fma(v[3], m[3840 + i * 4 + 3], tmp[i])))); + } + + + v[0] = load1x4(&psi[I + d2 + d3 + d4 + d5 + d6]); + v[1] = load1x4(&psi[I + d0 + d2 + d3 + d4 + d5 + d6]); + v[2] = load1x4(&psi[I + d1 + d2 + d3 + d4 + d5 + d6]); + v[3] = load1x4(&psi[I + d0 + d1 + d2 + d3 + d4 + d5 + d6]); + for (unsigned i = 0; i < 32; ++i){ + tmp[i] = fma(v[0], m[3968 + i * 4 + 0], fma(v[1], m[3968 + i * 4 + 1], fma(v[2], m[3968 + i * 4 + 2], fma(v[3], m[3968 + i * 4 + 3], tmp[i])))); + } + + store((double*)&psi[I + d0 + d1], (double*)&psi[I + d1], (double*)&psi[I + d0], (double*)&psi[I], tmp[0]); + store((double*)&psi[I + d0 + d1 + d2], (double*)&psi[I + d1 + d2], (double*)&psi[I + d0 + d2], (double*)&psi[I + d2], tmp[1]); + store((double*)&psi[I + d0 + d1 + d3], (double*)&psi[I + d1 + d3], (double*)&psi[I + d0 + d3], (double*)&psi[I + d3], tmp[2]); + store((double*)&psi[I + d0 + d1 + d2 + d3], (double*)&psi[I + d1 + d2 + d3], (double*)&psi[I + d0 + d2 + d3], (double*)&psi[I + d2 + d3], tmp[3]); + store((double*)&psi[I + d0 + d1 + d4], (double*)&psi[I + d1 + d4], (double*)&psi[I + d0 + d4], (double*)&psi[I + d4], tmp[4]); + store((double*)&psi[I + d0 + d1 + d2 + d4], (double*)&psi[I + d1 + d2 + d4], (double*)&psi[I + d0 + d2 + d4], (double*)&psi[I + d2 + d4], tmp[5]); + store((double*)&psi[I + d0 + d1 + d3 + d4], (double*)&psi[I + d1 + d3 + d4], (double*)&psi[I + d0 + d3 + d4], (double*)&psi[I + d3 + d4], tmp[6]); + store((double*)&psi[I + d0 + d1 + d2 + d3 + d4], (double*)&psi[I + d1 + d2 + d3 + d4], (double*)&psi[I + d0 + d2 + d3 + d4], (double*)&psi[I + d2 + d3 + d4], tmp[7]); + store((double*)&psi[I + d0 + d1 + d5], (double*)&psi[I + d1 + d5], (double*)&psi[I + d0 + d5], (double*)&psi[I + d5], tmp[8]); + store((double*)&psi[I + d0 + d1 + d2 + d5], (double*)&psi[I + d1 + d2 + d5], (double*)&psi[I + d0 + d2 + d5], (double*)&psi[I + d2 + d5], tmp[9]); + store((double*)&psi[I + d0 + d1 + d3 + d5], (double*)&psi[I + d1 + d3 + d5], (double*)&psi[I + d0 + d3 + d5], (double*)&psi[I + d3 + d5], tmp[10]); + store((double*)&psi[I + d0 + d1 + d2 + d3 + d5], (double*)&psi[I + d1 + d2 + d3 + d5], (double*)&psi[I + d0 + d2 + d3 + d5], (double*)&psi[I + d2 + d3 + d5], tmp[11]); + store((double*)&psi[I + d0 + d1 + d4 + d5], (double*)&psi[I + d1 + d4 + d5], (double*)&psi[I + d0 + d4 + d5], (double*)&psi[I + d4 + d5], tmp[12]); + store((double*)&psi[I + d0 + d1 + d2 + d4 + d5], (double*)&psi[I + d1 + d2 + d4 + d5], (double*)&psi[I + d0 + d2 + d4 + d5], (double*)&psi[I + d2 + d4 + d5], tmp[13]); + store((double*)&psi[I + d0 + d1 + d3 + d4 + d5], (double*)&psi[I + d1 + d3 + d4 + d5], (double*)&psi[I + d0 + d3 + d4 + d5], (double*)&psi[I + d3 + d4 + d5], tmp[14]); + store((double*)&psi[I + d0 + d1 + d2 + d3 + d4 + d5], (double*)&psi[I + d1 + d2 + d3 + d4 + d5], (double*)&psi[I + d0 + d2 + d3 + d4 + d5], (double*)&psi[I + d2 + d3 + d4 + d5], tmp[15]); + store((double*)&psi[I + d0 + d1 + d6], (double*)&psi[I + d1 + d6], (double*)&psi[I + d0 + d6], (double*)&psi[I + d6], tmp[16]); + store((double*)&psi[I + d0 + d1 + d2 + d6], (double*)&psi[I + d1 + d2 + d6], (double*)&psi[I + d0 + d2 + d6], (double*)&psi[I + d2 + d6], tmp[17]); + store((double*)&psi[I + d0 + d1 + d3 + d6], (double*)&psi[I + d1 + d3 + d6], (double*)&psi[I + d0 + d3 + d6], (double*)&psi[I + d3 + d6], tmp[18]); + store((double*)&psi[I + d0 + d1 + d2 + d3 + d6], (double*)&psi[I + d1 + d2 + d3 + d6], (double*)&psi[I + d0 + d2 + d3 + d6], (double*)&psi[I + d2 + d3 + d6], tmp[19]); + store((double*)&psi[I + d0 + d1 + d4 + d6], (double*)&psi[I + d1 + d4 + d6], (double*)&psi[I + d0 + d4 + d6], (double*)&psi[I + d4 + d6], tmp[20]); + store((double*)&psi[I + d0 + d1 + d2 + d4 + d6], (double*)&psi[I + d1 + d2 + d4 + d6], (double*)&psi[I + d0 + d2 + d4 + d6], (double*)&psi[I + d2 + d4 + d6], tmp[21]); + store((double*)&psi[I + d0 + d1 + d3 + d4 + d6], (double*)&psi[I + d1 + d3 + d4 + d6], (double*)&psi[I + d0 + d3 + d4 + d6], (double*)&psi[I + d3 + d4 + d6], tmp[22]); + store((double*)&psi[I + d0 + d1 + d2 + d3 + d4 + d6], (double*)&psi[I + d1 + d2 + d3 + d4 + d6], (double*)&psi[I + d0 + d2 + d3 + d4 + d6], (double*)&psi[I + d2 + d3 + d4 + d6], tmp[23]); + store((double*)&psi[I + d0 + d1 + d5 + d6], (double*)&psi[I + d1 + d5 + d6], (double*)&psi[I + d0 + d5 + d6], (double*)&psi[I + d5 + d6], tmp[24]); + store((double*)&psi[I + d0 + d1 + d2 + d5 + d6], (double*)&psi[I + d1 + d2 + d5 + d6], (double*)&psi[I + d0 + d2 + d5 + d6], (double*)&psi[I + d2 + d5 + d6], tmp[25]); + store((double*)&psi[I + d0 + d1 + d3 + d5 + d6], (double*)&psi[I + d1 + d3 + d5 + d6], (double*)&psi[I + d0 + d3 + d5 + d6], (double*)&psi[I + d3 + d5 + d6], tmp[26]); + store((double*)&psi[I + d0 + d1 + d2 + d3 + d5 + d6], (double*)&psi[I + d1 + d2 + d3 + d5 + d6], (double*)&psi[I + d0 + d2 + d3 + d5 + d6], (double*)&psi[I + d2 + d3 + d5 + d6], tmp[27]); + store((double*)&psi[I + d0 + d1 + d4 + d5 + d6], (double*)&psi[I + d1 + d4 + d5 + d6], (double*)&psi[I + d0 + d4 + d5 + d6], (double*)&psi[I + d4 + d5 + d6], tmp[28]); + store((double*)&psi[I + d0 + d1 + d2 + d4 + d5 + d6], (double*)&psi[I + d1 + d2 + d4 + d5 + d6], (double*)&psi[I + d0 + d2 + d4 + d5 + d6], (double*)&psi[I + d2 + d4 + d5 + d6], tmp[29]); + store((double*)&psi[I + d0 + d1 + d3 + d4 + d5 + d6], (double*)&psi[I + d1 + d3 + d4 + d5 + d6], (double*)&psi[I + d0 + d3 + d4 + d5 + d6], (double*)&psi[I + d3 + d4 + d5 + d6], tmp[30]); + store((double*)&psi[I + d0 + d1 + d2 + d3 + d4 + d5 + d6], (double*)&psi[I + d1 + d2 + d3 + d4 + d5 + d6], (double*)&psi[I + d0 + d2 + d3 + d4 + d5 + d6], (double*)&psi[I + d2 + d3 + d4 + d5 + d6], tmp[31]); + +} + +// bit indices id[.] are given from high to low (e.g. control first for CNOT) +template +void kernel(V& psi, unsigned id6, unsigned id5, unsigned id4, unsigned id3, unsigned id2, unsigned id1, unsigned id0, M const& matrix, std::size_t ctrlmask) +{ + std::size_t n = psi.size(); + std::size_t d0 = 1ULL << id0; + std::size_t d1 = 1ULL << id1; + std::size_t d2 = 1ULL << id2; + std::size_t d3 = 1ULL << id3; + std::size_t d4 = 1ULL << id4; + std::size_t d5 = 1ULL << id5; + std::size_t d6 = 1ULL << id6; + auto m = matrix; + std::size_t dsorted[] = {d0, d1, d2, d3, d4, d5, d6}; + permute_qubits_and_matrix(dsorted, 7, m); + + __m512d mm[4096]; + for (unsigned b = 0; b < 32; ++b){ + for (unsigned r = 0; r < 32; ++r){ + for (unsigned c = 0; c < 4; ++c){ + mm[b*128+r*4+c] = loadab(&m[4*r+0][c+b*4], &m[4*r+1][c+b*4], &m[4*r+2][c+b*4], &m[4*r+3][c+b*4]); + } + } + } + + +#ifndef _MSC_VER + if (ctrlmask == 0){ + #pragma omp parallel for collapse(LOOP_COLLAPSE7) schedule(static) proc_bind(spread) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ + for (std::size_t i3 = 0; i3 < dsorted[2]; i3 += 2 * dsorted[3]){ + for (std::size_t i4 = 0; i4 < dsorted[3]; i4 += 2 * dsorted[4]){ + for (std::size_t i5 = 0; i5 < dsorted[4]; i5 += 2 * dsorted[5]){ + for (std::size_t i6 = 0; i6 < dsorted[5]; i6 += 2 * dsorted[6]){ + for (std::size_t i7 = 0; i7 < dsorted[6]; ++i7){ + kernel_core(psi, i0 + i1 + i2 + i3 + i4 + i5 + i6 + i7, dsorted[6], dsorted[5], dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm); + } + } + } + } + } + } + } + } + } + else{ + #pragma omp parallel for collapse(LOOP_COLLAPSE7) schedule(static) + for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ + for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ + for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ + for (std::size_t i3 = 0; i3 < dsorted[2]; i3 += 2 * dsorted[3]){ + for (std::size_t i4 = 0; i4 < dsorted[3]; i4 += 2 * dsorted[4]){ + for (std::size_t i5 = 0; i5 < dsorted[4]; i5 += 2 * dsorted[5]){ + for (std::size_t i6 = 0; i6 < dsorted[5]; i6 += 2 * dsorted[6]){ + for (std::size_t i7 = 0; i7 < dsorted[6]; ++i7){ + if (((i0 + i1 + i2 + i3 + i4 + i5 + i6 + i7)&ctrlmask) == ctrlmask) + kernel_core(psi, i0 + i1 + i2 + i3 + i4 + i5 + i6 + i7, dsorted[6], dsorted[5], dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm); + } + } + } + } + } + } + } + } + } +#else + std::intptr_t zero = 0; + std::intptr_t dmask = dsorted[0] + dsorted[1] + dsorted[2] + dsorted[3] + dsorted[4] + dsorted[5] + dsorted[6]; + + if (ctrlmask == 0){ + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & dmask) == zero) + kernel_core(psi, i, dsorted[6], dsorted[5], dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm); + } else { + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & ctrlmask) == ctrlmask && (i & dmask) == zero) + kernel_core(psi, i, dsorted[6], dsorted[5], dsorted[4], dsorted[3], dsorted[2], dsorted[1], dsorted[0], mm); + } +#endif +} + diff --git a/src/Simulation/Native/src/external/avx512/kernels.hpp b/src/Simulation/Native/src/external/avx512/kernels.hpp new file mode 100644 index 00000000000..d5a056663bd --- /dev/null +++ b/src/Simulation/Native/src/external/avx512/kernels.hpp @@ -0,0 +1,31 @@ +// (C) 2018 ETH Zurich, ITP, Thomas Häner and Damian Steiger + +#ifndef KERNELS_HPP_ +#define KERNELS_HPP_ + +#include +#include +#include +#include +#include +#include +#include "../cintrin.hpp" +#include "util/alignedalloc.hpp" + +#define LOOP_COLLAPSE1 2 +#define LOOP_COLLAPSE2 3 +#define LOOP_COLLAPSE3 4 +#define LOOP_COLLAPSE4 5 +#define LOOP_COLLAPSE5 6 +#define LOOP_COLLAPSE6 7 +#define LOOP_COLLAPSE7 8 + +#include "kernel1.hpp" +#include "kernel2.hpp" +#include "kernel3.hpp" +#include "kernel4.hpp" +#include "kernel5.hpp" +#include "kernel6.hpp" +#include "kernel7.hpp" + +#endif diff --git a/src/Simulation/Native/src/external/cintrin.hpp b/src/Simulation/Native/src/external/cintrin.hpp index 8034408c1e8..7e9eca72956 100644 --- a/src/Simulation/Native/src/external/cintrin.hpp +++ b/src/Simulation/Native/src/external/cintrin.hpp @@ -35,7 +35,15 @@ inline void permute_qubits_and_matrix(I *delta_list, unsigned n, M & matrix){ } inline std::complex fma(std::complex const& c1, std::complex const& c2, std::complex const& a){ - return c1*c2 + a; + // Expanded complex FMA to hard coded access (much faster) +#ifdef _MSC_VER + double r = (c1._Val[0] * c2._Val[0] - c1._Val[1] * c2._Val[1]) + a._Val[0]; + double i = (c1._Val[0] * c2._Val[1] + c1._Val[1] * c2._Val[0]) + a._Val[1]; +#else + double r = (c1.real() * c2.real() - c1.imag() * c2.imag()) + a.real(); + double i = (c1.real() * c2.imag() + c1.imag() * c2.real()) + a.imag(); +#endif + return std::complex(r, i); } inline __m256d fma(__m256d const& c1, __m256d const& c2, __m256d const& a){ diff --git a/src/Simulation/Native/src/external/fused.hpp b/src/Simulation/Native/src/external/fused.hpp index 6c1137ceb3b..2b170461e41 100644 --- a/src/Simulation/Native/src/external/fused.hpp +++ b/src/Simulation/Native/src/external/fused.hpp @@ -5,6 +5,8 @@ #include "config.hpp" #include "external/fusion.hpp" #include "simulator/kernels.hpp" +#include +#include #ifndef HAVE_INTRINSICS #include "external/nointrin/kernels.hpp" @@ -15,7 +17,7 @@ #ifdef HAVE_FMA #include "external/avx2/kernels.hpp" #else -#include "external/avx2/kernels.hpp" +#include "external/avx/kernels.hpp" #endif #endif #endif @@ -29,15 +31,35 @@ namespace SIMULATOR class Fused { + public: - Fused() {} + Fused() { + wfnCapacity = 0u; // used to optimize runtime parameters + maxFusedSpan = 4; // determine span to use at runtime + maxFusedDepth = 999; // determine max depth to use at runtime + } inline void reset() { fusedgates = Fusion(); } + const Fusion& get_fusedgates() const { + return fusedgates; + } + void set_fusedgates(Fusion newFusedGates) const { + fusedgates = newFusedGates; + } + + const int maxSpan() const { + return maxFusedSpan; + } + + const int maxDepth() const { + return maxFusedDepth; + } + template void flush(std::vector& wfn) const { @@ -46,9 +68,9 @@ class Fused Fusion::Matrix m; Fusion::IndexVector qs, cs; - + fusedgates.perform_fusion(m, qs, cs); - + std::size_t cmask = 0; for (auto c : cs) cmask |= (1ull << c); @@ -70,23 +92,19 @@ class Fused case 5: ::kernel(wfn, qs[4], qs[3], qs[2], qs[1], qs[0], m, cmask); break; + case 6: + ::kernel(wfn, qs[5], qs[4], qs[3], qs[2], qs[1], qs[0], m, cmask); + break; + case 7: + ::kernel(wfn, qs[6], qs[5], qs[4], qs[3], qs[2], qs[1], qs[0], m, cmask); + break; } - + fusedgates = Fusion(); } - template - bool subsytemwavefunction(std::vector& wfn, - std::vector const& qs, - std::vector& qubitswfn, - double tolerance) - { - flush(wfn); // we have to flush before we can extract the state - return kernels::subsytemwavefunction(wfn, qs, qubitswfn, tolerance); - } - template - Fusion::Matrix convertMatrix(M const& m) + Fusion::Matrix convertMatrix(M const& m) const { Fusion::Matrix mat(2, Fusion::Matrix::value_type(2)); for (unsigned i = 0; i < 2; ++i) @@ -96,30 +114,86 @@ class Fused } template - void apply_controlled(std::vector& wfn, M const& mat, std::vector const& cs, unsigned q) + void apply_controlled(std::vector& wfn, M const& mat, std::vector const& cs, unsigned q) const { - if (fusedgates.num_qubits()+fusedgates.num_controls()+cs.size()>8 || fusedgates.size() > 15) - flush(wfn); - Fusion newgates = fusedgates; - newgates.insert(convertMatrix(mat), std::vector(1, q), cs); - - if (newgates.num_qubits() > 4) - { - flush(wfn); - fusedgates.insert(convertMatrix(mat), std::vector(1, q), cs); - } - else - fusedgates = newgates; + Fusion::IndexVector qs = std::vector(1, q); + fusedgates.insert(convertMatrix(mat), qs, cs); } - + template - void apply(std::vector& wfn, M const& mat, unsigned q) + void apply(std::vector& wfn, M const& mat, unsigned q) const { std::vector cs; apply_controlled(wfn, mat, cs, q); } + + template + bool shouldFlush(std::vector& wfn, std::vector const& cs, unsigned q) + { + // Major runtime logic change here + + // Have to update capacity as the WFN grows + if (wfnCapacity != wfn.capacity()) { + wfnCapacity = wfn.capacity(); + char* envNT = NULL; + size_t len; +#ifdef _MSC_VER + errno_t err = _dupenv_s(&envNT, &len, "OMP_NUM_THREADS"); +#else + envNT = getenv("OMP_NUM_THREADS"); +#endif + if (envNT == NULL) { // If the user didn't force the number of threads, make an intelligent guess + int nMaxThrds = std::thread::hardware_concurrency(); // Logical HW threads + if (nMaxThrds > 4) nMaxThrds/= 2; // Assume we have hyperthreading (no consistent/concise way to do this) + if (wfnCapacity < 1u << 20) { + if (nMaxThrds > 8) nMaxThrds = 8; // Small problem, never use too many + else if (nMaxThrds > 3) nMaxThrds = 3; // Small problem on a small machine + } + omp_set_num_threads(nMaxThrds); + } + + // Set the max fused depth + char* envFD = NULL; + maxFusedDepth = 999; +#ifdef _MSC_VER + err = _dupenv_s(&envFD, &len, "QDK_SIM_FUSEDEPTH"); + if (envFD != NULL && len > 0) { + maxFusedDepth = atoi(envFD); + } +#else + envFD = getenv("QDK_SIM_FUSEDEPTH"); + if (envFD != NULL && strlen(envFD) > 0) { + maxFusedDepth = atoi(envFD); + } +#endif + // Set the fused span limit + char* envFS = NULL; + maxFusedSpan = 4; // General sweet spot + if (wfnCapacity < 1u << 20) maxFusedSpan = 2; // Don't pre-fuse small problems +#ifdef _MSC_VER + err = _dupenv_s(&envFS, &len, "QDK_SIM_FUSESPAN"); + if (envFS != NULL && len > 0) { + maxFusedSpan = atoi(envFS); + if (maxFusedSpan > 7) maxFusedSpan = 7; // Highest we can handle + } +#else + envFS = getenv("QDK_SIM_FUSESPAN"); + if (envFS != NULL && strlen(envFS) > 0) { + maxFusedSpan = atoi(envFS); + } +#endif + + } + return false; + } + private: mutable Fusion fusedgates; + + //: New runtime optimizatin settings + mutable size_t wfnCapacity; + mutable int maxFusedSpan; + mutable int maxFusedDepth; }; diff --git a/src/Simulation/Native/src/external/fusion.hpp b/src/Simulation/Native/src/external/fusion.hpp index 2e6b4bdb50d..88140349dba 100644 --- a/src/Simulation/Native/src/external/fusion.hpp +++ b/src/Simulation/Native/src/external/fusion.hpp @@ -10,6 +10,7 @@ #include #include #include "util/alignedalloc.hpp" +#include class Item{ public: @@ -17,14 +18,20 @@ class Item{ using IndexVector = std::vector; using Complex = std::complex; using Matrix = std::vector>>; - Item(Matrix mat, IndexVector idx) : mat_(mat), idx_(idx) {} + Item(Matrix mat, IndexVector idx) : mat_(std::move(mat)), idx_(idx) {} Matrix& get_matrix() { return mat_; } - IndexVector& get_indices() { return idx_; } + IndexVector& get_indices() const { return idx_; } + void remap_idx(std::unordered_map elemDict) const { + for (size_t i = 0; i < idx_.size(); i++) { + idx_[i] = elemDict[idx_[i]]; + } + } private: Matrix mat_; - IndexVector idx_; + mutable IndexVector idx_; }; +// Class handling the fusion of gates class Fusion{ public: using Index = unsigned; @@ -37,7 +44,7 @@ class Fusion{ Fusion() : global_factor_(1.) {} Index num_qubits() const { - return static_cast(set_.size()); + return static_cast(target_set_.size()); } Index num_controls() const { @@ -58,9 +65,58 @@ class Fusion{ handle_controls(empty_matrix, empty_vec, {}); // remove all current control qubits (this is a GLOBAL factor) } - void insert(Matrix matrix, IndexVector index_list, IndexVector const& ctrl_list = {}){ + const IndexSet& get_target_set() const { + return target_set_; + } + + const ItemVector& get_items() const { + return items_; + } + + const IndexSet& get_ctrl_set() const { + return ctrl_set_; + } + + const Complex& get_global_factor() const { + return global_factor_; + } + + static void remap_qubits(std::set& qubits, const std::unordered_map& mapFromOldLocToNewLoc) { + std::set tempSet; + for (unsigned elem : qubits) { + if (mapFromOldLocToNewLoc.find(elem) != mapFromOldLocToNewLoc.end()) { + tempSet.insert(mapFromOldLocToNewLoc.at(elem)); + } + } + qubits.swap(tempSet); + } + + void remap_target_set(const std::unordered_map& mapFromOldLocToNewLoc) const { + remap_qubits(target_set_, mapFromOldLocToNewLoc); + } + + void remap_ctrl_set(const std::unordered_map& mapFromOldLocToNewLoc) const { + remap_qubits(ctrl_set_, mapFromOldLocToNewLoc); + } + + void set_items(ItemVector&& newItems) const { + items_.swap(newItems); + } + + // This saves a class instance create/destroy on every gate insert + // Need a quick way to decide if we're going to grow too wide + int predict(IndexVector index_list, IndexVector const& ctrl_list = {}) { + int cnt = num_qubits() + num_controls(); + for (auto idx : index_list) + if (target_set_.count(idx) == 0 && ctrl_set_.count(idx) == 0) cnt++; + for (auto idx : ctrl_list) + if (target_set_.count(idx) == 0 && ctrl_set_.count(idx) == 0) cnt++; + return cnt; + } + + void insert(Matrix matrix, IndexVector index_list, IndexVector const& ctrl_list = {}) const { for (auto idx : index_list) - set_.emplace(idx); + target_set_.emplace(idx); if (global_factor_ != 1. && ctrl_list.size() > 0){ assert(ctrl_set_.size() == 0); @@ -73,7 +129,7 @@ class Fusion{ } void get_indices(IndexVector &indices) const{ - for (auto idx : set_) + for (auto idx : target_set_) indices.push_back(idx); } @@ -81,7 +137,7 @@ class Fusion{ if (global_factor_ != 1.) assert(ctrl_set_.size() == 0); - for (auto idx : set_) + for (auto idx : target_set_) index_list.push_back(idx); unsigned N = num_qubits(); @@ -97,7 +153,8 @@ class Fusion{ for (unsigned i = 0; i < idx.size(); ++i) idx2mat[i] = static_cast(((std::equal_range(index_list.begin(), index_list.end(), idx[i])).first - index_list.begin())); - for (std::size_t k = 0; k < (1ULL< oldcol(1ULL< need to be removed from the global mask and the controls incorporated into the old // commands (the ones already in the list). @@ -154,7 +211,7 @@ class Fusion{ if (ctrl_set_.count(ctrlIdx) == 0){ // need to either add it to the list or to the command if (items_.size() > 0){ // add it to the command add_controls(matrix, indexList, {ctrlIdx}); - set_.insert(ctrlIdx); + target_set_.insert(ctrlIdx); } else // add it to the list ctrl_set_.emplace(ctrlIdx); @@ -170,17 +227,17 @@ class Fusion{ for (auto idx : unhandled_ctrl){ new_ctrls.push_back(idx); ctrl_set_.erase(idx); - set_.insert(idx); + target_set_.insert(idx); } for (auto &item : items_) add_controls(item.get_matrix(), item.get_indices(), new_ctrls); } } - IndexSet set_; - ItemVector items_; - IndexSet ctrl_set_; - Complex global_factor_; + mutable IndexSet target_set_; //set of qubits being acted on + mutable ItemVector items_; //queue if gates to be fused + mutable IndexSet ctrl_set_; //set of controls + mutable Complex global_factor_; }; #endif diff --git a/src/Simulation/Native/src/external/nointrin/kernel1.hpp b/src/Simulation/Native/src/external/nointrin/kernel1.hpp index a6b624d3328..5173b58d8a8 100644 --- a/src/Simulation/Native/src/external/nointrin/kernel1.hpp +++ b/src/Simulation/Native/src/external/nointrin/kernel1.hpp @@ -43,7 +43,7 @@ void kernel(V& psi, unsigned id0, M const& matrix, std::size_t ctrlmask) #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE1) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE1) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; ++i1){ kernel_core(psi, i0 + i1, dsorted[0], mm); @@ -51,7 +51,7 @@ void kernel(V& psi, unsigned id0, M const& matrix, std::size_t ctrlmask) } } else{ - #pragma omp for collapse(LOOP_COLLAPSE1) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE1) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; ++i1){ if (((i0 + i1)&ctrlmask) == ctrlmask) @@ -60,20 +60,20 @@ void kernel(V& psi, unsigned id0, M const& matrix, std::size_t ctrlmask) } } #else - std::intptr_t zero = 0; - std::intptr_t dmask = dsorted[0]; + std::intptr_t zero = 0; + std::intptr_t dmask = dsorted[0]; - if (ctrlmask == 0){ - #pragma omp parallel for schedule(static) - for (std::intptr_t i = 0; i < static_cast(n); ++i) - if ((i & dmask) == zero) - kernel_core(psi, i, dsorted[0], mm); - } else { - #pragma omp parallel for schedule(static) - for (std::intptr_t i = 0; i < static_cast(n); ++i) - if ((i & ctrlmask) == ctrlmask && (i & dmask) == zero) - kernel_core(psi, i, dsorted[0], mm); - } + if (ctrlmask == 0){ + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & dmask) == zero) + kernel_core(psi, i, dsorted[0], mm); + } else { + #pragma omp parallel for schedule(static) + for (std::intptr_t i = 0; i < static_cast(n); ++i) + if ((i & ctrlmask) == ctrlmask && (i & dmask) == zero) + kernel_core(psi, i, dsorted[0], mm); + } #endif } diff --git a/src/Simulation/Native/src/external/nointrin/kernel2.hpp b/src/Simulation/Native/src/external/nointrin/kernel2.hpp index 43be1a33440..dcb47fe7f48 100644 --- a/src/Simulation/Native/src/external/nointrin/kernel2.hpp +++ b/src/Simulation/Native/src/external/nointrin/kernel2.hpp @@ -64,7 +64,7 @@ void kernel(V& psi, unsigned id1, unsigned id0, M const& matrix, std::size_t ctr #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE2) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE2) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; ++i2){ @@ -74,7 +74,7 @@ void kernel(V& psi, unsigned id1, unsigned id0, M const& matrix, std::size_t ctr } } else{ - #pragma omp for collapse(LOOP_COLLAPSE2) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE2) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; ++i2){ diff --git a/src/Simulation/Native/src/external/nointrin/kernel3.hpp b/src/Simulation/Native/src/external/nointrin/kernel3.hpp index da44778220a..1019845187a 100644 --- a/src/Simulation/Native/src/external/nointrin/kernel3.hpp +++ b/src/Simulation/Native/src/external/nointrin/kernel3.hpp @@ -129,7 +129,7 @@ void kernel(V& psi, unsigned id2, unsigned id1, unsigned id0, M const& matrix, s #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE3) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE3) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -141,7 +141,7 @@ void kernel(V& psi, unsigned id2, unsigned id1, unsigned id0, M const& matrix, s } } else{ - #pragma omp for collapse(LOOP_COLLAPSE3) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE3) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/nointrin/kernel4.hpp b/src/Simulation/Native/src/external/nointrin/kernel4.hpp index 6bc3b303e6e..46d33620e74 100644 --- a/src/Simulation/Native/src/external/nointrin/kernel4.hpp +++ b/src/Simulation/Native/src/external/nointrin/kernel4.hpp @@ -354,7 +354,7 @@ void kernel(V& psi, unsigned id3, unsigned id2, unsigned id1, unsigned id0, M co #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE4) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE4) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -368,7 +368,7 @@ void kernel(V& psi, unsigned id3, unsigned id2, unsigned id1, unsigned id0, M co } } else{ - #pragma omp for collapse(LOOP_COLLAPSE4) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE4) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/nointrin/kernel5.hpp b/src/Simulation/Native/src/external/nointrin/kernel5.hpp index 13d363f7df3..08657104779 100644 --- a/src/Simulation/Native/src/external/nointrin/kernel5.hpp +++ b/src/Simulation/Native/src/external/nointrin/kernel5.hpp @@ -643,7 +643,7 @@ void kernel(V& psi, unsigned id4, unsigned id3, unsigned id2, unsigned id1, unsi #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE5) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE5) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -659,7 +659,7 @@ void kernel(V& psi, unsigned id4, unsigned id3, unsigned id2, unsigned id1, unsi } } else{ - #pragma omp for collapse(LOOP_COLLAPSE5) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE5) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/nointrin/kernel6.hpp b/src/Simulation/Native/src/external/nointrin/kernel6.hpp index 893bf4e35d5..7f8ea4741a3 100644 --- a/src/Simulation/Native/src/external/nointrin/kernel6.hpp +++ b/src/Simulation/Native/src/external/nointrin/kernel6.hpp @@ -244,7 +244,7 @@ void kernel(V& psi, unsigned id5, unsigned id4, unsigned id3, unsigned id2, unsi #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE6) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE6) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -262,7 +262,7 @@ void kernel(V& psi, unsigned id5, unsigned id4, unsigned id3, unsigned id2, unsi } } else{ - #pragma omp for collapse(LOOP_COLLAPSE6) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE6) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/external/nointrin/kernel7.hpp b/src/Simulation/Native/src/external/nointrin/kernel7.hpp index a9537bb61d1..fc8401da66f 100644 --- a/src/Simulation/Native/src/external/nointrin/kernel7.hpp +++ b/src/Simulation/Native/src/external/nointrin/kernel7.hpp @@ -453,7 +453,7 @@ void kernel(V& psi, unsigned id6, unsigned id5, unsigned id4, unsigned id3, unsi #ifndef _MSC_VER if (ctrlmask == 0){ - #pragma omp for collapse(LOOP_COLLAPSE7) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE7) schedule(static) proc_bind(spread) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ @@ -473,7 +473,7 @@ void kernel(V& psi, unsigned id6, unsigned id5, unsigned id4, unsigned id3, unsi } } else{ - #pragma omp for collapse(LOOP_COLLAPSE7) schedule(static) + #pragma omp parallel for collapse(LOOP_COLLAPSE7) schedule(static) for (std::size_t i0 = 0; i0 < n; i0 += 2 * dsorted[0]){ for (std::size_t i1 = 0; i1 < dsorted[0]; i1 += 2 * dsorted[1]){ for (std::size_t i2 = 0; i2 < dsorted[1]; i2 += 2 * dsorted[2]){ diff --git a/src/Simulation/Native/src/simulator/CMakeLists.txt b/src/Simulation/Native/src/simulator/CMakeLists.txt index d048feac129..b1caf02fc05 100644 --- a/src/Simulation/Native/src/simulator/CMakeLists.txt +++ b/src/Simulation/Native/src/simulator/CMakeLists.txt @@ -4,9 +4,12 @@ add_executable(local_test local_test.cpp) add_executable(factory_test factory_test.cpp) add_executable(capi_test capi_test.cpp) +add_executable(dbw_test dbw_test.cpp) target_link_libraries(factory_test Microsoft.Quantum.Simulator.Runtime) target_link_libraries(local_test Microsoft.Quantum.Simulator.Runtime) target_link_libraries(capi_test Microsoft.Quantum.Simulator.Runtime) +target_link_libraries(dbw_test Microsoft.Quantum.Simulator.Runtime) add_test(NAME factory_test COMMAND ./factory_test WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) add_test(NAME local_test COMMAND ./local_test WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) add_test(NAME capi_test COMMAND ./capi_test WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME dbw_test COMMAND ./dbw_test WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) diff --git a/src/Simulation/Native/src/simulator/Makefile b/src/Simulation/Native/src/simulator/Makefile new file mode 100644 index 00000000000..3522e3fd641 --- /dev/null +++ b/src/Simulation/Native/src/simulator/Makefile @@ -0,0 +1,380 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"libraries\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# The main all target +all: cmake_check_build_system + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(CMAKE_COMMAND) -E cmake_progress_start /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/CMakeFiles /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/src/simulator/CMakeFiles/progress.marks + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/simulator/all + $(CMAKE_COMMAND) -E cmake_progress_start /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/simulator/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/simulator/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/simulator/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +src/simulator/CMakeFiles/dbw_test.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/simulator/CMakeFiles/dbw_test.dir/rule +.PHONY : src/simulator/CMakeFiles/dbw_test.dir/rule + +# Convenience name for target. +dbw_test: src/simulator/CMakeFiles/dbw_test.dir/rule + +.PHONY : dbw_test + +# fast build rule for target. +dbw_test/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/dbw_test.dir/build.make src/simulator/CMakeFiles/dbw_test.dir/build +.PHONY : dbw_test/fast + +# Convenience name for target. +src/simulator/CMakeFiles/capi_test.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/simulator/CMakeFiles/capi_test.dir/rule +.PHONY : src/simulator/CMakeFiles/capi_test.dir/rule + +# Convenience name for target. +capi_test: src/simulator/CMakeFiles/capi_test.dir/rule + +.PHONY : capi_test + +# fast build rule for target. +capi_test/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/capi_test.dir/build.make src/simulator/CMakeFiles/capi_test.dir/build +.PHONY : capi_test/fast + +# Convenience name for target. +src/simulator/CMakeFiles/factory_test.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/simulator/CMakeFiles/factory_test.dir/rule +.PHONY : src/simulator/CMakeFiles/factory_test.dir/rule + +# Convenience name for target. +factory_test: src/simulator/CMakeFiles/factory_test.dir/rule + +.PHONY : factory_test + +# fast build rule for target. +factory_test/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/factory_test.dir/build.make src/simulator/CMakeFiles/factory_test.dir/build +.PHONY : factory_test/fast + +# Convenience name for target. +src/simulator/CMakeFiles/local_test.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/simulator/CMakeFiles/local_test.dir/rule +.PHONY : src/simulator/CMakeFiles/local_test.dir/rule + +# Convenience name for target. +local_test: src/simulator/CMakeFiles/local_test.dir/rule + +.PHONY : local_test + +# fast build rule for target. +local_test/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/local_test.dir/build.make src/simulator/CMakeFiles/local_test.dir/build +.PHONY : local_test/fast + +capi_test.o: capi_test.cpp.o + +.PHONY : capi_test.o + +# target to build an object file +capi_test.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/capi_test.dir/build.make src/simulator/CMakeFiles/capi_test.dir/capi_test.cpp.o +.PHONY : capi_test.cpp.o + +capi_test.i: capi_test.cpp.i + +.PHONY : capi_test.i + +# target to preprocess a source file +capi_test.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/capi_test.dir/build.make src/simulator/CMakeFiles/capi_test.dir/capi_test.cpp.i +.PHONY : capi_test.cpp.i + +capi_test.s: capi_test.cpp.s + +.PHONY : capi_test.s + +# target to generate assembly for a file +capi_test.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/capi_test.dir/build.make src/simulator/CMakeFiles/capi_test.dir/capi_test.cpp.s +.PHONY : capi_test.cpp.s + +dbw_test.o: dbw_test.cpp.o + +.PHONY : dbw_test.o + +# target to build an object file +dbw_test.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/dbw_test.dir/build.make src/simulator/CMakeFiles/dbw_test.dir/dbw_test.cpp.o +.PHONY : dbw_test.cpp.o + +dbw_test.i: dbw_test.cpp.i + +.PHONY : dbw_test.i + +# target to preprocess a source file +dbw_test.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/dbw_test.dir/build.make src/simulator/CMakeFiles/dbw_test.dir/dbw_test.cpp.i +.PHONY : dbw_test.cpp.i + +dbw_test.s: dbw_test.cpp.s + +.PHONY : dbw_test.s + +# target to generate assembly for a file +dbw_test.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/dbw_test.dir/build.make src/simulator/CMakeFiles/dbw_test.dir/dbw_test.cpp.s +.PHONY : dbw_test.cpp.s + +factory_test.o: factory_test.cpp.o + +.PHONY : factory_test.o + +# target to build an object file +factory_test.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/factory_test.dir/build.make src/simulator/CMakeFiles/factory_test.dir/factory_test.cpp.o +.PHONY : factory_test.cpp.o + +factory_test.i: factory_test.cpp.i + +.PHONY : factory_test.i + +# target to preprocess a source file +factory_test.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/factory_test.dir/build.make src/simulator/CMakeFiles/factory_test.dir/factory_test.cpp.i +.PHONY : factory_test.cpp.i + +factory_test.s: factory_test.cpp.s + +.PHONY : factory_test.s + +# target to generate assembly for a file +factory_test.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/factory_test.dir/build.make src/simulator/CMakeFiles/factory_test.dir/factory_test.cpp.s +.PHONY : factory_test.cpp.s + +local_test.o: local_test.cpp.o + +.PHONY : local_test.o + +# target to build an object file +local_test.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/local_test.dir/build.make src/simulator/CMakeFiles/local_test.dir/local_test.cpp.o +.PHONY : local_test.cpp.o + +local_test.i: local_test.cpp.i + +.PHONY : local_test.i + +# target to preprocess a source file +local_test.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/local_test.dir/build.make src/simulator/CMakeFiles/local_test.dir/local_test.cpp.i +.PHONY : local_test.cpp.i + +local_test.s: local_test.cpp.s + +.PHONY : local_test.s + +# target to generate assembly for a file +local_test.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/simulator/CMakeFiles/local_test.dir/build.make src/simulator/CMakeFiles/local_test.dir/local_test.cpp.s +.PHONY : local_test.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... edit_cache" + @echo "... test" + @echo "... dbw_test" + @echo "... capi_test" + @echo "... install" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... factory_test" + @echo "... install/local" + @echo "... local_test" + @echo "... capi_test.o" + @echo "... capi_test.i" + @echo "... capi_test.s" + @echo "... dbw_test.o" + @echo "... dbw_test.i" + @echo "... dbw_test.s" + @echo "... factory_test.o" + @echo "... factory_test.i" + @echo "... factory_test.s" + @echo "... local_test.o" + @echo "... local_test.i" + @echo "... local_test.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/src/Simulation/Native/src/simulator/Project.sln b/src/Simulation/Native/src/simulator/Project.sln new file mode 100644 index 00000000000..8bff94040c4 --- /dev/null +++ b/src/Simulation/Native/src/simulator/Project.sln @@ -0,0 +1,95 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALL_BUILD", "ALL_BUILD.vcxproj", "{FF099378-3036-3F4A-9265-FD7892A6D7C4}" + ProjectSection(ProjectDependencies) = postProject + {71F2A928-1769-3C7F-96A5-9D3162F0F318} = {71F2A928-1769-3C7F-96A5-9D3162F0F318} + {9B43304E-07FF-358F-9B80-6563FEACD34B} = {9B43304E-07FF-358F-9B80-6563FEACD34B} + {B9922A7F-66CA-38A9-AB14-F37716C2E642} = {B9922A7F-66CA-38A9-AB14-F37716C2E642} + {9A0E62D8-1D15-3C23-9033-C3CB9F76209B} = {9A0E62D8-1D15-3C23-9033-C3CB9F76209B} + {96344D76-033E-328A-A304-6957F95DA3E2} = {96344D76-033E-328A-A304-6957F95DA3E2} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "ZERO_CHECK.vcxproj", "{71F2A928-1769-3C7F-96A5-9D3162F0F318}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "capi_test", "capi_test.vcxproj", "{9B43304E-07FF-358F-9B80-6563FEACD34B}" + ProjectSection(ProjectDependencies) = postProject + {71F2A928-1769-3C7F-96A5-9D3162F0F318} = {71F2A928-1769-3C7F-96A5-9D3162F0F318} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dbw_test", "dbw_test.vcxproj", "{B9922A7F-66CA-38A9-AB14-F37716C2E642}" + ProjectSection(ProjectDependencies) = postProject + {71F2A928-1769-3C7F-96A5-9D3162F0F318} = {71F2A928-1769-3C7F-96A5-9D3162F0F318} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "factory_test", "factory_test.vcxproj", "{9A0E62D8-1D15-3C23-9033-C3CB9F76209B}" + ProjectSection(ProjectDependencies) = postProject + {71F2A928-1769-3C7F-96A5-9D3162F0F318} = {71F2A928-1769-3C7F-96A5-9D3162F0F318} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "local_test", "local_test.vcxproj", "{96344D76-033E-328A-A304-6957F95DA3E2}" + ProjectSection(ProjectDependencies) = postProject + {71F2A928-1769-3C7F-96A5-9D3162F0F318} = {71F2A928-1769-3C7F-96A5-9D3162F0F318} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + MinSizeRel|x64 = MinSizeRel|x64 + RelWithDebInfo|x64 = RelWithDebInfo|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FF099378-3036-3F4A-9265-FD7892A6D7C4}.Debug|x64.ActiveCfg = Debug|x64 + {FF099378-3036-3F4A-9265-FD7892A6D7C4}.Release|x64.ActiveCfg = Release|x64 + {FF099378-3036-3F4A-9265-FD7892A6D7C4}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64 + {FF099378-3036-3F4A-9265-FD7892A6D7C4}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {71F2A928-1769-3C7F-96A5-9D3162F0F318}.Debug|x64.ActiveCfg = Debug|x64 + {71F2A928-1769-3C7F-96A5-9D3162F0F318}.Debug|x64.Build.0 = Debug|x64 + {71F2A928-1769-3C7F-96A5-9D3162F0F318}.Release|x64.ActiveCfg = Release|x64 + {71F2A928-1769-3C7F-96A5-9D3162F0F318}.Release|x64.Build.0 = Release|x64 + {71F2A928-1769-3C7F-96A5-9D3162F0F318}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64 + {71F2A928-1769-3C7F-96A5-9D3162F0F318}.MinSizeRel|x64.Build.0 = MinSizeRel|x64 + {71F2A928-1769-3C7F-96A5-9D3162F0F318}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {71F2A928-1769-3C7F-96A5-9D3162F0F318}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {9B43304E-07FF-358F-9B80-6563FEACD34B}.Debug|x64.ActiveCfg = Debug|x64 + {9B43304E-07FF-358F-9B80-6563FEACD34B}.Debug|x64.Build.0 = Debug|x64 + {9B43304E-07FF-358F-9B80-6563FEACD34B}.Release|x64.ActiveCfg = Release|x64 + {9B43304E-07FF-358F-9B80-6563FEACD34B}.Release|x64.Build.0 = Release|x64 + {9B43304E-07FF-358F-9B80-6563FEACD34B}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64 + {9B43304E-07FF-358F-9B80-6563FEACD34B}.MinSizeRel|x64.Build.0 = MinSizeRel|x64 + {9B43304E-07FF-358F-9B80-6563FEACD34B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {9B43304E-07FF-358F-9B80-6563FEACD34B}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {B9922A7F-66CA-38A9-AB14-F37716C2E642}.Debug|x64.ActiveCfg = Debug|x64 + {B9922A7F-66CA-38A9-AB14-F37716C2E642}.Debug|x64.Build.0 = Debug|x64 + {B9922A7F-66CA-38A9-AB14-F37716C2E642}.Release|x64.ActiveCfg = Release|x64 + {B9922A7F-66CA-38A9-AB14-F37716C2E642}.Release|x64.Build.0 = Release|x64 + {B9922A7F-66CA-38A9-AB14-F37716C2E642}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64 + {B9922A7F-66CA-38A9-AB14-F37716C2E642}.MinSizeRel|x64.Build.0 = MinSizeRel|x64 + {B9922A7F-66CA-38A9-AB14-F37716C2E642}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {B9922A7F-66CA-38A9-AB14-F37716C2E642}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {9A0E62D8-1D15-3C23-9033-C3CB9F76209B}.Debug|x64.ActiveCfg = Debug|x64 + {9A0E62D8-1D15-3C23-9033-C3CB9F76209B}.Debug|x64.Build.0 = Debug|x64 + {9A0E62D8-1D15-3C23-9033-C3CB9F76209B}.Release|x64.ActiveCfg = Release|x64 + {9A0E62D8-1D15-3C23-9033-C3CB9F76209B}.Release|x64.Build.0 = Release|x64 + {9A0E62D8-1D15-3C23-9033-C3CB9F76209B}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64 + {9A0E62D8-1D15-3C23-9033-C3CB9F76209B}.MinSizeRel|x64.Build.0 = MinSizeRel|x64 + {9A0E62D8-1D15-3C23-9033-C3CB9F76209B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {9A0E62D8-1D15-3C23-9033-C3CB9F76209B}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {96344D76-033E-328A-A304-6957F95DA3E2}.Debug|x64.ActiveCfg = Debug|x64 + {96344D76-033E-328A-A304-6957F95DA3E2}.Debug|x64.Build.0 = Debug|x64 + {96344D76-033E-328A-A304-6957F95DA3E2}.Release|x64.ActiveCfg = Release|x64 + {96344D76-033E-328A-A304-6957F95DA3E2}.Release|x64.Build.0 = Release|x64 + {96344D76-033E-328A-A304-6957F95DA3E2}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64 + {96344D76-033E-328A-A304-6957F95DA3E2}.MinSizeRel|x64.Build.0 = MinSizeRel|x64 + {96344D76-033E-328A-A304-6957F95DA3E2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {96344D76-033E-328A-A304-6957F95DA3E2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {075CF7D4-156C-30A3-9A71-3554AECB5B07} + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/src/Simulation/Native/src/simulator/capi.cpp b/src/Simulation/Native/src/simulator/capi.cpp index 344445f46c4..544f1f25261 100644 --- a/src/Simulation/Native/src/simulator/capi.cpp +++ b/src/Simulation/Native/src/simulator/capi.cpp @@ -13,7 +13,7 @@ MICROSOFT_QUANTUM_DECL unsigned init() { return Microsoft::Quantum::Simulator::create(); } - + MICROSOFT_QUANTUM_DECL void destroy(_In_ unsigned id) { Microsoft::Quantum::Simulator::destroy(id); diff --git a/src/Simulation/Native/src/simulator/capi_test.cpp b/src/Simulation/Native/src/simulator/capi_test.cpp index 945127e260d..179b6a94960 100644 --- a/src/Simulation/Native/src/simulator/capi_test.cpp +++ b/src/Simulation/Native/src/simulator/capi_test.cpp @@ -107,24 +107,24 @@ void test_gates() allocateQubit(sim_id, 0); allocateQubit(sim_id, 1); - CRx(sim_id, 1.0, 0, 1); + dump(sim_id, "test_gatesA"); + CRx(sim_id, 1.0, 0, 1); - assert(M(sim_id, 1)==false); + dump(sim_id, "test_gatesB"); + assert(M(sim_id, 1) == false); X(sim_id, 0); - CRx(sim_id, 1.0, 0, 1); + CRx(sim_id, 1.0, 0, 1); H(sim_id, 1); CRz(sim_id, -1.0, 0, 1); H(sim_id, 1); - assert(M(sim_id, 1)==false); + assert(M(sim_id, 1) == false); X(sim_id, 1); - assert(M(sim_id, 1)==true); - - X(sim_id, 1); + assert(M(sim_id, 1) == true); release(sim_id, 0); release(sim_id, 1); @@ -132,7 +132,6 @@ void test_gates() destroy(sim_id); } - void test_allocate() { auto sim_id = init(); @@ -348,14 +347,13 @@ void test_permute_basis() Ry(sim_id, -1.1, 3); CX(sim_id, 1, 2); H(sim_id, 1); - // Dump(sim_id, "permute-end.txt"); assert(M(sim_id, 0) == false); assert(M(sim_id, 1) == false); assert(M(sim_id, 2) == false); assert(M(sim_id, 3) == false); assert(M(sim_id, 4) == false); - + for (unsigned i = 0; i < nqubits + 1; ++i) release(sim_id, i); destroy(sim_id); diff --git a/src/Simulation/Native/src/simulator/dbw_test.cpp b/src/Simulation/Native/src/simulator/dbw_test.cpp new file mode 100644 index 00000000000..ac4df0f1448 --- /dev/null +++ b/src/Simulation/Native/src/simulator/dbw_test.cpp @@ -0,0 +1,240 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#include "simulator/capi.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "util/cpuid.hpp" +#include "capi.hpp" +#include + +using namespace std; + +// some convenience functions +void CX(unsigned sim_id, unsigned c, unsigned q) +{ + MCX(sim_id,1,&c,q); +} + +void CZ(unsigned sim_id, unsigned c, unsigned q) +{ + MCZ(sim_id,1,&c,q); +} + +void Ry(unsigned sim_id, double phi, unsigned q) +{ + R(sim_id,2,phi,q); +} + +void CRz(unsigned sim_id, double phi, unsigned c, unsigned q) +{ + MCR(sim_id,3,phi,1,&c,q); +} + +void CRx(unsigned sim_id, double phi, unsigned c, unsigned q) +{ + MCR(sim_id,1,phi,1,&c,q); +} + + +void dump(unsigned sim_id, const char* label) +{ + auto dump_callback = [](size_t idx, double r, double i) { + std::cout << idx << ":\t" << r << '\t' << i << '\n'; + return true; + }; + auto sim_ids_callback = [](unsigned idx) { std::cout << idx << " "; }; + + std::cout << label << "\n" << "wave function for ids (least to most significant): ["; + DumpIds(sim_id, sim_ids_callback); + std::cout << "]\n"; + Dump(sim_id, dump_callback); +} + +std::vector> loadPrb(int circStart, int circStop) { + std::vector> rslt; + for (int k = circStart; k < circStop; k++) { + unsigned c = k - 1; + if (k > 0) + for (int j = 0; j < 5; j++) { + std::vector nums = { k - 1, k }; + rslt.push_back(nums); + } + if (k % 5 == 0) { + for (int j = 0; j < 5; j++) { + std::vector nums = { k }; + rslt.push_back(nums); + } + } + } + return rslt; +} + +std::vector splitNums(const std::string& str, char delim = ',') { + std::vector nums; + size_t start; + size_t end = 0; + while ((start = str.find_first_not_of(delim, end)) != std::string::npos) { + end = str.find(delim, start); + nums.push_back(stoi(str.substr(start, end - start))); + } + return nums; +} + +std::vector> loadTest(char* fName,bool doClusters) { + std::vector> rslt; + std::vector empty; + string line; + ifstream file(fName); + if (!file.is_open()) throw(std::invalid_argument("Can't open input file")); + + int phase = 0; + if (doClusters) phase = 2; + + regex reOrig("^=== Original:.*[\r]?"); + regex reGate("^\\s*(\\d+):\\s+(.+)\\[(.*)\\].*[\r]?"); + regex reClusters("^=== Clusters.*[\r]?"); + regex reCluster("^==== cluster\\[\\s*(\\d+)\\]:.*[\r]?"); + smatch sm; + + while (getline(file, line)) { + if (phase == 99) break; + switch (phase) { + case 0: + if (regex_match(line, sm, reOrig)) phase = 1; + break; + case 1: + if (regex_match(line, sm, reGate)) { + auto qs = splitNums(sm[3]); + rslt.push_back(qs); + } + else phase = 99; + break; + case 2: + if (regex_match(line, reClusters)) + phase = 3; + break; + case 4: + if (regex_match(line, sm, reGate)) { + auto qs = splitNums(sm[3]); + rslt.push_back(qs); + break; + } + else { + phase = 3; + [[fallthrough]]; + } + case 3: + if (regex_match(line, sm, reCluster)) { + rslt.push_back(empty); + phase = 4; + } + break; + } + } + file.close(); + return rslt; +} + +void mySprintf(char* buf, int bufSiz, const char* fmt, ...) { + va_list args; +#ifdef _MSC_VER + __crt_va_start(args, fmt); + vsprintf_s(buf, bufSiz, fmt, args); + __crt_va_end(args); +#else + va_start(args,fmt); + vsprintf(buf, fmt, args); + va_end(args); +#endif + //perror(buf); +} + +int numQs(vector> prb) { + int mx = -1; + for (auto i : prb) + for (auto j : i) + if (j > mx) mx = j; + return (mx + 1); +} + +int main() +{ + int nQs; + vector> prb; + char fName[30]; + + // Perform a small number of loops on the 4x4 advantage circuit. + int sizR = 4; + int sizC = 4; + int loops = 10; + mySprintf(fName, sizeof(fName), "advantage_%d%d_4.log", sizR, sizC); + + prb = loadTest(fName, false); + nQs = numQs(prb); + int gateCnt = (int)prb.size(); + double maxGps = 0.0; + +#ifdef NDEBUG + double gpsFailureThreshold = 1000.0; +#else + double gpsFailureThreshold = 60.0; +#endif + + printf("==== Starting %s (%d gates), Failure threshold %.2e gps\n", fName, gateCnt, gpsFailureThreshold); + + auto sim_id = init(); + for (int q = 0; q < nQs; q++) allocateQubit(sim_id, q); + + std::chrono::system_clock::time_point start = std::chrono::system_clock::now(); + int itvl = loops / 10; + for (int i = 0; i < loops; i++) { + for (int j = 0; j < prb.size(); j++) { + auto qs = prb[j]; + uint32_t cs[2]; + switch (qs.size()) { + case 0: // No op + break; + case 1: + H(sim_id, qs[0]); + break; + case 2: + CX(sim_id, qs[0], qs[1]); + break; + case 3: + cs[0] = (uint32_t)qs[0]; + cs[1] = (uint32_t)qs[1]; + MCX(sim_id, 2, cs, qs[2]); + break; + default: + throw(std::invalid_argument("Didn't expect more then 3 wire gates")); + } + + } + for (int q = 0; q < nQs; q++) M(sim_id, q); + + std::chrono::system_clock::time_point curr = std::chrono::system_clock::now(); + std::chrono::duration elapsed = curr - start; + if (i % itvl == (itvl - 1)) { + double gps = (double)gateCnt * (double)i / elapsed.count(); + printf("Loops[%4d]: GPS = %.2e\n", i, gps); + fflush(stdout); + if (gps > maxGps) maxGps = gps; + } + } + destroy(sim_id); + + if (maxGps < gpsFailureThreshold) return -1; +} diff --git a/src/Simulation/Native/src/simulator/factory.cpp b/src/Simulation/Native/src/simulator/factory.cpp index b80b02b35f6..b4ea5fd4e63 100644 --- a/src/Simulation/Native/src/simulator/factory.cpp +++ b/src/Simulation/Native/src/simulator/factory.cpp @@ -13,15 +13,19 @@ namespace Microsoft { namespace SimulatorGeneric { - MICROSOFT_QUANTUM_DECL_IMPORT Microsoft::Quantum::Simulator::SimulatorInterface* createSimulator(unsigned); + Microsoft::Quantum::Simulator::SimulatorInterface* createSimulator(unsigned); } namespace SimulatorAVX { - MICROSOFT_QUANTUM_DECL_IMPORT Microsoft::Quantum::Simulator::SimulatorInterface* createSimulator(unsigned); + Microsoft::Quantum::Simulator::SimulatorInterface* createSimulator(unsigned); } namespace SimulatorAVX2 { - MICROSOFT_QUANTUM_DECL_IMPORT Microsoft::Quantum::Simulator::SimulatorInterface* createSimulator(unsigned); + Microsoft::Quantum::Simulator::SimulatorInterface* createSimulator(unsigned); + } + namespace SimulatorAVX512 + { + Microsoft::Quantum::Simulator::SimulatorInterface* createSimulator(unsigned); } } } @@ -35,11 +39,15 @@ namespace Microsoft std::shared_mutex _mutex; std::vector> _psis; - SimulatorInterface* createSimulator(unsigned maxlocal) - { - if (haveFMA() && haveAVX2()) + SimulatorInterface* createSimulator(unsigned maxlocal) + { + if (haveAVX512()) + { + return SimulatorAVX512::createSimulator(maxlocal); + } + else if (haveFMA() && haveAVX2()) { - return SimulatorAVX2::createSimulator(maxlocal); + return SimulatorAVX2::createSimulator(maxlocal); } else if(haveAVX()) { diff --git a/src/Simulation/Native/src/simulator/gates.hpp b/src/Simulation/Native/src/simulator/gates.hpp index 3458a3295f0..15034067c06 100644 --- a/src/Simulation/Native/src/simulator/gates.hpp +++ b/src/Simulation/Native/src/simulator/gates.hpp @@ -16,448 +16,453 @@ namespace Microsoft { -namespace Quantum -{ -namespace SIMULATOR -{ -namespace Gates -{ - -/// a type for runtime basis specification -enum Basis -{ - PauliI = 0, - PauliX = 1, - PauliY = 3, - PauliZ = 2 -}; - -/// a general one qubit gate, storing the qubit number -class OneQubitGate -{ - public: - OneQubitGate(unsigned q) : qubit_(q) - { - } - unsigned qubit() const - { - return qubit_; - } - - private: - unsigned qubit_; -}; - -/// a general one qubit roitation gate, storing the qubit number and angle -class RotationGate : public OneQubitGate -{ - public: - RotationGate(double phi, unsigned q) : OneQubitGate(q), angle_(phi) + namespace Quantum { - } - double angle() const - { - return angle_; - } - - private: - double angle_; -}; - -/// The Pauli X gate -class X : public OneQubitGate -{ - public: - X(unsigned q) : OneQubitGate(q) - { - } - - std::string name() const - { - return "X"; - } - - TinyMatrix matrix() const - { - RealType mat[2][2] = {{0., 1.}, {1., 0.}}; - return TinyMatrix(mat); - } -}; - -/// The Pauli Y gate -class Y : public OneQubitGate -{ - public: - Y(unsigned q) : OneQubitGate(q) - { - } - - std::string name() const - { - return "Y"; - } - - TinyMatrix matrix() const - { - using val_t = ComplexType; - val_t mat[2][2] = {{val_t(0.), val_t(0.)}, {val_t(0.), val_t(0.)}}; - mat[0][1] = val_t(0., -1.); - mat[1][0] = val_t(0., 1.); - return TinyMatrix(mat); - } -}; - -/// The Pauli Z gate -class Z : public OneQubitGate -{ - public: - Z(unsigned q) : OneQubitGate(q) - { - } - - std::string name() const - { - return "Z"; - } - - DiagMatrix matrix() const - { - RealType diag[2] = {1., -1.}; - return DiagMatrix(diag); - } -}; - -/// The Hadamard gate -class H : public OneQubitGate -{ - public: - H(unsigned q) : OneQubitGate(q) - { - } - - std::string name() const - { - return "H"; - } - - TinyMatrix matrix() const - { - RealType r = std::sqrt(0.5); - RealType mat[2][2] = {{r, r}, {r, -r}}; - return TinyMatrix(mat); - } -}; - -/// The Y-version of a Hadamard gate -class HY : public OneQubitGate -{ - public: - HY(unsigned q) : OneQubitGate(q) - { - } - - std::string name() const - { - return "HY"; - } - - TinyMatrix matrix() const - { - ComplexType r(std::sqrt(0.5), 0.); - ComplexType i(0., std::sqrt(0.5)); - ComplexType mat[2][2] = {{r, r}, {i, -i}}; - return TinyMatrix(mat); - } -}; - -/// The adjoint Y-version of a Hadamard gate -class AdjHY : public OneQubitGate -{ - public: - AdjHY(unsigned q) : OneQubitGate(q) - { - } - - std::string name() const - { - return "AdjHY"; - } - - TinyMatrix matrix() const - { - ComplexType r(std::sqrt(0.5), 0.); - ComplexType i(0., std::sqrt(0.5)); - ComplexType mat[2][2] = {{r, -i}, {r, i}}; - return TinyMatrix(mat); - } -}; - -/// The S (phase) gate -class S : public OneQubitGate -{ - public: - S(unsigned q) : OneQubitGate(q) - { - } - - std::string name() const - { - return "S"; - } - - DiagMatrix matrix() const - { - using val_t = ComplexType; - val_t diag[2] = {val_t(1.), val_t(0., 1.)}; - return DiagMatrix(diag); - } -}; - -/// The adjoint of the S (phase) gate -class AdjS : public OneQubitGate -{ - public: - AdjS(unsigned q) : OneQubitGate(q) - { - } - - std::string name() const - { - return "AdjS"; - } - - DiagMatrix matrix() const - { - using val_t = ComplexType; - val_t diag[2] = {val_t(1.), val_t(0., -1.)}; - return DiagMatrix(diag); - } -}; - -/// The T (pi/8) gate -class T : public OneQubitGate -{ - public: - T(unsigned q) : OneQubitGate(q) - { - } - - std::string name() const - { - return "T"; - } - - DiagMatrix matrix() const - { - using val_t = ComplexType; - RealType r = std::sqrt(0.5); - val_t diag[2] = {val_t(1.), val_t(r, r)}; - return DiagMatrix(diag); - } -}; - -/// The T (pi/8) gate -class AdjT : public OneQubitGate -{ - public: - AdjT(unsigned q) : OneQubitGate(q) - { - } - - std::string name() const - { - return "AdjT"; - } - - DiagMatrix matrix() const - { - using val_t = ComplexType; - RealType r = std::sqrt(0.5); - val_t diag[2] = {val_t(1.), val_t(r, -r)}; - return DiagMatrix(diag); - } -}; - -/// The G gate -class G : public RotationGate -{ - public: - G(RealType phi, unsigned q) : RotationGate(phi, q) - { - } - - std::string name() const - { - return "G"; - } - - DiagMatrix matrix() const - { - DiagMatrix d; - ComplexType arg(0., 0.5 * angle()); - d(0, 0) = d(1, 1) = std::exp(-arg); - return d; - } -}; - -/// The Rx gate -class Rx : public RotationGate -{ - public: - Rx(RealType phi, unsigned q) : RotationGate(phi, q) - { - } - - std::string name() const - { - return "Rx"; - } - - TinyMatrix matrix() const - { - using val_t = ComplexType; - val_t s(0., -std::sin(0.5 * angle())); - val_t c = std::cos(0.5 * angle()); - val_t mat[2][2] = {{c, s}, {s, c}}; - return TinyMatrix(mat); - } -}; - -/// The Ry gate -class Ry : public RotationGate -{ - public: - Ry(RealType phi, unsigned q) : RotationGate(phi, q) - { - } - - std::string name() const - { - return "Ry"; - } - - TinyMatrix matrix() const - { - RealType s = std::sin(0.5 * angle()); - RealType c = std::cos(0.5 * angle()); - RealType mat[2][2] = {{c, -s}, {s, c}}; - ; - return TinyMatrix(mat); - } -}; - -/// The Rz gate -class Rz : public RotationGate -{ - public: - Rz(RealType phi, unsigned q) : RotationGate(phi, q) - { - } - - std::string name() const - { - return "Rz"; - } - - DiagMatrix matrix() const - { - DiagMatrix d; - ComplexType arg(0., 0.5 * angle()); - d(0, 0) = std::exp(-arg); - d(1, 1) = std::exp(arg); - return d; - } -}; - -/// The R1 gate -class R1 : public RotationGate -{ - public: - R1(RealType phi, unsigned q) : RotationGate(phi, q) - { - } - - std::string name() const - { - return "R1"; - } - - DiagMatrix matrix() const - { - DiagMatrix d; - ComplexType arg(0., angle()); - d(0, 0) = 1.; - d(1, 1) = std::exp(-arg); - return d; - } -}; - -/// The R1 gate -class R1Frac : public R1 -{ - public: - R1Frac(int k, int n, unsigned q) : R1(M_PI * static_cast(k) / static_cast(1 << n), q) - { - } - - std::string name() const - { - return "R1Frac"; - } -}; - -/// The R gate for rotation around an arbitrary basis -class R : public RotationGate -{ - public: - R(Basis b, RealType phi, unsigned q) : RotationGate(phi, q), b_(b) - { - } - - std::string name() const - { - return "R"; - } - - TinyMatrix matrix() const - { - switch (b_) + namespace SIMULATOR { - case PauliI: - return G(angle(), qubit()).matrix(); - break; - case PauliX: - return Rx(angle(), qubit()).matrix(); - break; - case PauliY: - return Ry(angle(), qubit()).matrix(); - break; - case PauliZ: - return Rz(angle(), qubit()).matrix(); - break; - default: - assert(false); + namespace Gates + { + + /// a type for runtime basis specification + enum Basis + { + PauliI = 0, + PauliX = 1, + PauliY = 3, + PauliZ = 2 + }; + + /// a general one qubit gate, storing the qubit number + class OneQubitGate + { + public: + OneQubitGate(unsigned q) : qubit_(q) + { + } + unsigned qubit() const + { + return qubit_; + } + + virtual TinyMatrix matrix() const + { + throw "Calling overriden function"; + } + + private: + unsigned qubit_; + }; + + /// a general one qubit roitation gate, storing the qubit number and angle + class RotationGate : public OneQubitGate + { + public: + RotationGate(double phi, unsigned q) : OneQubitGate(q), angle_(phi) + { + } + double angle() const + { + return angle_; + } + + private: + double angle_; + }; + + /// The Pauli X gate + class X : public OneQubitGate + { + public: + X(unsigned q) : OneQubitGate(q) + { + } + + std::string name() const + { + return "X"; + } + + TinyMatrix matrix() const + { + RealType mat[2][2] = { {0., 1.}, {1., 0.} }; + return TinyMatrix(mat); + } + }; + + /// The Pauli Y gate + class Y : public OneQubitGate + { + public: + Y(unsigned q) : OneQubitGate(q) + { + } + + std::string name() const + { + return "Y"; + } + + TinyMatrix matrix() const + { + using val_t = ComplexType; + val_t mat[2][2] = { {val_t(0.), val_t(0.)}, {val_t(0.), val_t(0.)} }; + mat[0][1] = val_t(0., -1.); + mat[1][0] = val_t(0., 1.); + return TinyMatrix(mat); + } + }; + + /// The Pauli Z gate + class Z : public OneQubitGate + { + public: + Z(unsigned q) : OneQubitGate(q) + { + } + + std::string name() const + { + return "Z"; + } + + TinyMatrix matrix() const + { + RealType diag[2] = { 1., -1. }; + return TinyMatrix(DiagMatrix(diag)); + } + }; + + /// The Hadamard gate + class H : public OneQubitGate + { + public: + H(unsigned q) : OneQubitGate(q) + { + } + + std::string name() const + { + return "H"; + } + + TinyMatrix matrix() const + { + RealType r = std::sqrt(0.5); + RealType mat[2][2] = { {r, r}, {r, -r} }; + return TinyMatrix(TinyMatrix(mat)); + } + }; + + /// The Y-version of a Hadamard gate + class HY : public OneQubitGate + { + public: + HY(unsigned q) : OneQubitGate(q) + { + } + + std::string name() const + { + return "HY"; + } + + TinyMatrix matrix() const + { + ComplexType r(std::sqrt(0.5), 0.); + ComplexType i(0., std::sqrt(0.5)); + ComplexType mat[2][2] = { {r, r}, {i, -i} }; + return TinyMatrix(mat); + } + }; + + /// The adjoint Y-version of a Hadamard gate + class AdjHY : public OneQubitGate + { + public: + AdjHY(unsigned q) : OneQubitGate(q) + { + } + + std::string name() const + { + return "AdjHY"; + } + + TinyMatrix matrix() const + { + ComplexType r(std::sqrt(0.5), 0.); + ComplexType i(0., std::sqrt(0.5)); + ComplexType mat[2][2] = { {r, -i}, {r, i} }; + return TinyMatrix(mat); + } + }; + + /// The S (phase) gate + class S : public OneQubitGate + { + public: + S(unsigned q) : OneQubitGate(q) + { + } + + std::string name() const + { + return "S"; + } + + TinyMatrix matrix() const + { + using val_t = ComplexType; + val_t diag[2] = { val_t(1.), val_t(0., 1.) }; + return TinyMatrix(DiagMatrix(diag)); + } + }; + + /// The adjoint of the S (phase) gate + class AdjS : public OneQubitGate + { + public: + AdjS(unsigned q) : OneQubitGate(q) + { + } + + std::string name() const + { + return "AdjS"; + } + + TinyMatrix matrix() const + { + using val_t = ComplexType; + val_t diag[2] = { val_t(1.), val_t(0., -1.) }; + return TinyMatrix(DiagMatrix(diag)); + } + }; + + /// The T (pi/8) gate + class T : public OneQubitGate + { + public: + T(unsigned q) : OneQubitGate(q) + { + } + + std::string name() const + { + return "T"; + } + + TinyMatrix matrix() const + { + using val_t = ComplexType; + RealType r = std::sqrt(0.5); + val_t diag[2] = { val_t(1.), val_t(r, r) }; + return TinyMatrix(DiagMatrix(diag)); + } + }; + + /// The T (pi/8) gate + class AdjT : public OneQubitGate + { + public: + AdjT(unsigned q) : OneQubitGate(q) + { + } + + std::string name() const + { + return "AdjT"; + } + + TinyMatrix matrix() const + { + using val_t = ComplexType; + RealType r = std::sqrt(0.5); + val_t diag[2] = { val_t(1.), val_t(r, -r) }; + return TinyMatrix(DiagMatrix(diag)); + } + }; + + /// The G gate + class G : public RotationGate + { + public: + G(RealType phi, unsigned q) : RotationGate(phi, q) + { + } + + std::string name() const + { + return "G"; + } + + TinyMatrix matrix() const + { + DiagMatrix d; + ComplexType arg(0., 0.5 * angle()); + d(0, 0) = d(1, 1) = std::exp(-arg); + return TinyMatrix(d); + } + }; + + /// The Rx gate + class Rx : public RotationGate + { + public: + Rx(RealType phi, unsigned q) : RotationGate(phi, q) + { + } + + std::string name() const + { + return "Rx"; + } + + TinyMatrix matrix() const + { + using val_t = ComplexType; + val_t s(0., -std::sin(0.5 * angle())); + val_t c = std::cos(0.5 * angle()); + val_t mat[2][2] = { {c, s}, {s, c} }; + return TinyMatrix(mat); + } + }; + + /// The Ry gate + class Ry : public RotationGate + { + public: + Ry(RealType phi, unsigned q) : RotationGate(phi, q) + { + } + + std::string name() const + { + return "Ry"; + } + + TinyMatrix matrix() const + { + RealType s = std::sin(0.5 * angle()); + RealType c = std::cos(0.5 * angle()); + RealType mat[2][2] = { {c, -s}, {s, c} }; + ; + return TinyMatrix(TinyMatrix(mat)); + } + }; + + /// The Rz gate + class Rz : public RotationGate + { + public: + Rz(RealType phi, unsigned q) : RotationGate(phi, q) + { + } + + std::string name() const + { + return "Rz"; + } + + TinyMatrix matrix() const + { + DiagMatrix d; + ComplexType arg(0., 0.5 * angle()); + d(0, 0) = std::exp(-arg); + d(1, 1) = std::exp(arg); + return TinyMatrix(d); + } + }; + + /// The R1 gate + class R1 : public RotationGate + { + public: + R1(RealType phi, unsigned q) : RotationGate(phi, q) + { + } + + std::string name() const + { + return "R1"; + } + + TinyMatrix matrix() const + { + DiagMatrix d; + ComplexType arg(0., angle()); + d(0, 0) = 1.; + d(1, 1) = std::exp(-arg); + return TinyMatrix(d); + } + }; + + /// The R1 gate + class R1Frac : public R1 + { + public: + R1Frac(int k, int n, unsigned q) : R1(M_PI* static_cast(k) / static_cast(1ll << n), q) + { + } + + std::string name() const + { + return "R1Frac"; + } + }; + + /// The R gate for rotation around an arbitrary basis + class R : public RotationGate + { + public: + R(Basis b, RealType phi, unsigned q) : RotationGate(phi, q), b_(b) + { + } + + std::string name() const + { + return "R"; + } + + TinyMatrix matrix() const + { + switch (b_) + { + case PauliI: + return G(angle(), qubit()).matrix(); + break; + case PauliX: + return Rx(angle(), qubit()).matrix(); + break; + case PauliY: + return Ry(angle(), qubit()).matrix(); + break; + case PauliZ: + return Rz(angle(), qubit()).matrix(); + break; + default: + assert(false); + } + // dummy return + return TinyMatrix(); + } + + private: + Basis b_; + }; + + class RFrac : public R + { + public: + RFrac(Basis b, int k, int n, unsigned q) : R(b, -2. * M_PI * static_cast(k) / static_cast(1ll << n), q) + { + } + std::string name() const + { + return "RFrac"; + } + }; + } } - // dummy return - return TinyMatrix(); - } - - private: - Basis b_; -}; - -class RFrac : public R -{ - public: - RFrac(Basis b, int k, int n, unsigned q) : R(b, -2. * M_PI * static_cast(k) / static_cast(1 << n), q) - { - } - std::string name() const - { - return "RFrac"; } -}; -} -} -} } diff --git a/src/Simulation/Native/src/simulator/kernels.hpp b/src/Simulation/Native/src/simulator/kernels.hpp index 68a710de36a..21447c5b535 100644 --- a/src/Simulation/Native/src/simulator/kernels.hpp +++ b/src/Simulation/Native/src/simulator/kernels.hpp @@ -398,7 +398,6 @@ void subsytemwavefunction_by_pivot(std::vector const& wfn, std::vector chunks; -#pragma omp parallel { #pragma omp single chunks = split_interval_in_chunks(max, omp_get_num_threads()); @@ -446,7 +445,6 @@ bool istensorproduct(std::vector const& wfn, std::size_t compl_st = compl_bits.to_ullong(); std::atomic go(true); -#pragma omp parallel { int thread_id = omp_get_thread_num(); if (thread_id < chunks.size() - 1) diff --git a/src/Simulation/Native/src/simulator/local_test.cpp b/src/Simulation/Native/src/simulator/local_test.cpp index 36820b89852..6f91d06b8fc 100644 --- a/src/Simulation/Native/src/simulator/local_test.cpp +++ b/src/Simulation/Native/src/simulator/local_test.cpp @@ -9,7 +9,6 @@ using namespace Microsoft::Quantum::SIMULATOR; - void test_exp() { SimulatorType sim; @@ -324,7 +323,6 @@ void test_extract_qubits_state() test_extract_qubits_cat_state(4, {1, 2}, {1, 3}); test_extract_qubits_cat_state(4, {1, 3}, {0, 1}); test_extract_qubits_cat_state(4, {2, 3}, {1, 2}); - test_extract_qubits_cat_state(12, {2, 4, 5, 6, 7}, {0, 1, 2}); test_extract_qubits_cat_state(6, {0, 1, 3}, {0, 1}); test_extract_qubits_cat_state(10, {0, 5}, {5, 6}); diff --git a/src/Simulation/Native/src/simulator/simulator.hpp b/src/Simulation/Native/src/simulator/simulator.hpp index 453fa4d1b89..41efd245de9 100644 --- a/src/Simulation/Native/src/simulator/simulator.hpp +++ b/src/Simulation/Native/src/simulator/simulator.hpp @@ -99,6 +99,7 @@ namespace SIMULATOR bool release(unsigned q) { recursive_lock_type l(mutex()); + flush(); bool allok = isclassical(q); if (allok) allok = (psi.getvalue(q)==false); diff --git a/src/Simulation/Native/src/simulator/simulatoravx512.cpp b/src/Simulation/Native/src/simulator/simulatoravx512.cpp new file mode 100644 index 00000000000..88bc438dccc --- /dev/null +++ b/src/Simulation/Native/src/simulator/simulatoravx512.cpp @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#define HAVE_INTRINSICS +#define HAVE_AVX512 +#define HAVE_FMA + +#include "simulator/simulator.hpp" + + +namespace sim = Microsoft::Quantum::SimulatorAVX512; + +MICROSOFT_QUANTUM_DECL Microsoft::Quantum::Simulator::SimulatorInterface* sim::createSimulator(unsigned maxlocal) +{ + return new sim::SimulatorType(maxlocal); +} diff --git a/src/Simulation/Native/src/simulator/wavefunction.hpp b/src/Simulation/Native/src/simulator/wavefunction.hpp index 1d3a390642c..748aef30787 100644 --- a/src/Simulation/Native/src/simulator/wavefunction.hpp +++ b/src/Simulation/Native/src/simulator/wavefunction.hpp @@ -12,6 +12,9 @@ #include #include #include +#include +#include +#include #include "types.hpp" #include "gates.hpp" @@ -20,41 +23,122 @@ namespace Microsoft { -namespace Quantum -{ -namespace SIMULATOR -{ - namespace detail + namespace Quantum { - inline std::size_t get_register(const std::vector& qs, std::size_t basis_state) - { - std::size_t result = 0; - for (unsigned i = 0; i < qs.size(); ++i) - result |= ((basis_state >> qs[i]) & 1) << i; - return result; - - } - - inline std::size_t set_register(const std::vector& qs, std::size_t qmask, std::size_t basis_state, std::size_t original = 0ull) + namespace SIMULATOR { - std::size_t result = original & ~qmask; - for (unsigned i = 0; i < qs.size(); ++i) - result |= ((basis_state >> i) & 1) << qs[i]; - return result; - } - } + namespace detail + { + inline std::size_t get_register(const std::vector& qs, std::size_t basis_state) + { + std::size_t result = 0; + for (unsigned i = 0; i < qs.size(); ++i) + result |= ((basis_state >> qs[i]) & 1) << i; + return result; + + } + + inline std::size_t set_register(const std::vector& qs, std::size_t qmask, std::size_t basis_state, std::size_t original = 0ull) + { + std::size_t result = original & ~qmask; + for (unsigned i = 0; i < qs.size(); ++i) + result |= ((basis_state >> i) & 1) << qs[i]; + return result; + } + } + + // Creating a gate wrapper datatype to represent a gate in a cluster + class GateWrapper { + public: + GateWrapper(std::vector controls, unsigned target, TinyMatrix mat) : controls_(controls), target_(target), mat_(mat) {} + std::vector get_controls() { return controls_; } + unsigned get_target() { return target_; } + TinyMatrix get_mat() { return mat_; } + private: + std::vector controls_; + unsigned target_; + TinyMatrix mat_; + }; + + // Creating a cluster datatype for new scheduling logic + class Cluster { + public: + Cluster(std::vector qids, std::vector gates) : qids_(qids), gates_(gates) {} + std::vector get_qids() { return qids_; } + std::vector get_gates() { return gates_; } + + void setQids(std::vector qids) { + qids_ = qids; + } + + void append_gates(std::vector gates) { + gates_.insert(gates_.end(), gates.begin(), gates.end()); + } + + size_t size() { + return gates_.size(); + } + + // Greedy method that finds next appropriate cluster + std::pair> next_cluster(std::vector& nextClusters, unsigned maxWidth) { + std::vector myUnion; // My qubits touched + Next qubits touched + std::vector myDiff; // New qubits touched by Next + std::vector myInter; // Old qubits touched by Next + std::vector allInter; // My qubits + All touched qubits + std::set myTouched(qids_.begin(), qids_.end()); // My qubits touched + std::set allTouched = myTouched; // All the qubits touched so far + + int lastNexts = (int)nextClusters.size() - 1; // nexts are in reverse order (from above) + for (int i = 0; i <= lastNexts; i++) { // Look at the clusters that follow us + auto nextQs = nextClusters[lastNexts-i].get_qids(); // Pull off one future cluster + std::sort(nextQs.begin(), nextQs.end()); // Has to be sorted for set operations + myUnion.clear(); + std::set_union(nextQs.begin(), nextQs.end(), // See what qubits we and the future cluster touch + myTouched.begin(), myTouched.end(), + std::back_inserter(myUnion)); + if (myUnion.size() <= maxWidth) { // It's a candiate if it's not beyond our allowed width + myDiff.clear(); + std::set_difference(nextQs.begin(), nextQs.end(), // Figure out if any of the future qubits aren't already seen by us + myTouched.begin(), myTouched.end(), + std::back_inserter(myDiff)); + allInter.clear(); + std::set_intersection(myDiff.begin(), myDiff.end(), // These are any new qubits that might have already been touched + allTouched.begin(), allTouched.end(), + std::back_inserter(allInter)); + if (allInter.size() == 0) { // If the new qubits are untouched... then this is allowed + auto cl = nextClusters[lastNexts-i]; + nextClusters.erase(nextClusters.begin() + (lastNexts-i)); // Remove the future cluster + return std::make_pair(cl, myUnion); // ... and add it to our cluster (done above) + } + } + myInter.clear(); + std::set_intersection(nextQs.begin(), nextQs.end(), // If a future cluster touches any of our qubits... we've hit a hard wall + myTouched.begin(), myTouched.end(), + std::back_inserter(myInter)); + if (myInter.size() != 0) break; + + allTouched.insert(nextQs.begin(), nextQs.end()); // Add in all qubits touched, and try the next cluster + } + Cluster defCl = Cluster({}, {}); // Couldn't find any more clusters to add + std::vector defVec = {}; + return std::make_pair(defCl, defVec); + } + private: + std::vector qids_; + std::vector gates_; + }; /// A wave function class to store and manipulate the state of qubits template class Wavefunction { - public: +public: using value_type = T; using qubit_t = unsigned; using RngEngine = std::mt19937; - constexpr qubit_t invalid_qubit() const { return std::numeric_limits::max();} + constexpr qubit_t invalid_qubit() const { return std::numeric_limits::max(); } /// allocate a wave function for zero qubits Wavefunction(unsigned /*ignore*/) : num_qubits_(0), wfn_(1, 1.), usage_(0) @@ -74,7 +158,7 @@ class Wavefunction ~Wavefunction() { - flush(); + flush(); } unsigned qubit(unsigned q) const @@ -90,10 +174,34 @@ class Wavefunction void flush() const { - fused_.flush(wfn_); + int maxSpan = fused_.maxSpan(); + auto clusters = make_clusters(maxSpan, gatelist_); //making clusters with gates in the queue + + if (clusters.size() == 0) { + fused_.flush(wfn_); + } + else { + // logic to flush gates in each cluster + for (int i = 0; i < clusters.size(); i++) { + Cluster cl = clusters.at(i); + + for (GateWrapper gate : cl.get_gates()) { + std::vector cs = gate.get_controls(); + if (cs.size() == 0) { + fused_.apply(wfn_, gate.get_mat(), qubit(gate.get_target())); + } + else { + fused_.apply_controlled(wfn_, gate.get_mat(), qubits(cs), qubit(gate.get_target())); + } + } + + fused_.flush(wfn_); + } + } + gatelist_.clear(); } - /// allocate a qubit and grow the wave function + /// allocate a qubit and grow the wave function unsigned allocate() { assert(usage_ != 2); @@ -113,7 +221,7 @@ class Wavefunction } } - /// allocate a qubit and grow the wave function + /// allocate a qubit and grow the wave function void allocateQubit(unsigned id) { assert(usage_ != 1); @@ -134,7 +242,7 @@ class Wavefunction /// \pre the qubit has to be in a classical state in the computational basis void release(qubit_t q) { - unsigned p = qubit(q); + unsigned p = qubit(q); //returns qubitmap_[q] flush(); kernels::collapse(wfn_, p, getvalue(q), true); for (int i = 0; i < qubitmap_.size(); ++i) @@ -196,9 +304,9 @@ class Wavefunction } void apply_controlled_exp(std::vector const& bs, - double phi, - std::vector const& cs, - std::vector const& qs) + double phi, + std::vector const& cs, + std::vector const& qs) { flush(); kernels::apply_controlled_exp(wfn_, bs, phi, qubits(cs), qubits(qs)); @@ -238,11 +346,66 @@ class Wavefunction rng_.seed(s); } + //method that makes clusters to be flushed + std::vector make_clusters(unsigned fuseSpan, std::vector gates) const { + std::vector curClusters; + + if (gates.size() > 0) { + //creating initial cluster containing one gate each + for (int i = 0; i < gates.size(); i++) { + std::vector qids; + std::vector controlQids = gates[i].get_controls(); + if (controlQids.size() > 0) { + qids = controlQids; + } + qids.push_back(gates[i].get_target()); + Cluster newCl = Cluster(qids, { gates[i] }); + curClusters.push_back(newCl); + } + //creating clusters using greedy algorithm + for (int i = 1; i < (int)fuseSpan + 1; i++) { // Build clusters of width 1,2,... + std::reverse(curClusters.begin(), curClusters.end()); // Keep everything in reverse order + auto prevClusters = curClusters; // Save away the last set of clusters built + curClusters.clear(); + auto prevCluster = prevClusters.back(); // Pop the first cluster + prevClusters.pop_back(); + while (prevClusters.size() > 0) { // While there are more clusters... + auto foundCompat = prevCluster.next_cluster(prevClusters, i); // See if we can accumlate anyone who follows + Cluster clusterFound = foundCompat.first; + std::vector foundTotQids = foundCompat.second; + if (clusterFound.get_gates().size() == 0 || // Can't append any more clusters to this one + (int)prevCluster.size() >= fused_.maxDepth()) { // ... or we're beyond max depth + curClusters.push_back(prevCluster); // Save this cluster + if (prevCluster.size() > 0) + { + prevCluster = prevClusters.back(); + prevClusters.pop_back(); + } + } + else { + prevCluster.setQids(foundTotQids); // New version of our cluster (appended) + prevCluster.append_gates(clusterFound.get_gates()); + } + } // Keep looking for clusters to add + curClusters.push_back(prevCluster); // Save the final cluster + } // Start all over with the next larger span + } + + return curClusters; + } + /// generic application of a gate template void apply(Gate const& g) { - fused_.apply(wfn_, g.matrix(), qubit(g)); + std::vector cs; + GateWrapper gateApplied = GateWrapper(cs, g.qubit(), g.matrix()); + gatelist_.push_back(gateApplied); + if (gatelist_.size() > 999) { + flush(); + } + + int doFlush = fused_.shouldFlush(wfn_, cs, g.qubit()); } /// generic application of a multiply controlled gate @@ -250,7 +413,13 @@ class Wavefunction void apply_controlled(std::vector cs, Gate const& g) { std::vector pcs = qubits(cs); - fused_.apply_controlled(wfn_, g.matrix(), pcs, qubit(g)); + GateWrapper gateApplied = GateWrapper(cs, g.qubit(), g.matrix()); + gatelist_.push_back(gateApplied); + if (gatelist_.size() > 999) { + flush(); + } + + int doFlush = fused_.shouldFlush(wfn_, cs, g.qubit()); } /// generic application of a controlled gate @@ -274,7 +443,8 @@ class Wavefunction template bool subsytemwavefunction(std::vector const& qs, std::vector& qubitswfn, double tolerance) { - return fused_.subsytemwavefunction(wfn_, qubits(qs), qubitswfn, tolerance); + flush(); // we have to flush before we can extract the state + return kernels::subsytemwavefunction(wfn_, qubits(qs), qubitswfn, tolerance); } @@ -338,8 +508,9 @@ class Wavefunction private: unsigned num_qubits_; // for convenience mutable WavefunctionStorage wfn_; // storing the wave function - std::vector qubitmap_; // mapping of logical to physical qubits - int usage_; + mutable std::vector qubitmap_; // mapping of logical to physical qubits + int usage_; + mutable std::vector gatelist_; // randomness support RngEngine rng_; diff --git a/src/Simulation/Native/src/util/Makefile b/src/Simulation/Native/src/util/Makefile new file mode 100644 index 00000000000..b980489f2aa --- /dev/null +++ b/src/Simulation/Native/src/util/Makefile @@ -0,0 +1,518 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"libraries\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# The main all target +all: cmake_check_build_system + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(CMAKE_COMMAND) -E cmake_progress_start /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/CMakeFiles /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/src/util/CMakeFiles/progress.marks + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/util/all + $(CMAKE_COMMAND) -E cmake_progress_start /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/util/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/util/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/util/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +src/util/CMakeFiles/tinymatrix_test.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/util/CMakeFiles/tinymatrix_test.dir/rule +.PHONY : src/util/CMakeFiles/tinymatrix_test.dir/rule + +# Convenience name for target. +tinymatrix_test: src/util/CMakeFiles/tinymatrix_test.dir/rule + +.PHONY : tinymatrix_test + +# fast build rule for target. +tinymatrix_test/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/tinymatrix_test.dir/build.make src/util/CMakeFiles/tinymatrix_test.dir/build +.PHONY : tinymatrix_test/fast + +# Convenience name for target. +src/util/CMakeFiles/bititerator_test.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/util/CMakeFiles/bititerator_test.dir/rule +.PHONY : src/util/CMakeFiles/bititerator_test.dir/rule + +# Convenience name for target. +bititerator_test: src/util/CMakeFiles/bititerator_test.dir/rule + +.PHONY : bititerator_test + +# fast build rule for target. +bititerator_test/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/bititerator_test.dir/build.make src/util/CMakeFiles/bititerator_test.dir/build +.PHONY : bititerator_test/fast + +# Convenience name for target. +src/util/CMakeFiles/bitops_test.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/util/CMakeFiles/bitops_test.dir/rule +.PHONY : src/util/CMakeFiles/bitops_test.dir/rule + +# Convenience name for target. +bitops_test: src/util/CMakeFiles/bitops_test.dir/rule + +.PHONY : bitops_test + +# fast build rule for target. +bitops_test/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/bitops_test.dir/build.make src/util/CMakeFiles/bitops_test.dir/build +.PHONY : bitops_test/fast + +# Convenience name for target. +src/util/CMakeFiles/openmp_test.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/util/CMakeFiles/openmp_test.dir/rule +.PHONY : src/util/CMakeFiles/openmp_test.dir/rule + +# Convenience name for target. +openmp_test: src/util/CMakeFiles/openmp_test.dir/rule + +.PHONY : openmp_test + +# fast build rule for target. +openmp_test/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/openmp_test.dir/build.make src/util/CMakeFiles/openmp_test.dir/build +.PHONY : openmp_test/fast + +# Convenience name for target. +src/util/CMakeFiles/cpuid_test.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/util/CMakeFiles/cpuid_test.dir/rule +.PHONY : src/util/CMakeFiles/cpuid_test.dir/rule + +# Convenience name for target. +cpuid_test: src/util/CMakeFiles/cpuid_test.dir/rule + +.PHONY : cpuid_test + +# fast build rule for target. +cpuid_test/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/cpuid_test.dir/build.make src/util/CMakeFiles/cpuid_test.dir/build +.PHONY : cpuid_test/fast + +# Convenience name for target. +src/util/CMakeFiles/argmaxnrm2_test.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/util/CMakeFiles/argmaxnrm2_test.dir/rule +.PHONY : src/util/CMakeFiles/argmaxnrm2_test.dir/rule + +# Convenience name for target. +argmaxnrm2_test: src/util/CMakeFiles/argmaxnrm2_test.dir/rule + +.PHONY : argmaxnrm2_test + +# fast build rule for target. +argmaxnrm2_test/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/argmaxnrm2_test.dir/build.make src/util/CMakeFiles/argmaxnrm2_test.dir/build +.PHONY : argmaxnrm2_test/fast + +# Convenience name for target. +src/util/CMakeFiles/diagmatrix_test.dir/rule: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f CMakeFiles/Makefile2 src/util/CMakeFiles/diagmatrix_test.dir/rule +.PHONY : src/util/CMakeFiles/diagmatrix_test.dir/rule + +# Convenience name for target. +diagmatrix_test: src/util/CMakeFiles/diagmatrix_test.dir/rule + +.PHONY : diagmatrix_test + +# fast build rule for target. +diagmatrix_test/fast: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/diagmatrix_test.dir/build.make src/util/CMakeFiles/diagmatrix_test.dir/build +.PHONY : diagmatrix_test/fast + +argmaxnrm2_test.o: argmaxnrm2_test.cpp.o + +.PHONY : argmaxnrm2_test.o + +# target to build an object file +argmaxnrm2_test.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/argmaxnrm2_test.dir/build.make src/util/CMakeFiles/argmaxnrm2_test.dir/argmaxnrm2_test.cpp.o +.PHONY : argmaxnrm2_test.cpp.o + +argmaxnrm2_test.i: argmaxnrm2_test.cpp.i + +.PHONY : argmaxnrm2_test.i + +# target to preprocess a source file +argmaxnrm2_test.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/argmaxnrm2_test.dir/build.make src/util/CMakeFiles/argmaxnrm2_test.dir/argmaxnrm2_test.cpp.i +.PHONY : argmaxnrm2_test.cpp.i + +argmaxnrm2_test.s: argmaxnrm2_test.cpp.s + +.PHONY : argmaxnrm2_test.s + +# target to generate assembly for a file +argmaxnrm2_test.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/argmaxnrm2_test.dir/build.make src/util/CMakeFiles/argmaxnrm2_test.dir/argmaxnrm2_test.cpp.s +.PHONY : argmaxnrm2_test.cpp.s + +bititerator_test.o: bititerator_test.cpp.o + +.PHONY : bititerator_test.o + +# target to build an object file +bititerator_test.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/bititerator_test.dir/build.make src/util/CMakeFiles/bititerator_test.dir/bititerator_test.cpp.o +.PHONY : bititerator_test.cpp.o + +bititerator_test.i: bititerator_test.cpp.i + +.PHONY : bititerator_test.i + +# target to preprocess a source file +bititerator_test.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/bititerator_test.dir/build.make src/util/CMakeFiles/bititerator_test.dir/bititerator_test.cpp.i +.PHONY : bititerator_test.cpp.i + +bititerator_test.s: bititerator_test.cpp.s + +.PHONY : bititerator_test.s + +# target to generate assembly for a file +bititerator_test.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/bititerator_test.dir/build.make src/util/CMakeFiles/bititerator_test.dir/bititerator_test.cpp.s +.PHONY : bititerator_test.cpp.s + +bitops_test.o: bitops_test.cpp.o + +.PHONY : bitops_test.o + +# target to build an object file +bitops_test.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/bitops_test.dir/build.make src/util/CMakeFiles/bitops_test.dir/bitops_test.cpp.o +.PHONY : bitops_test.cpp.o + +bitops_test.i: bitops_test.cpp.i + +.PHONY : bitops_test.i + +# target to preprocess a source file +bitops_test.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/bitops_test.dir/build.make src/util/CMakeFiles/bitops_test.dir/bitops_test.cpp.i +.PHONY : bitops_test.cpp.i + +bitops_test.s: bitops_test.cpp.s + +.PHONY : bitops_test.s + +# target to generate assembly for a file +bitops_test.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/bitops_test.dir/build.make src/util/CMakeFiles/bitops_test.dir/bitops_test.cpp.s +.PHONY : bitops_test.cpp.s + +cpuid_test.o: cpuid_test.cpp.o + +.PHONY : cpuid_test.o + +# target to build an object file +cpuid_test.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/cpuid_test.dir/build.make src/util/CMakeFiles/cpuid_test.dir/cpuid_test.cpp.o +.PHONY : cpuid_test.cpp.o + +cpuid_test.i: cpuid_test.cpp.i + +.PHONY : cpuid_test.i + +# target to preprocess a source file +cpuid_test.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/cpuid_test.dir/build.make src/util/CMakeFiles/cpuid_test.dir/cpuid_test.cpp.i +.PHONY : cpuid_test.cpp.i + +cpuid_test.s: cpuid_test.cpp.s + +.PHONY : cpuid_test.s + +# target to generate assembly for a file +cpuid_test.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/cpuid_test.dir/build.make src/util/CMakeFiles/cpuid_test.dir/cpuid_test.cpp.s +.PHONY : cpuid_test.cpp.s + +diagmatrix_test.o: diagmatrix_test.cpp.o + +.PHONY : diagmatrix_test.o + +# target to build an object file +diagmatrix_test.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/diagmatrix_test.dir/build.make src/util/CMakeFiles/diagmatrix_test.dir/diagmatrix_test.cpp.o +.PHONY : diagmatrix_test.cpp.o + +diagmatrix_test.i: diagmatrix_test.cpp.i + +.PHONY : diagmatrix_test.i + +# target to preprocess a source file +diagmatrix_test.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/diagmatrix_test.dir/build.make src/util/CMakeFiles/diagmatrix_test.dir/diagmatrix_test.cpp.i +.PHONY : diagmatrix_test.cpp.i + +diagmatrix_test.s: diagmatrix_test.cpp.s + +.PHONY : diagmatrix_test.s + +# target to generate assembly for a file +diagmatrix_test.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/diagmatrix_test.dir/build.make src/util/CMakeFiles/diagmatrix_test.dir/diagmatrix_test.cpp.s +.PHONY : diagmatrix_test.cpp.s + +openmp_test.o: openmp_test.cpp.o + +.PHONY : openmp_test.o + +# target to build an object file +openmp_test.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/openmp_test.dir/build.make src/util/CMakeFiles/openmp_test.dir/openmp_test.cpp.o +.PHONY : openmp_test.cpp.o + +openmp_test.i: openmp_test.cpp.i + +.PHONY : openmp_test.i + +# target to preprocess a source file +openmp_test.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/openmp_test.dir/build.make src/util/CMakeFiles/openmp_test.dir/openmp_test.cpp.i +.PHONY : openmp_test.cpp.i + +openmp_test.s: openmp_test.cpp.s + +.PHONY : openmp_test.s + +# target to generate assembly for a file +openmp_test.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/openmp_test.dir/build.make src/util/CMakeFiles/openmp_test.dir/openmp_test.cpp.s +.PHONY : openmp_test.cpp.s + +tinymatrix_test.o: tinymatrix_test.cpp.o + +.PHONY : tinymatrix_test.o + +# target to build an object file +tinymatrix_test.cpp.o: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/tinymatrix_test.dir/build.make src/util/CMakeFiles/tinymatrix_test.dir/tinymatrix_test.cpp.o +.PHONY : tinymatrix_test.cpp.o + +tinymatrix_test.i: tinymatrix_test.cpp.i + +.PHONY : tinymatrix_test.i + +# target to preprocess a source file +tinymatrix_test.cpp.i: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/tinymatrix_test.dir/build.make src/util/CMakeFiles/tinymatrix_test.dir/tinymatrix_test.cpp.i +.PHONY : tinymatrix_test.cpp.i + +tinymatrix_test.s: tinymatrix_test.cpp.s + +.PHONY : tinymatrix_test.s + +# target to generate assembly for a file +tinymatrix_test.cpp.s: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(MAKE) -f src/util/CMakeFiles/tinymatrix_test.dir/build.make src/util/CMakeFiles/tinymatrix_test.dir/tinymatrix_test.cpp.s +.PHONY : tinymatrix_test.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... tinymatrix_test" + @echo "... bititerator_test" + @echo "... install/local" + @echo "... bitops_test" + @echo "... openmp_test" + @echo "... cpuid_test" + @echo "... argmaxnrm2_test" + @echo "... test" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... list_install_components" + @echo "... diagmatrix_test" + @echo "... install" + @echo "... argmaxnrm2_test.o" + @echo "... argmaxnrm2_test.i" + @echo "... argmaxnrm2_test.s" + @echo "... bititerator_test.o" + @echo "... bititerator_test.i" + @echo "... bititerator_test.s" + @echo "... bitops_test.o" + @echo "... bitops_test.i" + @echo "... bitops_test.s" + @echo "... cpuid_test.o" + @echo "... cpuid_test.i" + @echo "... cpuid_test.s" + @echo "... diagmatrix_test.o" + @echo "... diagmatrix_test.i" + @echo "... diagmatrix_test.s" + @echo "... openmp_test.o" + @echo "... openmp_test.i" + @echo "... openmp_test.s" + @echo "... tinymatrix_test.o" + @echo "... tinymatrix_test.i" + @echo "... tinymatrix_test.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /mnt/c/depot/Git/qsharp-runtime/src/Simulation/Native && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/src/Simulation/Native/src/util/cpuid.hpp b/src/Simulation/Native/src/util/cpuid.hpp index cbce00cf2d1..705d65dec85 100644 --- a/src/Simulation/Native/src/util/cpuid.hpp +++ b/src/Simulation/Native/src/util/cpuid.hpp @@ -40,7 +40,7 @@ namespace Microsoft { #ifndef _MSC_VER //__builtin_cpu_init(); - return false; // __builtin_cpu_supports("avx512bw"); + return (__builtin_cpu_supports("avx512f") != 0 && __builtin_cpu_supports("avx512cd") != 0); #else int cpuInfo[4]; __cpuid(cpuInfo,0); diff --git a/src/Simulation/Native/src/version.hpp b/src/Simulation/Native/src/version.hpp new file mode 100644 index 00000000000..b55afdfd213 --- /dev/null +++ b/src/Simulation/Native/src/version.hpp @@ -0,0 +1,11 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#pragma once + +/* #undef MICROSOFT_QUANTUM_SIMULATOR_VERSION */ +/* #undef MICROSOFT_QUANTUM_SIMULATOR_VERSION_MAJOR */ +/* #undef MICROSOFT_QUANTUM_SIMULATOR_VERSION_MINOR */ +/* #undef MICROSOFT_QUANTUM_SIMULATOR_VERSION_PATCH */ +/* #undef MICROSOFT_QUANTUM_SIMULATOR_VERSION_STRING */ +#define MICROSOFT_QUANTUM_SIMULATOR_YEAR "2020" diff --git a/src/Simulation/Native/stats.xlsx b/src/Simulation/Native/stats.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..321f140939c1d9e2fcde12390545d7eab57e15b2 GIT binary patch literal 1035540 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

uV?o@b1%9W$UEJ1mu>uvY<?{yK7c2fZri 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%0A*HbsBg0nR(^%sP!?FM+1lKQE3Q(>S2K# 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⪋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Ν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

|qa@1||)oZUUrOUYmr7aR# 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 z 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

5>cIGSh=bRVjw{ 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%0AI=5h9nIji1XH}qp!tH6^Hk}0;& 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 z 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 L2$M+Y&m#U02|OLV literal 0 HcmV?d00001 diff --git a/src/Simulation/Native/tinymatrix_test b/src/Simulation/Native/tinymatrix_test new file mode 100644 index 0000000000000000000000000000000000000000..2c7100d1b31759f7ef16561360ecadce7a613044 GIT binary patch literal 68360 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 XlwO7FiIZUbL!xENvuq5uOYQ#vNQWrh literal 0 HcmV?d00001 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 ff3f9c59da5..ba121246d35 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 6e8467e5159..807c708c9b3 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/HoneywellExe/HoneywellExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj index 27cc28e4a65..957ffe6c2bd 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj @@ -1,4 +1,4 @@ - + Library diff --git a/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj b/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj index 8396c045f93..e85a1a19e96 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj index 83d11ae6541..5ac7dcf5f7e 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj @@ -1,4 +1,4 @@ - + Library diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj index df4d6e13a43..ebdaa51f4c0 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 false diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj index c01bc8d99bc..56799905ef0 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 c01bc8d99bc..56799905ef0 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/QCIExe/QCIExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj index fcc18c5313d..df2e5362b29 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj @@ -1,4 +1,4 @@ - + Library diff --git a/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/QsharpExe/QsharpExe.csproj index e74705db790..283f23eec8b 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/TargetedExe/TargetedExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj index 6e76c47fe19..682391cfdac 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.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 03d1c8a4a8e..22e1d8d901d 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 ca7ce29588f..6fa960aef8f 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 00cd0c2aeda..25a7446c6f1 100644 --- a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - + From d70a407eacf514dbdb1d3c18789b86bb15f247fd Mon Sep 17 00:00:00 2001 From: "Stefan J. Wernli" Date: Mon, 31 Aug 2020 23:48:58 -0700 Subject: [PATCH 5/5] Move copy of advantage log to CMakeLists (#364) --- build/test.ps1 | 1 - src/Simulation/Native/CMakeLists.txt | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/build/test.ps1 b/build/test.ps1 index e88962d2a17..6f6f0edf20a 100644 --- a/build/test.ps1 +++ b/build/test.ps1 @@ -8,7 +8,6 @@ if ($Env:ENABLE_NATIVE -ne "false") { Write-Host "##[info]Test Native simulator" pushd (Join-Path $PSScriptRoot "../src/Simulation/Native/build") cmake --build . --config $Env:BUILD_CONFIGURATION - cp ../advantage_44_4.log . ctest -C $Env:BUILD_CONFIGURATION --verbose if ($LastExitCode -ne 0) { Write-Host "##vso[task.logissue type=error;]Failed to test Native Simulator" diff --git a/src/Simulation/Native/CMakeLists.txt b/src/Simulation/Native/CMakeLists.txt index c56b6f95a3e..11aabbbc4d5 100644 --- a/src/Simulation/Native/CMakeLists.txt +++ b/src/Simulation/Native/CMakeLists.txt @@ -61,6 +61,8 @@ ENABLE_TESTING() # include directories add_subdirectory("src") +# Copy test file depedencies +configure_file(advantage_44_4.log advantage_44_4.log COPYONLY) # RPATH setting