Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Commit ebac702

Browse files
authored
Merging main to feature/sparse-simulator. (#913)
1 parent 43d4f99 commit ebac702

File tree

3 files changed

+35
-41
lines changed

3 files changed

+35
-41
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,3 +354,9 @@ out/
354354

355355
# Ignore drops from building native simulators.
356356
xplat
357+
src/Simulation/Native/win10/Microsoft.Quantum.Simulator.Runtime.dll
358+
src/Simulation/Native/linux/libMicrosoft.Quantum.Simulator.Runtime.so
359+
src/Simulation/Native/osx/libMicrosoft.Quantum.Simulator.Runtime.dylib
360+
src/Simulation/Native/win10/Microsoft.Quantum.Experimental.Simulators.Runtime.dll
361+
src/Simulation/Native/linux/Microsoft.Quantum.Experimental.Simulators.Runtime.dll
362+
src/Simulation/Native/osx/Microsoft.Quantum.Experimental.Simulators.Runtime.dll

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ To build on other platforms:
5858
* Install [CMake](https://cmake.org/install/)
5959
* Install [.NET Core 3 SDK](https://dotnet.microsoft.com/download)
6060
* On [WSL](https://docs.microsoft.com/en-us/windows/wsl/)/Linux:
61-
* Install `g++` (e.g. in Ubuntu 20.04 `sudo apt-get install g++`).
61+
* Install [`libomp`](https://openmp.llvm.org) needed for the native (C++) full-state simulator.
6262
* The build does not accept `dotnet-*-5.0` packages, install `dotnet-*-3.1`
6363
(`sudo apt-get install dotnet-sdk-3.1`). The possible result can be:
6464

Lines changed: 28 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,55 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2+
<Project InitialTargets="CopyNativeDlls" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33

44
<PropertyGroup>
55
<DocumentationFile>bin\$(BuildConfiguration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
66
<EnlistmentRoot>$([MSBuild]::NormalizeDirectory($(MSBuildThisFileDirectory)..\..\..\))</EnlistmentRoot>
7-
<NativeBuildPath>$([MSBuild]::NormalizePath($(EnlistmentRoot)src/Simulation/Native/build/drop))</NativeBuildPath>
7+
<NativeRootPath>$([MSBuild]::NormalizePath($(EnlistmentRoot)src/Simulation/Native))</NativeRootPath>
8+
<NativeBuildPath>$([MSBuild]::NormalizePath($(NativeRootPath)/build/drop))</NativeBuildPath>
89
<ExperimentalSimBuildPath>$([MSBuild]::NormalizePath($(EnlistmentRoot)src/Simulation/qdk_sim_rs/drop))</ExperimentalSimBuildPath>
910
</PropertyGroup>
1011

11-
<!-- Copy Microsoft.Quantum.Simulator.Runtime.dll from src/Simulation/Native build to where we can see and use it. -->
12-
<PropertyGroup Condition="'$(QsimDll)' == ''">
13-
<QsimDllMac>$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.dylib))</QsimDllMac>
14-
<QsimDllLinux>$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.so))</QsimDllLinux>
15-
<QsimDllWindows>$([MSBuild]::NormalizePath($(NativeBuildPath)/Microsoft.Quantum.Simulator.Runtime.dll))</QsimDllWindows>
16-
<QSimDll Condition="$([MSBuild]::IsOsPlatform('OSX'))">$(QsimDllMac)</QSimDll>
17-
<QSimDll Condition="$([MSBuild]::IsOsPlatform('Linux'))">$(QsimDllLinux)</QSimDll>
18-
<QSimDll Condition="$([MSBuild]::IsOsPlatform('Windows'))">$(QsimDllWindows)</QSimDll>
19-
<QSimDependencies Condition="$([MSBuild]::IsOsPlatform('OSX'))">$([MSBuild]::NormalizePath($(NativeBuildPath)/../../osx))</QSimDependencies>
20-
<QSimDependencies Condition="$([MSBuild]::IsOsPlatform('Linux'))">$([MSBuild]::NormalizePath($(NativeBuildPath)/../../linux))</QSimDependencies>
21-
<QSimDependencies Condition="$([MSBuild]::IsOsPlatform('Windows'))">$([MSBuild]::NormalizePath($(NativeBuildPath)/../../win10))</QSimDependencies>
22-
</PropertyGroup>
23-
2412
<ItemGroup>
2513
<ProjectReference Include="$(EnlistmentRoot)src\Simulation\Core\Microsoft.Quantum.Runtime.Core.csproj" />
2614
<ProjectReference Include="$(EnlistmentRoot)src\Simulation\Common\Microsoft.Quantum.Simulation.Common.csproj" IncludeInSimulatorPackage="true" />
2715
</ItemGroup>
2816

17+
<!-- Copy Native dlls from their build output to where we can see and use them -->
18+
<Target Name="CopyNativeDlls">
19+
<ItemGroup>
20+
<!-- Native simulator: -->
21+
<NativeDll Include="$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.dylib))" Dest="osx/libMicrosoft.Quantum.Simulator.Runtime.dylib" />
22+
<NativeDll Include="$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.so))" Dest="linux/libMicrosoft.Quantum.Simulator.Runtime.so" />
23+
<NativeDll Include="$([MSBuild]::NormalizePath($(NativeBuildPath)/Microsoft.Quantum.Simulator.Runtime.dll))" Dest="win10/Microsoft.Quantum.Simulator.Runtime.dll" />
24+
25+
<!-- Native Experimental simulator simulator: -->
26+
<NativeDll Include="$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.dylib))" Dest="osx/Microsoft.Quantum.Experimental.Simulators.Runtime.dll" />
27+
<NativeDll Include="$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.so))" Dest="linux/Microsoft.Quantum.Experimental.Simulators.Runtime.dll" />
28+
<NativeDll Include="$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/qdk_sim.dll))" Dest="win10/Microsoft.Quantum.Experimental.Simulators.Runtime.dll" />
29+
</ItemGroup>
30+
31+
<Copy
32+
SourceFiles="@(NativeDll)"
33+
DestinationFiles="@(NativeDll->'$([MSBuild]::NormalizePath($(NativeRootPath)/))%(Dest)')"
34+
ContinueOnError="WarnAndContinue"
35+
SkipUnchangedFiles="true" />
36+
</Target>
37+
2938
<ItemGroup>
30-
<None Include="$(QSimDll)" >
39+
<None Include="$(NativeRootPath)/win10/*" Condition="$([MSBuild]::IsOsPlatform('Windows'))">
3140
<Link>%(Filename)%(Extension)</Link>
3241
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
3342
<Visible>false</Visible>
3443
</None>
35-
<None Include="$(QSimDependencies)/**/*" >
44+
<None Include="$(NativeRootPath)/osx/*" Condition="$([MSBuild]::IsOsPlatform('OSX'))">
3645
<Link>%(Filename)%(Extension)</Link>
3746
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
3847
<Visible>false</Visible>
3948
</None>
40-
</ItemGroup>
41-
42-
<!-- Copy the experimental simulators from xplat/qdk_sim_rs build to where we can see and use it. -->
43-
<PropertyGroup Condition="'$(ExperimentalSimDll)' == ''">
44-
<ExperimentalSimDllMac>$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.dylib))</ExperimentalSimDllMac>
45-
<ExperimentalSimDllLinux>$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.so))</ExperimentalSimDllLinux>
46-
<ExperimentalSimDllWindows>$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/qdk_sim.dll))</ExperimentalSimDllWindows>
47-
<ExperimentalSimDll Condition="$([MSBuild]::IsOsPlatform('OSX'))">$(ExperimentalSimDllMac)</ExperimentalSimDll>
48-
<ExperimentalSimDll Condition="$([MSBuild]::IsOsPlatform('Linux'))">$(ExperimentalSimDllLinux)</ExperimentalSimDll>
49-
<ExperimentalSimDll Condition="$([MSBuild]::IsOsPlatform('Windows'))">$(ExperimentalSimDllWindows)</ExperimentalSimDll>
50-
</PropertyGroup>
51-
52-
<ItemGroup>
53-
<None Include="$(ExperimentalSimDll)" Condition="Exists('$(ExperimentalSimDll)')">
54-
<Link>Microsoft.Quantum.Experimental.Simulators.Runtime.dll</Link>
49+
<None Include="$(NativeRootPath)/linux/*" Condition="$([MSBuild]::IsOsPlatform('Linux'))">
50+
<Link>%(Filename)%(Extension)</Link>
5551
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
5652
<Visible>false</Visible>
5753
</None>
5854
</ItemGroup>
59-
60-
<Target Name="ValidateExperimentalSimDll" BeforeTargets="GetCopyToOutputDirectoryItems">
61-
<Warning
62-
Text="The experimental simulator DLL was not found at '$(ExperimentalSimDll)'; not including in simulators package."
63-
Condition="!Exists('$(ExperimentalSimDll)')"
64-
/>
65-
</Target>
66-
6755
</Project>

0 commit comments

Comments
 (0)