From fd83040a2f27d38509ab9f7947cc778ff588e62d Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Wed, 21 Feb 2018 11:25:20 +0100 Subject: [PATCH] Build: add .Net 4.6.1 target --- build.fsx | 12 ++++++------ src/Benchmark/Benchmark.csproj | 2 +- src/Benchmark/Transforms/FFT.cs | 6 +++--- src/FSharp.Tests/FSharp.Tests.fsproj | 2 +- src/Numerics.Tests/Numerics.Tests.CUDA.csproj | 4 ++-- src/Numerics.Tests/Numerics.Tests.MKL.csproj | 4 ++-- .../Numerics.Tests.OpenBLAS.csproj | 4 ++-- src/Numerics.Tests/Numerics.Tests.csproj | 4 ++-- src/Numerics/Control.cs | 2 ++ .../IntegralTransforms/Fourier.RadixN.cs | 7 +++++++ src/Numerics/LinearAlgebra/Matrix.cs | 17 +++++++++++++---- src/Numerics/LinearAlgebra/Vector.cs | 17 +++++++++++++---- src/Numerics/Numerics.csproj | 2 +- 13 files changed, 55 insertions(+), 28 deletions(-) diff --git a/build.fsx b/build.fsx index 703b3998..34da221c 100644 --- a/build.fsx +++ b/build.fsx @@ -397,25 +397,25 @@ Target "TestNumericsCore1.1" (fun _ -> testNumerics "netcoreapp1.1") Target "TestNumericsCore2.0" (fun _ -> testNumerics "netcoreapp2.0") Target "TestNumericsNET40" (fun _ -> testNumerics "net40") Target "TestNumericsNET45" (fun _ -> testNumerics "net45") -Target "TestNumericsNET46" (fun _ -> testNumerics "net46") +Target "TestNumericsNET461" (fun _ -> testNumerics "net461") Target "TestNumericsNET47" (fun _ -> testNumerics "net47") "Build" ==> "TestNumericsCore1.1" ==> "TestNumerics" "Build" ==> "TestNumericsCore2.0" "Build" =?> ("TestNumericsNET40", isWindows) -"Build" =?> ("TestNumericsNET45", isWindows) ==> "TestNumerics" -"Build" =?> ("TestNumericsNET46", isWindows) +"Build" =?> ("TestNumericsNET45", isWindows) +"Build" =?> ("TestNumericsNET461", isWindows) ==> "TestNumerics" "Build" =?> ("TestNumericsNET47", isWindows) let testFsharp framework = testLibrary "src/FSharp.Tests" "FSharp.Tests.fsproj" framework Target "TestFsharp" DoNothing Target "TestFsharpCore1.1" (fun _ -> testFsharp "netcoreapp1.1") Target "TestFsharpCore2.0" (fun _ -> testFsharp "netcoreapp2.0") Target "TestFsharpNET45" (fun _ -> testFsharp "net45") -Target "TestFsharpNET46" (fun _ -> testFsharp "net46") +Target "TestFsharpNET461" (fun _ -> testFsharp "net461") Target "TestFsharpNET47" (fun _ -> testFsharp "net47") "Build" ==> "TestFsharpCore1.1" ==> "TestFsharp" "Build" ==> "TestFsharpCore2.0" -"Build" =?> ("TestFsharpNET45", isWindows) ==> "TestFsharp" -"Build" =?> ("TestFsharpNET46", isWindows) +"Build" =?> ("TestFsharpNET45", isWindows) +"Build" =?> ("TestFsharpNET461", isWindows) ==> "TestFsharp" "Build" =?> ("TestFsharpNET47", isWindows) Target "Test" DoNothing "TestNumerics" ==> "Test" diff --git a/src/Benchmark/Benchmark.csproj b/src/Benchmark/Benchmark.csproj index a0f04cca..0160062f 100644 --- a/src/Benchmark/Benchmark.csproj +++ b/src/Benchmark/Benchmark.csproj @@ -2,7 +2,7 @@ Exe - net46;netcoreapp2.0 + net461;netcoreapp2.0 2.0.5 false Benchmark diff --git a/src/Benchmark/Transforms/FFT.cs b/src/Benchmark/Transforms/FFT.cs index 4586c605..dc9009bb 100644 --- a/src/Benchmark/Transforms/FFT.cs +++ b/src/Benchmark/Transforms/FFT.cs @@ -16,15 +16,15 @@ namespace Benchmark.Transforms public Config() { Add( - new Job("CLR RyuJit x64", RunMode.Default, EnvMode.RyuJitX64) + new Job("CLR x64", RunMode.Default, EnvMode.RyuJitX64) { Env = { Runtime = Runtime.Clr, Platform = Platform.X64 } }, - new Job("CLR RyuJit x86", RunMode.Default, EnvMode.RyuJitX86) + new Job("CLR x86", RunMode.Default, EnvMode.LegacyJitX86) { Env = { Runtime = Runtime.Clr, Platform = Platform.X86 } }); -#if !NET46 +#if !NET461 Add(new Job("Core RyuJit x64", RunMode.Default, EnvMode.RyuJitX64) { Env = { Runtime = Runtime.Core, Platform = Platform.X64 } diff --git a/src/FSharp.Tests/FSharp.Tests.fsproj b/src/FSharp.Tests/FSharp.Tests.fsproj index da44ae82..6af1c7db 100644 --- a/src/FSharp.Tests/FSharp.Tests.fsproj +++ b/src/FSharp.Tests/FSharp.Tests.fsproj @@ -2,7 +2,7 @@ Exe - net45;netcoreapp1.1;netcoreapp2.0 + net461;netcoreapp1.1;netcoreapp2.0 2.0.5 false MathNet.Numerics.FSharp.Tests diff --git a/src/Numerics.Tests/Numerics.Tests.CUDA.csproj b/src/Numerics.Tests/Numerics.Tests.CUDA.csproj index 61158f32..faac784e 100644 --- a/src/Numerics.Tests/Numerics.Tests.CUDA.csproj +++ b/src/Numerics.Tests/Numerics.Tests.CUDA.csproj @@ -2,7 +2,7 @@ Exe - net45;netcoreapp1.1;netcoreapp2.0 + net461;netcoreapp1.1;netcoreapp2.0 2.0.5 false MathNet.Numerics.Tests.CUDA @@ -10,7 +10,7 @@ false NATIVE;CUDA - + diff --git a/src/Numerics.Tests/Numerics.Tests.MKL.csproj b/src/Numerics.Tests/Numerics.Tests.MKL.csproj index 2be9faa1..f7583bc6 100644 --- a/src/Numerics.Tests/Numerics.Tests.MKL.csproj +++ b/src/Numerics.Tests/Numerics.Tests.MKL.csproj @@ -2,7 +2,7 @@ Exe - net45;netcoreapp1.1;netcoreapp2.0 + net461;netcoreapp1.1;netcoreapp2.0 2.0.5 false MathNet.Numerics.Tests.MKL @@ -10,7 +10,7 @@ false NATIVE;MKL - + diff --git a/src/Numerics.Tests/Numerics.Tests.OpenBLAS.csproj b/src/Numerics.Tests/Numerics.Tests.OpenBLAS.csproj index 3abe01e7..05dbb84d 100644 --- a/src/Numerics.Tests/Numerics.Tests.OpenBLAS.csproj +++ b/src/Numerics.Tests/Numerics.Tests.OpenBLAS.csproj @@ -2,7 +2,7 @@ Exe - net45;netcoreapp1.1;netcoreapp2.0 + net461;netcoreapp1.1;netcoreapp2.0 2.0.5 false MathNet.Numerics.Tests.OpenBLAS @@ -10,7 +10,7 @@ false NATIVE;OPENBLAS - + diff --git a/src/Numerics.Tests/Numerics.Tests.csproj b/src/Numerics.Tests/Numerics.Tests.csproj index 6cdd42e3..0799fe9b 100644 --- a/src/Numerics.Tests/Numerics.Tests.csproj +++ b/src/Numerics.Tests/Numerics.Tests.csproj @@ -2,14 +2,14 @@ Exe - net45;netcoreapp1.1;netcoreapp2.0 + net461;netcoreapp1.1;netcoreapp2.0 2.0.5 false MathNet.Numerics.Tests MathNet.Numerics.Tests false - + diff --git a/src/Numerics/Control.cs b/src/Numerics/Control.cs index dc4e4e15..365e3b5a 100644 --- a/src/Numerics/Control.cs +++ b/src/Numerics/Control.cs @@ -303,6 +303,8 @@ namespace MathNet.Numerics sb.AppendLine("Built for .Net Standard 2.0"); #elif NET40 sb.AppendLine("Built for .Net Framework 4.0"); +#elif NET461 + sb.AppendLine("Built for .Net Framework 4.6.1"); #endif #if !NATIVE sb.AppendLine("No Native Provider Support"); diff --git a/src/Numerics/IntegralTransforms/Fourier.RadixN.cs b/src/Numerics/IntegralTransforms/Fourier.RadixN.cs index e8c9358d..416c7582 100644 --- a/src/Numerics/IntegralTransforms/Fourier.RadixN.cs +++ b/src/Numerics/IntegralTransforms/Fourier.RadixN.cs @@ -29,6 +29,7 @@ using System; using System.Numerics; +using System.Runtime.CompilerServices; using MathNet.Numerics.Properties; using MathNet.Numerics.Threading; @@ -74,6 +75,9 @@ namespace MathNet.Numerics.IntegralTransforms /// Fourier series exponent sign. /// Level Group Size. /// Index inside of the level. +#if !NET40 + [MethodImpl(MethodImplOptions.AggressiveInlining)] +#endif static void Radix2Step(Complex32[] samples, int exponentSign, int levelSize, int k) { // Twiddle Factor @@ -97,6 +101,9 @@ namespace MathNet.Numerics.IntegralTransforms /// Fourier series exponent sign. /// Level Group Size. /// Index inside of the level. +#if !NET40 + [MethodImpl(MethodImplOptions.AggressiveInlining)] +#endif static void Radix2Step(Complex[] samples, int exponentSign, int levelSize, int k) { // Twiddle Factor diff --git a/src/Numerics/LinearAlgebra/Matrix.cs b/src/Numerics/LinearAlgebra/Matrix.cs index f5f0a412..05f891c2 100644 --- a/src/Numerics/LinearAlgebra/Matrix.cs +++ b/src/Numerics/LinearAlgebra/Matrix.cs @@ -31,6 +31,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Runtime; +using System.Runtime.CompilerServices; using MathNet.Numerics.LinearAlgebra.Storage; using MathNet.Numerics.Properties; using MathNet.Numerics.Threading; @@ -92,12 +93,16 @@ namespace MathNet.Numerics.LinearAlgebra /// to get and set values without range checking. public T this[int row, int column] { +#if !NET40 + [MethodImpl(MethodImplOptions.AggressiveInlining)] +#endif [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] - //[MethodImpl(MethodImplOptions.AggressiveInlining)] .Net 4.5 only get { return Storage[row, column]; } +#if !NET40 + [MethodImpl(MethodImplOptions.AggressiveInlining)] +#endif [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] - //[MethodImpl(MethodImplOptions.AggressiveInlining)] .Net 4.5 only set { Storage[row, column] = value; } } @@ -113,8 +118,10 @@ namespace MathNet.Numerics.LinearAlgebra /// /// The requested element. /// +#if !NET40 + [MethodImpl(MethodImplOptions.AggressiveInlining)] +#endif [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] - //[MethodImpl(MethodImplOptions.AggressiveInlining)] .Net 4.5 only public T At(int row, int column) { return Storage.At(row, column); @@ -132,8 +139,10 @@ namespace MathNet.Numerics.LinearAlgebra /// /// The value to set the element to. /// +#if !NET40 + [MethodImpl(MethodImplOptions.AggressiveInlining)] +#endif [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] - //[MethodImpl(MethodImplOptions.AggressiveInlining)] .Net 4.5 only public void At(int row, int column, T value) { Storage.At(row, column, value); diff --git a/src/Numerics/LinearAlgebra/Vector.cs b/src/Numerics/LinearAlgebra/Vector.cs index d92a5210..3a883b44 100644 --- a/src/Numerics/LinearAlgebra/Vector.cs +++ b/src/Numerics/LinearAlgebra/Vector.cs @@ -31,6 +31,7 @@ using System; using System.Collections; using System.Collections.Generic; using System.Runtime; +using System.Runtime.CompilerServices; using MathNet.Numerics.LinearAlgebra.Storage; using MathNet.Numerics.Properties; @@ -76,20 +77,26 @@ namespace MathNet.Numerics.LinearAlgebra /// greater than the size of the vector. public T this[int index] { +#if !NET40 + [MethodImpl(MethodImplOptions.AggressiveInlining)] +#endif [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] - //[MethodImpl(MethodImplOptions.AggressiveInlining)] .Net 4.5 only get { return Storage[index]; } +#if !NET40 + [MethodImpl(MethodImplOptions.AggressiveInlining)] +#endif [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] - //[MethodImpl(MethodImplOptions.AggressiveInlining)] .Net 4.5 only set { Storage[index] = value; } } /// Gets the value at the given without range checking.. /// The index of the value to get or set. /// The value of the vector at the given . +#if !NET40 + [MethodImpl(MethodImplOptions.AggressiveInlining)] +#endif [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] - //[MethodImpl(MethodImplOptions.AggressiveInlining)] .Net 4.5 only public T At(int index) { return Storage.At(index); @@ -98,8 +105,10 @@ namespace MathNet.Numerics.LinearAlgebra /// Sets the at the given without range checking.. /// The index of the value to get or set. /// The value to set. +#if !NET40 + [MethodImpl(MethodImplOptions.AggressiveInlining)] +#endif [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] - //[MethodImpl(MethodImplOptions.AggressiveInlining)] .Net 4.5 only public void At(int index, T value) { Storage.At(index, value); diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj index aa735f1d..9a7adb84 100644 --- a/src/Numerics/Numerics.csproj +++ b/src/Numerics/Numerics.csproj @@ -2,7 +2,7 @@ Library - net40;netstandard1.3;netstandard2.0 + net40;net461;netstandard1.3;netstandard2.0 2.0.1 MathNet.Numerics MathNet.Numerics