Add deterministic compile option

This commit is contained in:
Asriel Camora
2024-03-18 01:36:47 -07:00
parent 492d632d25
commit 7401334c2f
6 changed files with 41 additions and 11 deletions
+2 -2
View File
@@ -7,7 +7,7 @@
<Nullable>enable</Nullable>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<Platforms>x64</Platforms>
<Configurations>Debug;Release</Configurations>
<Configurations>Debug;Release;Deterministic</Configurations>
</PropertyGroup>
<ItemGroup>
@@ -32,7 +32,7 @@
<ProjectReference Include="..\Solver\Craftimizer.Solver.csproj" />
</ItemGroup>
<PropertyGroup Condition="'$(IS_BENCH)'=='1'">
<PropertyGroup Condition="'$(IS_BENCH)'=='1' Or '$(Configuration)'=='Deterministic'">
<DefineConstants>$(DefineConstants);IS_DETERMINISTIC</DefineConstants>
</PropertyGroup>
+24 -2
View File
@@ -2,15 +2,37 @@ using Craftimizer.Simulator;
using Craftimizer.Simulator.Actions;
using Craftimizer.Solver;
using ObjectLayoutInspector;
using System.Diagnostics;
namespace Craftimizer.Benchmark;
internal static class Program
{
private static Task Main(string[] args)
private static void Main(string[] args)
{
#if IS_DETERMINISTIC
var b = new Bench();
var initConfig = Bench.Configs.First();
var initState = Bench.States.First();
var config = new MCTSConfig(initConfig.Data);
var s = Stopwatch.StartNew();
for (var i = 0; i < 100; ++i)
{
var solver = new MCTS(config, initState);
var progress = 0;
solver.Search(initConfig.Data.Iterations, ref progress, CancellationToken.None);
var solution = solver.Solution();
Console.WriteLine($"{i+1}");
}
s.Stop();
Console.WriteLine($"{s.Elapsed.TotalMilliseconds:0.00}ms");
#else
RunBench(args);
return Task.CompletedTask;
#endif
// return RunOther();
}
+9
View File
@@ -22,27 +22,36 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Deterministic|x64 = Deterministic|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.ActiveCfg = Debug|x64
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.Build.0 = Debug|x64
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Deterministic|x64.ActiveCfg = Release|x64
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.ActiveCfg = Release|x64
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.Build.0 = Release|x64
{057C4B64-4D99-4847-9BCF-966571CAE57C}.Debug|x64.ActiveCfg = Debug|x64
{057C4B64-4D99-4847-9BCF-966571CAE57C}.Debug|x64.Build.0 = Debug|x64
{057C4B64-4D99-4847-9BCF-966571CAE57C}.Deterministic|x64.ActiveCfg = Deterministic|x64
{057C4B64-4D99-4847-9BCF-966571CAE57C}.Deterministic|x64.Build.0 = Deterministic|x64
{057C4B64-4D99-4847-9BCF-966571CAE57C}.Release|x64.ActiveCfg = Release|x64
{057C4B64-4D99-4847-9BCF-966571CAE57C}.Release|x64.Build.0 = Release|x64
{172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Debug|x64.ActiveCfg = Debug|x64
{172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Debug|x64.Build.0 = Debug|x64
{172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Deterministic|x64.ActiveCfg = Deterministic|x64
{172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Deterministic|x64.Build.0 = Deterministic|x64
{172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Release|x64.ActiveCfg = Release|x64
{172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Release|x64.Build.0 = Release|x64
{2B0EA452-6DFC-48DB-9049-EA782E600C21}.Debug|x64.ActiveCfg = Debug|x64
{2B0EA452-6DFC-48DB-9049-EA782E600C21}.Debug|x64.Build.0 = Debug|x64
{2B0EA452-6DFC-48DB-9049-EA782E600C21}.Deterministic|x64.ActiveCfg = Deterministic|x64
{2B0EA452-6DFC-48DB-9049-EA782E600C21}.Deterministic|x64.Build.0 = Deterministic|x64
{2B0EA452-6DFC-48DB-9049-EA782E600C21}.Release|x64.ActiveCfg = Release|x64
{2B0EA452-6DFC-48DB-9049-EA782E600C21}.Release|x64.Build.0 = Release|x64
{C3AEA981-9DA8-405C-995B-86528493891B}.Debug|x64.ActiveCfg = Debug|x64
{C3AEA981-9DA8-405C-995B-86528493891B}.Debug|x64.Build.0 = Debug|x64
{C3AEA981-9DA8-405C-995B-86528493891B}.Deterministic|x64.ActiveCfg = Deterministic|x64
{C3AEA981-9DA8-405C-995B-86528493891B}.Release|x64.ActiveCfg = Release|x64
{C3AEA981-9DA8-405C-995B-86528493891B}.Release|x64.Build.0 = Release|x64
EndGlobalSection
+2 -3
View File
@@ -3,10 +3,9 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>12.0</LangVersion>
<Nullable>enable</Nullable>
<Platforms>x64</Platforms>
<Configurations>Debug;Release</Configurations>
<Configurations>Debug;Release;Deterministic</Configurations>
</PropertyGroup>
<ItemGroup>
@@ -16,7 +15,7 @@
</PackageReference>
</ItemGroup>
<PropertyGroup Condition="'$(IS_BENCH)'=='1'">
<PropertyGroup Condition="'$(IS_BENCH)'=='1' Or '$(Configuration)'=='Deterministic'">
<DefineConstants>$(DefineConstants);IS_DETERMINISTIC</DefineConstants>
</PropertyGroup>
+2 -2
View File
@@ -6,7 +6,7 @@
<Nullable>enable</Nullable>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<Platforms>x64</Platforms>
<Configurations>Debug;Release</Configurations>
<Configurations>Debug;Release;Deterministic</Configurations>
</PropertyGroup>
<ItemGroup>
@@ -26,7 +26,7 @@
</AssemblyAttribute>
</ItemGroup>
<PropertyGroup Condition="'$(IS_BENCH)'=='1'">
<PropertyGroup Condition="'$(IS_BENCH)'=='1' Or '$(Configuration)'=='Deterministic'">
<DefineConstants>$(DefineConstants);IS_DETERMINISTIC</DefineConstants>
</PropertyGroup>
+2 -2
View File
@@ -7,7 +7,7 @@
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<Platforms>x64</Platforms>
<Configurations>Debug;Release</Configurations>
<Configurations>Debug;Release;Deterministic</Configurations>
</PropertyGroup>
<ItemGroup>
@@ -25,7 +25,7 @@
<ProjectReference Include="..\Solver\Craftimizer.Solver.csproj" />
</ItemGroup>
<PropertyGroup Condition="'$(IS_BENCH)'=='1'">
<PropertyGroup Condition="'$(IS_BENCH)'=='1' Or '$(Configuration)'=='Deterministic'">
<DefineConstants>$(DefineConstants);IS_DETERMINISTIC</DefineConstants>
</PropertyGroup>