diff --git a/MathNet.Numerics.NativeProviders.sln b/MathNet.Numerics.NativeProviders.sln
index 0b0efacb..a83444e8 100644
--- a/MathNet.Numerics.NativeProviders.sln
+++ b/MathNet.Numerics.NativeProviders.sln
@@ -34,6 +34,14 @@ Global
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x64 = Release|x64
+ Release-CUDA|Any CPU = Release-CUDA|Any CPU
+ Release-CUDA|Mixed Platforms = Release-CUDA|Mixed Platforms
+ Release-CUDA|Win32 = Release-CUDA|Win32
+ Release-CUDA|x64 = Release-CUDA|x64
+ Release-MKL|Any CPU = Release-MKL|Any CPU
+ Release-MKL|Mixed Platforms = Release-MKL|Mixed Platforms
+ Release-MKL|Win32 = Release-MKL|Win32
+ Release-MKL|x64 = Release-MKL|x64
Release-Signed|Any CPU = Release-Signed|Any CPU
Release-Signed|Mixed Platforms = Release-Signed|Mixed Platforms
Release-Signed|Win32 = Release-Signed|Win32
@@ -54,6 +62,18 @@ Global
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|Win32.Build.0 = Release|Win32
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|x64.ActiveCfg = Release|x64
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|x64.Build.0 = Release|x64
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-CUDA|Any CPU.ActiveCfg = Release|Win32
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|Win32
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-CUDA|Mixed Platforms.Build.0 = Release|Win32
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-CUDA|Win32.ActiveCfg = Release|Win32
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-CUDA|x64.ActiveCfg = Release|x64
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-MKL|Any CPU.ActiveCfg = Release|Win32
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-MKL|Mixed Platforms.ActiveCfg = Release|Win32
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-MKL|Mixed Platforms.Build.0 = Release|Win32
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-MKL|Win32.ActiveCfg = Release|Win32
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-MKL|Win32.Build.0 = Release|Win32
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-MKL|x64.ActiveCfg = Release|x64
+ {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-MKL|x64.Build.0 = Release|x64
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-Signed|Any CPU.ActiveCfg = Release|Win32
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-Signed|Mixed Platforms.ActiveCfg = Release|Win32
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-Signed|Mixed Platforms.Build.0 = Release|Win32
@@ -69,6 +89,14 @@ Global
{2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release|Win32.ActiveCfg = Release|Win32
{2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release|x64.ActiveCfg = Release|x64
+ {2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-CUDA|Any CPU.ActiveCfg = Release|Win32
+ {2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|Win32
+ {2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-CUDA|Win32.ActiveCfg = Release|Win32
+ {2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-CUDA|x64.ActiveCfg = Release|x64
+ {2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-MKL|Any CPU.ActiveCfg = Release|Win32
+ {2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-MKL|Mixed Platforms.ActiveCfg = Release|Win32
+ {2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-MKL|Win32.ActiveCfg = Release|Win32
+ {2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-MKL|x64.ActiveCfg = Release|x64
{2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-Signed|Any CPU.ActiveCfg = Release|Win32
{2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-Signed|Mixed Platforms.ActiveCfg = Release|Win32
{2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-Signed|Win32.ActiveCfg = Release|Win32
@@ -91,6 +119,22 @@ Global
{B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release|Win32.Build.0 = Release|Any CPU
{B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release|x64.ActiveCfg = Release|Any CPU
{B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release|x64.Build.0 = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-CUDA|Any CPU.ActiveCfg = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-CUDA|Any CPU.Build.0 = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-CUDA|Mixed Platforms.Build.0 = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-CUDA|Win32.ActiveCfg = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-CUDA|Win32.Build.0 = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-CUDA|x64.ActiveCfg = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-CUDA|x64.Build.0 = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-MKL|Any CPU.ActiveCfg = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-MKL|Any CPU.Build.0 = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-MKL|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-MKL|Mixed Platforms.Build.0 = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-MKL|Win32.ActiveCfg = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-MKL|Win32.Build.0 = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-MKL|x64.ActiveCfg = Release|Any CPU
+ {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-MKL|x64.Build.0 = Release|Any CPU
{B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-Signed|Any CPU.ActiveCfg = Release-Signed|Any CPU
{B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-Signed|Any CPU.Build.0 = Release-Signed|Any CPU
{B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-Signed|Mixed Platforms.ActiveCfg = Release-Signed|Any CPU
@@ -109,6 +153,20 @@ Global
{3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release|Win32.ActiveCfg = Release|Any CPU
{3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release|x64.ActiveCfg = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-CUDA|Any CPU.ActiveCfg = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-CUDA|Any CPU.Build.0 = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-CUDA|Mixed Platforms.Build.0 = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-CUDA|Win32.ActiveCfg = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-CUDA|x64.ActiveCfg = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-MKL|Any CPU.ActiveCfg = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-MKL|Any CPU.Build.0 = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-MKL|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-MKL|Mixed Platforms.Build.0 = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-MKL|Win32.ActiveCfg = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-MKL|Win32.Build.0 = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-MKL|x64.ActiveCfg = Release|Any CPU
+ {3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-MKL|x64.Build.0 = Release|Any CPU
{3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-Signed|Any CPU.ActiveCfg = Release|Any CPU
{3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-Signed|Any CPU.Build.0 = Release|Any CPU
{3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
@@ -129,6 +187,18 @@ Global
{5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release|Win32.Build.0 = Release|Win32
{5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release|x64.ActiveCfg = Release|x64
{5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release|x64.Build.0 = Release|x64
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-CUDA|Any CPU.ActiveCfg = Release|Win32
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|Win32
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-CUDA|Mixed Platforms.Build.0 = Release|Win32
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-CUDA|Win32.ActiveCfg = Release|Win32
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-CUDA|Win32.Build.0 = Release|Win32
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-CUDA|x64.ActiveCfg = Release|x64
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-CUDA|x64.Build.0 = Release|x64
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-MKL|Any CPU.ActiveCfg = Release|Win32
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-MKL|Mixed Platforms.ActiveCfg = Release|Win32
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-MKL|Mixed Platforms.Build.0 = Release|Win32
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-MKL|Win32.ActiveCfg = Release|Win32
+ {5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-MKL|x64.ActiveCfg = Release|x64
{5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-Signed|Any CPU.ActiveCfg = Release|Win32
{5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-Signed|Mixed Platforms.ActiveCfg = Release|Win32
{5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-Signed|Mixed Platforms.Build.0 = Release|Win32
@@ -147,6 +217,20 @@ Global
{E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release|Win32.ActiveCfg = Release|Any CPU
{E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release|x64.ActiveCfg = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-CUDA|Any CPU.ActiveCfg = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-CUDA|Any CPU.Build.0 = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-CUDA|Mixed Platforms.Build.0 = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-CUDA|Win32.ActiveCfg = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-CUDA|Win32.Build.0 = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-CUDA|x64.ActiveCfg = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-CUDA|x64.Build.0 = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-MKL|Any CPU.ActiveCfg = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-MKL|Any CPU.Build.0 = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-MKL|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-MKL|Mixed Platforms.Build.0 = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-MKL|Win32.ActiveCfg = Release|Any CPU
+ {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-MKL|x64.ActiveCfg = Release|Any CPU
{E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-Signed|Any CPU.ActiveCfg = Release|Any CPU
{E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-Signed|Any CPU.Build.0 = Release|Any CPU
{E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
diff --git a/MathNet.Numerics.sln b/MathNet.Numerics.sln
index 58787f08..4eb3bebe 100644
--- a/MathNet.Numerics.sln
+++ b/MathNet.Numerics.sln
@@ -9,8 +9,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Readme", "Readme", "{C2F374
CONTRIBUTORS.md = CONTRIBUTORS.md
LICENSE.md = LICENSE.md
README.md = README.md
+ RELEASENOTES-CUDA.md = RELEASENOTES-CUDA.md
RELEASENOTES-Data.md = RELEASENOTES-Data.md
RELEASENOTES-MKL.md = RELEASENOTES-MKL.md
+ RELEASENOTES-OpenBLAS.md = RELEASENOTES-OpenBLAS.md
RELEASENOTES.md = RELEASENOTES.md
EndProjectSection
EndProject
@@ -27,6 +29,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{A4A66FA9
docs\tools\build-docs.fsx = docs\tools\build-docs.fsx
build.fsx = build.fsx
build\MathNet.Numerics.Extension.nuspec = build\MathNet.Numerics.Extension.nuspec
+ build\MathNet.Numerics.MKL.Win.targets = build\MathNet.Numerics.MKL.Win.targets
build\MathNet.Numerics.nuspec = build\MathNet.Numerics.nuspec
paket.dependencies = paket.dependencies
paket.lock = paket.lock
diff --git a/RELEASENOTES-CUDA.md b/RELEASENOTES-CUDA.md
new file mode 100644
index 00000000..0ab166d4
--- /dev/null
+++ b/RELEASENOTES-CUDA.md
@@ -0,0 +1,3 @@
+### 0.1.0-alpha - TBA
+* With Nvidia CUDA 7.0.28
+* Initial version
diff --git a/RELEASENOTES-OpenBLAS.md b/RELEASENOTES-OpenBLAS.md
new file mode 100644
index 00000000..2951cc2c
--- /dev/null
+++ b/RELEASENOTES-OpenBLAS.md
@@ -0,0 +1,2 @@
+### 0.1.0-alpha - TBA
+* Initial version
diff --git a/build.fsx b/build.fsx
index 505d73fd..f0a7eade 100644
--- a/build.fsx
+++ b/build.fsx
@@ -51,6 +51,13 @@ let mklPackageVersion = mklRelease.NugetVersion
let mklReleaseNotes = mklRelease.Notes |> List.map (fun l -> l.Replace("*","").Replace("`","")) |> toLines
trace (sprintf " Math.NET Numerics MKL Provider v%s" mklPackageVersion)
+let cudaRelease = LoadReleaseNotes "RELEASENOTES-CUDA.md"
+let cudaBuildPart = "0"
+let cudaAssemblyVersion = cudaRelease.AssemblyVersion + "." + cudaBuildPart
+let cudaPackageVersion = cudaRelease.NugetVersion
+let cudaReleaseNotes = cudaRelease.Notes |> List.map (fun l -> l.Replace("*","").Replace("`","")) |> toLines
+trace (sprintf " Math.NET Numerics CUDA Provider v%s" cudaPackageVersion)
+
let dataRelease = LoadReleaseNotes "RELEASENOTES-Data.md"
let dataBuildPart = "0"
let dataAssemblyVersion = dataRelease.AssemblyVersion + "." + dataBuildPart
@@ -187,10 +194,10 @@ let coreSignedBundle =
// NATIVE PROVIDER PACKAGES
-let mklWin32Pack =
- { Id = "MathNet.Numerics.MKL.Win-x86"
+let mklWinPack =
+ { Id = "MathNet.Numerics.MKL.Win"
Version = mklPackageVersion
- Title = "Math.NET Numerics - MKL Native Provider for Windows (x86)"
+ Title = "Math.NET Numerics - MKL Native Provider for Windows (x64 and x86)"
Summary = ""
Description = "Intel MKL native libraries for Math.NET Numerics. Requires an Intel MKL license if redistributed."
ReleaseNotes = mklReleaseNotes
@@ -198,15 +205,32 @@ let mklWin32Pack =
Authors = [ "Christoph Ruegg"; "Marcus Cuda"; "Jurgen Van Gael" ]
Dependencies =
[ { FrameworkVersion=""
- Dependencies=[ "MathNet.Numerics", "2.4.0" ] } ]
+ Dependencies=[ "MathNet.Numerics", "3.6.0" ] } ]
Files =
- [ @"..\..\out\MKL\Windows\x86\libiomp5md.dll", Some "content", None;
- @"..\..\out\MKL\Windows\x86\MathNet.Numerics.MKL.dll", Some "content", None ] }
+ [ @"MathNet.Numerics.MKL.Win.targets", Some "build", None;
+ @"..\..\out\MKL\Windows\x64\libiomp5md.dll", Some "build\x64", None;
+ @"..\..\out\MKL\Windows\x64\MathNet.Numerics.MKL.dll", Some "build\x64", None;
+ @"..\..\out\MKL\Windows\x86\libiomp5md.dll", Some "build\x86", None;
+ @"..\..\out\MKL\Windows\x86\MathNet.Numerics.MKL.dll", Some "build\x86", None ] }
+
+let mklWin32Pack =
+ { mklWinPack with
+ Id = "MathNet.Numerics.MKL.Win-x86"
+ Title = "Math.NET Numerics - MKL Native Provider for Windows (x86)"
+ Dependencies =
+ [ { FrameworkVersion=""
+ Dependencies=[ "MathNet.Numerics", "2.4.0" ] } ]
+ Files =
+ [ @"..\..\out\MKL\Windows\x86\libiomp5md.dll", Some "content", None;
+ @"..\..\out\MKL\Windows\x86\MathNet.Numerics.MKL.dll", Some "content", None ] }
let mklWin64Pack =
- { mklWin32Pack with
+ { mklWinPack with
Id = "MathNet.Numerics.MKL.Win-x64"
Title = "Math.NET Numerics - MKL Native Provider for Windows (x64)"
+ Dependencies =
+ [ { FrameworkVersion=""
+ Dependencies=[ "MathNet.Numerics", "2.4.0" ] } ]
Files =
[ @"..\..\out\MKL\Windows\x64\libiomp5md.dll", Some "content", None;
@"..\..\out\MKL\Windows\x64\MathNet.Numerics.MKL.dll", Some "content", None ] }
@@ -241,7 +265,7 @@ let mklWinBundle =
Title = "Math.NET Numerics MKL Native Provider for Windows"
ReleaseNotesFile = "RELEASENOTES-MKL.md"
FsLoader = false
- Packages = [ mklWin32Pack; mklWin64Pack ] }
+ Packages = [ mklWinPack; mklWin32Pack; mklWin64Pack ] }
let mklLinuxBundle =
{ Id = "MathNet.Numerics.MKL.Linux"
@@ -251,6 +275,37 @@ let mklLinuxBundle =
FsLoader = false
Packages = [ mklLinux32Pack; mklLinux64Pack ] }
+let cudaWinPack =
+ { Id = "MathNet.Numerics.CUDA.Win"
+ Version = cudaPackageVersion
+ Title = "Math.NET Numerics - CUDA Native Provider for Windows (x64 and x86)"
+ Summary = ""
+ Description = "Nvidia CUDA native libraries for Math.NET Numerics."
+ ReleaseNotes = cudaReleaseNotes
+ Tags = "math numeric statistics probability integration interpolation linear algebra matrix fft native cuda gpu"
+ Authors = [ "Matthew A Johnson"; "Christoph Ruegg" ]
+ Dependencies =
+ [ { FrameworkVersion=""
+ Dependencies=[ "MathNet.Numerics", "3.7.0" ] } ]
+ Files =
+ [ @"MathNet.Numerics.CUDA.Win.targets", Some "build", None;
+ @"..\..\out\CUDA\Windows\x64\cublas64_70.dll", Some "content", None;
+ @"..\..\out\CUDA\Windows\x64\cudart64_70.dll", Some "content", None;
+ @"..\..\out\CUDA\Windows\x64\cusolver64_70.dll", Some "content", None;
+ @"..\..\out\CUDA\Windows\x64\MathNet.Numerics.CUDA.dll", Some "content", None
+ @"..\..\out\CUDA\Windows\x86\cublas32_70.dll", Some "content", None;
+ @"..\..\out\CUDA\Windows\x86\cudart32_70.dll", Some "content", None;
+ @"..\..\out\CUDA\Windows\x86\cusolver32_70.dll", Some "content", None;
+ @"..\..\out\CUDA\Windows\x86\MathNet.Numerics.CUDA.dll", Some "content", None ] }
+
+let cudaWinBundle =
+ { Id = "MathNet.Numerics.CUDA.Win"
+ Version = mklPackageVersion
+ Title = "Math.NET Numerics CUDA Native Provider for Windows"
+ ReleaseNotesFile = "RELEASENOTES-CUDA.md"
+ FsLoader = false
+ Packages = [ cudaWinPack ] }
+
// DATA EXTENSION PACKAGES
@@ -309,7 +364,7 @@ Target "Clean" (fun _ ->
CleanDirs [ "out/lib-debug/Net35"; "out/lib-debug/Net40"; "out/lib-debug/Profile7"; "out/lib-debug/Profile47"; "out/lib-debug/Profile78"; "out/lib-debug/Profile259"; "out/lib-debug/Profile328" ]
CleanDirs [ "out/test-debug/Net35"; "out/test-debug/Net40"; "out/test-debug/Profile7"; "out/test-debug/Profile47"; "out/test-debug/Profile78"; "out/test-debug/Profile259"; "out/test-debug/Profile328" ]
CleanDirs [ "out/lib-signed/Net40"; "out/test-signed/Net40" ] // Signed Build
- CleanDirs [ "out/MKL"; "out/ATLAS" ] // Native Providers
+ CleanDirs [ "out/MKL"; "out/ATLAS"; "out/CUDA"; "out/OpenBLAS" ] // Native Providers
CleanDirs [ "out/Data" ]) // Data Extensions
Target "ApplyVersion" (fun _ ->
@@ -328,7 +383,11 @@ Target "ApplyVersion" (fun _ ->
ReplaceInFile
(regex_replace @"\d+\.\d+\.\d+\.\d+" mklAssemblyVersion
>> regex_replace @"\d+,\d+,\d+,\d+" (replace "." "," mklAssemblyVersion))
- "src/NativeProviders/Common/resource.rc")
+ "src/NativeProviders/MKL/resource.rc"
+ ReplaceInFile
+ (regex_replace @"\d+\.\d+\.\d+\.\d+" cudaAssemblyVersion
+ >> regex_replace @"\d+,\d+,\d+,\d+" (replace "." "," cudaAssemblyVersion))
+ "src/NativeProviders/CUDA/resource.rc")
Target "Prepare" DoNothing
"Start"
@@ -344,8 +403,8 @@ Target "Prepare" DoNothing
let buildConfig config subject = MSBuild "" (if hasBuildParam "incremental" then "Build" else "Rebuild") [ "Configuration", config ] subject |> ignore
let build subject = buildConfig "Release" subject
let buildSigned subject = buildConfig "Release-Signed" subject
-let nativeWin32Build subject = MSBuild "" (if hasBuildParam "incremental" then "Build" else "Rebuild") [("Configuration","Release"); ("Platform","Win32")] subject |> ignore
-let nativeWin64Build subject = MSBuild "" (if hasBuildParam "incremental" then "Build" else "Rebuild") [("Configuration","Release"); ("Platform","x64")] subject |> ignore
+let buildConfig32 config subject = MSBuild "" (if hasBuildParam "incremental" then "Build" else "Rebuild") [("Configuration", config); ("Platform","Win32")] subject |> ignore
+let buildConfig64 config subject = MSBuild "" (if hasBuildParam "incremental" then "Build" else "Rebuild") [("Configuration", config); ("Platform","x64")] subject |> ignore
Target "BuildMain" (fun _ -> build !! "MathNet.Numerics.sln")
Target "BuildNet35" (fun _ -> build !! "MathNet.Numerics.Net35Only.sln")
@@ -360,13 +419,18 @@ Target "Build" DoNothing
=?> ("BuildMain", not (hasBuildParam "all" || hasBuildParam "release" || hasBuildParam "net35" || hasBuildParam "signed"))
==> "Build"
-Target "MklWin32Build" (fun _ -> nativeWin32Build !! "MathNet.Numerics.NativeProviders.sln")
-Target "MklWin64Build" (fun _ -> nativeWin64Build !! "MathNet.Numerics.NativeProviders.sln")
-
+Target "MklWin32Build" (fun _ -> buildConfig32 "Release-MKL" !! "MathNet.Numerics.NativeProviders.sln")
+Target "MklWin64Build" (fun _ -> buildConfig64 "Release-MKL" !! "MathNet.Numerics.NativeProviders.sln")
Target "MklWinBuild" DoNothing
"Prepare" ==> "MklWin32Build" ==> "MklWinBuild"
"Prepare" ==> "MklWin64Build" ==> "MklWinBuild"
+Target "CudaWin32Build" (fun _ -> buildConfig32 "Release-CUDA" !! "MathNet.Numerics.NativeProviders.sln")
+Target "CudaWin64Build" (fun _ -> buildConfig64 "Release-CUDA" !! "MathNet.Numerics.NativeProviders.sln")
+Target "CudaWinBuild" DoNothing
+"Prepare" ==> "CudaWin32Build" ==> "CudaWinBuild"
+"Prepare" ==> "CudaWin64Build" ==> "CudaWinBuild"
+
Target "DataBuild" (fun _ -> build !! "MathNet.Numerics.Data.sln")
"Prepare" ==> "DataBuild"
diff --git a/build/MathNet.Numerics.CUDA.Win.targets b/build/MathNet.Numerics.CUDA.Win.targets
new file mode 100644
index 00000000..74be39a2
--- /dev/null
+++ b/build/MathNet.Numerics.CUDA.Win.targets
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(BuildDependsOn);
+ CopyMathNetInteropFiles;
+
+
+ $(CleanDependsOn);
+ CleanMathNetInteropFiles;
+
+
+
diff --git a/build/MathNet.Numerics.MKL.Win.targets b/build/MathNet.Numerics.MKL.Win.targets
new file mode 100644
index 00000000..870de2b4
--- /dev/null
+++ b/build/MathNet.Numerics.MKL.Win.targets
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(BuildDependsOn);
+ CopyMathNetInteropFiles;
+
+
+ $(CleanDependsOn);
+ CleanMathNetInteropFiles;
+
+
+
diff --git a/src/NativeProviders/Windows/CUDA/CUDAWrapper.vcxproj b/src/NativeProviders/Windows/CUDA/CUDAWrapper.vcxproj
index 45f99146..476349ff 100644
--- a/src/NativeProviders/Windows/CUDA/CUDAWrapper.vcxproj
+++ b/src/NativeProviders/Windows/CUDA/CUDAWrapper.vcxproj
@@ -105,7 +105,7 @@
true
cublas.lib;cublas_device.lib;%(AdditionalDependencies)
- $(CUDA_PATH)\lib\x64;%(AdditionalLibraryDirectories)
+ $(CUDA_PATH)\lib\Win32;%(AdditionalLibraryDirectories)
@@ -141,7 +141,7 @@ copy "$(CUDA_PATH)\bin\cudart64_70.dll" $(OutputPath)
true
true
cublas.lib;%(AdditionalDependencies)
- $(CUDA_PATH)\lib\x64;%(AdditionalLibraryDirectories)
+ $(CUDA_PATH)\lib\Win32;%(AdditionalLibraryDirectories)