Browse Source

Native: prepare build integration for CUDA native provider

cuda
Christoph Ruegg 12 years ago
parent
commit
d96e72df1a
  1. 84
      MathNet.Numerics.NativeProviders.sln
  2. 3
      MathNet.Numerics.sln
  3. 3
      RELEASENOTES-CUDA.md
  4. 2
      RELEASENOTES-OpenBLAS.md
  5. 94
      build.fsx
  6. 74
      build/MathNet.Numerics.CUDA.Win.targets
  7. 74
      build/MathNet.Numerics.MKL.Win.targets
  8. 4
      src/NativeProviders/Windows/CUDA/CUDAWrapper.vcxproj

84
MathNet.Numerics.NativeProviders.sln

@ -34,6 +34,14 @@ Global
Release|Mixed Platforms = Release|Mixed Platforms Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32 Release|Win32 = Release|Win32
Release|x64 = Release|x64 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|Any CPU = Release-Signed|Any CPU
Release-Signed|Mixed Platforms = Release-Signed|Mixed Platforms Release-Signed|Mixed Platforms = Release-Signed|Mixed Platforms
Release-Signed|Win32 = Release-Signed|Win32 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|Win32.Build.0 = Release|Win32
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|x64.ActiveCfg = Release|x64 {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|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|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.ActiveCfg = Release|Win32
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-Signed|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Release|Win32
{2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release|Win32.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|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|Any CPU.ActiveCfg = Release|Win32
{2362B8AC-C52B-45E4-A1BF-C682A4DB4220}.Release-Signed|Mixed Platforms.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 {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|Win32.Build.0 = Release|Any CPU
{B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release|x64.ActiveCfg = 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|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.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|Any CPU.Build.0 = Release-Signed|Any CPU
{B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-Signed|Mixed Platforms.ActiveCfg = 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|Mixed Platforms.Build.0 = Release|Any CPU
{3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release|Win32.ActiveCfg = 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|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.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|Any CPU.Build.0 = Release|Any CPU
{3515A344-AB5F-41C7-A14C-04A79B3FFAB1}.Release-Signed|Mixed Platforms.ActiveCfg = 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|Win32.Build.0 = Release|Win32
{5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release|x64.ActiveCfg = Release|x64 {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|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|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.ActiveCfg = Release|Win32
{5A52B796-7F41-4C90-8DE2-F3F391C4482C}.Release-Signed|Mixed Platforms.Build.0 = 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|Mixed Platforms.Build.0 = Release|Any CPU
{E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release|Win32.ActiveCfg = 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|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.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|Any CPU.Build.0 = Release|Any CPU
{E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-Signed|Mixed Platforms.ActiveCfg = Release|Any CPU {E79C0395-01DC-4BC9-B86C-ED45790892C5}.Release-Signed|Mixed Platforms.ActiveCfg = Release|Any CPU

3
MathNet.Numerics.sln

@ -9,8 +9,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Readme", "Readme", "{C2F374
CONTRIBUTORS.md = CONTRIBUTORS.md CONTRIBUTORS.md = CONTRIBUTORS.md
LICENSE.md = LICENSE.md LICENSE.md = LICENSE.md
README.md = README.md README.md = README.md
RELEASENOTES-CUDA.md = RELEASENOTES-CUDA.md
RELEASENOTES-Data.md = RELEASENOTES-Data.md RELEASENOTES-Data.md = RELEASENOTES-Data.md
RELEASENOTES-MKL.md = RELEASENOTES-MKL.md RELEASENOTES-MKL.md = RELEASENOTES-MKL.md
RELEASENOTES-OpenBLAS.md = RELEASENOTES-OpenBLAS.md
RELEASENOTES.md = RELEASENOTES.md RELEASENOTES.md = RELEASENOTES.md
EndProjectSection EndProjectSection
EndProject EndProject
@ -27,6 +29,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{A4A66FA9
docs\tools\build-docs.fsx = docs\tools\build-docs.fsx docs\tools\build-docs.fsx = docs\tools\build-docs.fsx
build.fsx = build.fsx build.fsx = build.fsx
build\MathNet.Numerics.Extension.nuspec = build\MathNet.Numerics.Extension.nuspec 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 build\MathNet.Numerics.nuspec = build\MathNet.Numerics.nuspec
paket.dependencies = paket.dependencies paket.dependencies = paket.dependencies
paket.lock = paket.lock paket.lock = paket.lock

3
RELEASENOTES-CUDA.md

@ -0,0 +1,3 @@
### 0.1.0-alpha - TBA
* With Nvidia CUDA 7.0.28
* Initial version

2
RELEASENOTES-OpenBLAS.md

@ -0,0 +1,2 @@
### 0.1.0-alpha - TBA
* Initial version

94
build.fsx

@ -51,6 +51,13 @@ let mklPackageVersion = mklRelease.NugetVersion
let mklReleaseNotes = mklRelease.Notes |> List.map (fun l -> l.Replace("*","").Replace("`","")) |> toLines let mklReleaseNotes = mklRelease.Notes |> List.map (fun l -> l.Replace("*","").Replace("`","")) |> toLines
trace (sprintf " Math.NET Numerics MKL Provider v%s" mklPackageVersion) 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 dataRelease = LoadReleaseNotes "RELEASENOTES-Data.md"
let dataBuildPart = "0" let dataBuildPart = "0"
let dataAssemblyVersion = dataRelease.AssemblyVersion + "." + dataBuildPart let dataAssemblyVersion = dataRelease.AssemblyVersion + "." + dataBuildPart
@ -187,10 +194,10 @@ let coreSignedBundle =
// NATIVE PROVIDER PACKAGES // NATIVE PROVIDER PACKAGES
let mklWin32Pack = let mklWinPack =
{ Id = "MathNet.Numerics.MKL.Win-x86" { Id = "MathNet.Numerics.MKL.Win"
Version = mklPackageVersion 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 = "" Summary = ""
Description = "Intel MKL native libraries for Math.NET Numerics. Requires an Intel MKL license if redistributed." Description = "Intel MKL native libraries for Math.NET Numerics. Requires an Intel MKL license if redistributed."
ReleaseNotes = mklReleaseNotes ReleaseNotes = mklReleaseNotes
@ -198,15 +205,32 @@ let mklWin32Pack =
Authors = [ "Christoph Ruegg"; "Marcus Cuda"; "Jurgen Van Gael" ] Authors = [ "Christoph Ruegg"; "Marcus Cuda"; "Jurgen Van Gael" ]
Dependencies = Dependencies =
[ { FrameworkVersion="" [ { FrameworkVersion=""
Dependencies=[ "MathNet.Numerics", "2.4.0" ] } ] Dependencies=[ "MathNet.Numerics", "3.6.0" ] } ]
Files = Files =
[ @"..\..\out\MKL\Windows\x86\libiomp5md.dll", Some "content", None; [ @"MathNet.Numerics.MKL.Win.targets", Some "build", None;
@"..\..\out\MKL\Windows\x86\MathNet.Numerics.MKL.dll", Some "content", 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 = let mklWin64Pack =
{ mklWin32Pack with { mklWinPack with
Id = "MathNet.Numerics.MKL.Win-x64" Id = "MathNet.Numerics.MKL.Win-x64"
Title = "Math.NET Numerics - MKL Native Provider for Windows (x64)" Title = "Math.NET Numerics - MKL Native Provider for Windows (x64)"
Dependencies =
[ { FrameworkVersion=""
Dependencies=[ "MathNet.Numerics", "2.4.0" ] } ]
Files = Files =
[ @"..\..\out\MKL\Windows\x64\libiomp5md.dll", Some "content", None; [ @"..\..\out\MKL\Windows\x64\libiomp5md.dll", Some "content", None;
@"..\..\out\MKL\Windows\x64\MathNet.Numerics.MKL.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" Title = "Math.NET Numerics MKL Native Provider for Windows"
ReleaseNotesFile = "RELEASENOTES-MKL.md" ReleaseNotesFile = "RELEASENOTES-MKL.md"
FsLoader = false FsLoader = false
Packages = [ mklWin32Pack; mklWin64Pack ] } Packages = [ mklWinPack; mklWin32Pack; mklWin64Pack ] }
let mklLinuxBundle = let mklLinuxBundle =
{ Id = "MathNet.Numerics.MKL.Linux" { Id = "MathNet.Numerics.MKL.Linux"
@ -251,6 +275,37 @@ let mklLinuxBundle =
FsLoader = false FsLoader = false
Packages = [ mklLinux32Pack; mklLinux64Pack ] } 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 // 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/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/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/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 CleanDirs [ "out/Data" ]) // Data Extensions
Target "ApplyVersion" (fun _ -> Target "ApplyVersion" (fun _ ->
@ -328,7 +383,11 @@ Target "ApplyVersion" (fun _ ->
ReplaceInFile ReplaceInFile
(regex_replace @"\d+\.\d+\.\d+\.\d+" mklAssemblyVersion (regex_replace @"\d+\.\d+\.\d+\.\d+" mklAssemblyVersion
>> regex_replace @"\d+,\d+,\d+,\d+" (replace "." "," 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 Target "Prepare" DoNothing
"Start" "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 buildConfig config subject = MSBuild "" (if hasBuildParam "incremental" then "Build" else "Rebuild") [ "Configuration", config ] subject |> ignore
let build subject = buildConfig "Release" subject let build subject = buildConfig "Release" subject
let buildSigned subject = buildConfig "Release-Signed" 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 buildConfig32 config subject = MSBuild "" (if hasBuildParam "incremental" then "Build" else "Rebuild") [("Configuration", config); ("Platform","Win32")] subject |> ignore
let nativeWin64Build subject = MSBuild "" (if hasBuildParam "incremental" then "Build" else "Rebuild") [("Configuration","Release"); ("Platform","x64")] 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 "BuildMain" (fun _ -> build !! "MathNet.Numerics.sln")
Target "BuildNet35" (fun _ -> build !! "MathNet.Numerics.Net35Only.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")) =?> ("BuildMain", not (hasBuildParam "all" || hasBuildParam "release" || hasBuildParam "net35" || hasBuildParam "signed"))
==> "Build" ==> "Build"
Target "MklWin32Build" (fun _ -> nativeWin32Build !! "MathNet.Numerics.NativeProviders.sln") Target "MklWin32Build" (fun _ -> buildConfig32 "Release-MKL" !! "MathNet.Numerics.NativeProviders.sln")
Target "MklWin64Build" (fun _ -> nativeWin64Build !! "MathNet.Numerics.NativeProviders.sln") Target "MklWin64Build" (fun _ -> buildConfig64 "Release-MKL" !! "MathNet.Numerics.NativeProviders.sln")
Target "MklWinBuild" DoNothing Target "MklWinBuild" DoNothing
"Prepare" ==> "MklWin32Build" ==> "MklWinBuild" "Prepare" ==> "MklWin32Build" ==> "MklWinBuild"
"Prepare" ==> "MklWin64Build" ==> "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") Target "DataBuild" (fun _ -> build !! "MathNet.Numerics.Data.sln")
"Prepare" ==> "DataBuild" "Prepare" ==> "DataBuild"

74
build/MathNet.Numerics.CUDA.Win.targets

@ -0,0 +1,74 @@
<!--
*
* MathNet.Numerics.CUDA.Win.targets
*
* WARNING: This MSBuild file requires MSBuild 4.0 features.
*
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
******************************************************************************
** MathNet Interop Library Build Items **
******************************************************************************
-->
<ItemGroup>
<MathNetInteropFiles Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)')"
Include="$(MSBuildThisFileDirectory)**\*.dll" />
</ItemGroup>
<!--
******************************************************************************
** MathNet Interop Library Build Targets **
******************************************************************************
-->
<Target Name="CopyMathNetInteropFiles"
Condition="'$(CopyMathNetInteropFiles)' != 'false' And
'$(OutputPath)' != '' And
HasTrailingSlash('$(OutputPath)') And
Exists('$(OutputPath)')"
Inputs="@(MathNetInteropFiles)"
Outputs="@(MathNetInteropFiles -> '$(OutputPath)%(RecursiveDir)%(Filename)%(Extension)')">
<!--
NOTE: Copy "MathNet.Numerics.CUDA.dll" and all related files, for every
architecture that we support, to the build output directory.
-->
<Copy SourceFiles="@(MathNetInteropFiles)"
DestinationFiles="@(MathNetInteropFiles -> '$(OutputPath)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CleanMathNetInteropFiles"
Condition="'$(CleanMathNetInteropFiles)' != 'false' And
'$(OutputPath)' != '' And
HasTrailingSlash('$(OutputPath)') And
Exists('$(OutputPath)')">
<!--
NOTE: Delete "MathNet.Numerics.CUDA.dll" and all related files, for every
architecture that we support, from the build output directory.
-->
<Delete Files="@(MathNetInteropFiles -> '$(OutputPath)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
** MathNet Interop Library Build Properties **
******************************************************************************
-->
<PropertyGroup>
<BuildDependsOn>
$(BuildDependsOn);
CopyMathNetInteropFiles;
</BuildDependsOn>
<CleanDependsOn>
$(CleanDependsOn);
CleanMathNetInteropFiles;
</CleanDependsOn>
</PropertyGroup>
</Project>

74
build/MathNet.Numerics.MKL.Win.targets

@ -0,0 +1,74 @@
<!--
*
* MathNet.Numerics.MKL.Win.targets
*
* WARNING: This MSBuild file requires MSBuild 4.0 features.
*
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
******************************************************************************
** MathNet Interop Library Build Items **
******************************************************************************
-->
<ItemGroup>
<MathNetInteropFiles Condition="'$(MSBuildThisFileDirectory)' != '' And
HasTrailingSlash('$(MSBuildThisFileDirectory)')"
Include="$(MSBuildThisFileDirectory)**\*.dll" />
</ItemGroup>
<!--
******************************************************************************
** MathNet Interop Library Build Targets **
******************************************************************************
-->
<Target Name="CopyMathNetInteropFiles"
Condition="'$(CopyMathNetInteropFiles)' != 'false' And
'$(OutputPath)' != '' And
HasTrailingSlash('$(OutputPath)') And
Exists('$(OutputPath)')"
Inputs="@(MathNetInteropFiles)"
Outputs="@(MathNetInteropFiles -> '$(OutputPath)%(RecursiveDir)%(Filename)%(Extension)')">
<!--
NOTE: Copy "MathNet.Numerics.MKL.dll" and all related files, for every
architecture that we support, to the build output directory.
-->
<Copy SourceFiles="@(MathNetInteropFiles)"
DestinationFiles="@(MathNetInteropFiles -> '$(OutputPath)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
-->
<Target Name="CleanMathNetInteropFiles"
Condition="'$(CleanMathNetInteropFiles)' != 'false' And
'$(OutputPath)' != '' And
HasTrailingSlash('$(OutputPath)') And
Exists('$(OutputPath)')">
<!--
NOTE: Delete "MathNet.Numerics.MKL.dll" and all related files, for every
architecture that we support, from the build output directory.
-->
<Delete Files="@(MathNetInteropFiles -> '$(OutputPath)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!--
******************************************************************************
** MathNet Interop Library Build Properties **
******************************************************************************
-->
<PropertyGroup>
<BuildDependsOn>
$(BuildDependsOn);
CopyMathNetInteropFiles;
</BuildDependsOn>
<CleanDependsOn>
$(CleanDependsOn);
CleanMathNetInteropFiles;
</CleanDependsOn>
</PropertyGroup>
</Project>

4
src/NativeProviders/Windows/CUDA/CUDAWrapper.vcxproj

@ -105,7 +105,7 @@
<Link> <Link>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>cublas.lib;cublas_device.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>cublas.lib;cublas_device.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(CUDA_PATH)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(CUDA_PATH)\lib\Win32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -141,7 +141,7 @@ copy "$(CUDA_PATH)\bin\cudart64_70.dll" $(OutputPath)</Command>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>cublas.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>cublas.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(CUDA_PATH)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(CUDA_PATH)\lib\Win32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

Loading…
Cancel
Save