Browse Source

Bench: add memory and inlining diagnostics

pull/445/head
Christoph Ruegg 10 years ago
parent
commit
f8557d3f83
  1. 1
      paket.dependencies
  2. 6
      paket.lock
  3. 33
      src/Benchmark/Benchmark.csproj
  4. 8
      src/Benchmark/Program.cs
  5. 21
      src/Benchmark/Providers.cs
  6. 5
      src/Benchmark/Transforms/FFT.cs
  7. 1
      src/Benchmark/paket.references

1
paket.dependencies

@ -25,3 +25,4 @@ group Benchmark
source http://www.nuget.org/api/v2
framework: net45
nuget BenchmarkDotNet
nuget BenchmarkDotNet.Diagnostics.Windows

6
paket.lock

@ -14,6 +14,9 @@ NUGET
BenchmarkDotNet.Toolchains.Roslyn (>= 0.9.9)
BenchmarkDotNet.Core (0.9.9)
System.Threading.Tasks.Extensions (>= 4.0)
BenchmarkDotNet.Diagnostics.Windows (0.9.9)
BenchmarkDotNet (>= 0.9.9)
Microsoft.Diagnostics.Tracing.TraceEvent (>= 1.0.41)
BenchmarkDotNet.Toolchains.Roslyn (0.9.9)
BenchmarkDotNet.Core (>= 0.9.9)
Microsoft.CodeAnalysis.CSharp (>= 1.3.2)
@ -25,9 +28,10 @@ NUGET
System.Reflection.Metadata (>= 1.2)
Microsoft.CodeAnalysis.CSharp (1.3.2)
Microsoft.CodeAnalysis.Common (1.3.2)
Microsoft.Diagnostics.Tracing.TraceEvent (1.0.41)
System.Collections.Immutable (1.2)
System.Reflection.Metadata (1.2)
System.Collections.Immutable (>= 1.2)
System.Collections.Immutable (>= 1.1.37)
System.Threading.Tasks (4.0.11)
System.Threading.Tasks.Extensions (4.0)

33
src/Benchmark/Benchmark.csproj

@ -48,11 +48,12 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FFT.cs" />
<Compile Include="Transforms\FFT.cs" />
<Compile Include="LinearAlgebra\DenseVectorAdd.cs" />
<Compile Include="LinearAlgebra\DenseMatrixProduct.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Providers.cs" />
</ItemGroup>
<ItemGroup>
<None Include="paket.references" />
@ -64,6 +65,13 @@
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Choose>
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<PropertyGroup>
<__paket__Microsoft_Diagnostics_Tracing_TraceEvent_targets>Microsoft.Diagnostics.Tracing.TraceEvent</__paket__Microsoft_Diagnostics_Tracing_TraceEvent_targets>
</PropertyGroup>
</When>
</Choose>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
@ -96,6 +104,17 @@
</ItemGroup>
</When>
</Choose>
<Choose>
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="BenchmarkDotNet.Diagnostics.Windows">
<HintPath>..\..\packages\benchmark\BenchmarkDotNet.Diagnostics.Windows\lib\net45\BenchmarkDotNet.Diagnostics.Windows.dll</HintPath>
<Private>True</Private>
<Paket>True</Paket>
</Reference>
</ItemGroup>
</When>
</Choose>
<Choose>
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
@ -137,6 +156,17 @@
</ItemGroup>
</When>
</Choose>
<Choose>
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="Microsoft.Diagnostics.Tracing.TraceEvent">
<HintPath>..\..\packages\benchmark\Microsoft.Diagnostics.Tracing.TraceEvent\lib\net40\Microsoft.Diagnostics.Tracing.TraceEvent.dll</HintPath>
<Private>True</Private>
<Paket>True</Paket>
</Reference>
</ItemGroup>
</When>
</Choose>
<Choose>
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
@ -170,4 +200,5 @@
</ItemGroup>
</When>
</Choose>
<Import Project="..\..\packages\benchmark\Microsoft.Diagnostics.Tracing.TraceEvent\build\$(__paket__Microsoft_Diagnostics_Tracing_TraceEvent_targets).targets" Condition="Exists('..\..\packages\benchmark\Microsoft.Diagnostics.Tracing.TraceEvent\build\$(__paket__Microsoft_Diagnostics_Tracing_TraceEvent_targets).targets')" Label="Paket" />
</Project>

8
src/Benchmark/Program.cs

@ -1,4 +1,7 @@
using System;
using Benchmark.Transforms;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Diagnostics.Windows;
using BenchmarkDotNet.Running;
using MathNet.Numerics;
@ -16,7 +19,10 @@ namespace Benchmark
if (Control.TryUseNativeCUDA()) Console.WriteLine(Control.LinearAlgebraProvider);
if (Control.TryUseNativeOpenBLAS()) Console.WriteLine(Control.LinearAlgebraProvider);
BenchmarkRunner.Run<FFT>();
var config = ManualConfig.Create(DefaultConfig.Instance)
.With(new MemoryDiagnoser(), new InliningDiagnoser());
BenchmarkRunner.Run<FFT>(config);
//Benchmark(new LinearAlgebra.DenseVectorAdd(10000000,1), 10, "Large (10'000'000) - 10x1 iterations");
//Benchmark(new LinearAlgebra.DenseVectorAdd(100,1000), 100, "Small (100) - 100x1000 iterations");

21
src/Benchmark/Providers.cs

@ -0,0 +1,21 @@
using MathNet.Numerics;
namespace Benchmark
{
public static class Providers
{
public static void ForceNativeMKL()
{
//Control.NativeProviderPath = @"C:\Triage\NATIVE-Win\";
Control.NativeProviderPath = @"..\..\..\..\out\MKL\Windows\";
Control.UseNativeMKL();
}
public static void ForceOpenBLAS()
{
//Control.NativeProviderPath = @"C:\Triage\NATIVE-Win\";
Control.NativeProviderPath = @"..\..\..\..\out\OpenBLAS\Windows\";
Control.UseNativeOpenBLAS();
}
}
}

5
src/Benchmark/FFT.cs → src/Benchmark/Transforms/FFT.cs

@ -5,7 +5,7 @@ using BenchmarkDotNet.Attributes;
using MathNet.Numerics;
using MathNet.Numerics.IntegralTransforms;
namespace Benchmark
namespace Benchmark.Transforms
{
public class FFT
{
@ -27,8 +27,7 @@ namespace Benchmark
_data[n] = s;
}
Control.NativeProviderPath = @"C:\Triage\NATIVE-Win\";
Control.UseNativeMKL();
Providers.ForceNativeMKL();
}
[Benchmark(Baseline = true, OperationsPerInvoke = 2)]

1
src/Benchmark/paket.references

@ -1,2 +1,3 @@
group Benchmark
BenchmarkDotNet
BenchmarkDotNet.Diagnostics.Windows

Loading…
Cancel
Save