Skip to content

Commit bff41b7

Browse files
authored
Implemented tool to fetch Cuda release history. (m4rs-mt#926)
1 parent 851670d commit bff41b7

25 files changed

+1269
-320
lines changed
+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: 'Update Cuda Versions'
2+
3+
on:
4+
schedule:
5+
- cron: '0 0 * * 5' # Run once every Friday, at midnight.
6+
7+
jobs:
8+
update-cuda-versions:
9+
# Only run on main repository
10+
if: github.repository == 'm4rs-mt/ILGPU'
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout
14+
uses: actions/checkout@v3
15+
16+
- name: Setup the latest .NET 7 SDK
17+
uses: actions/[email protected]
18+
with:
19+
dotnet-version: 7.0.x
20+
21+
- name: Update Cuda versions
22+
uses: technote-space/create-pr-action@v2
23+
with:
24+
EXECUTE_COMMANDS: |
25+
dotnet run --configuration=Release -p:TreatWarningsAsErrors=true --project Tools/CudaVersionUpdateTool
26+
COMMIT_MESSAGE: 'Bump Cuda versions.'
27+
COMMIT_NAME: 'ILGPU CLI'
28+
COMMIT_EMAIL: '[email protected]'
29+
PR_BRANCH_PREFIX: 'schedule/'
30+
PR_BRANCH_NAME: 'update-cuda-versions'
31+
PR_TITLE: 'Bump Cuda versions.'

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,10 @@ Src/ILGPU/IntrinsicMath.CPUOnly.cs
266266
Src/ILGPU/Memory.cs
267267
Src/ILGPU/Runtime/ArrayViewExtensions.Generated.cs
268268
Src/ILGPU/Runtime/ArrayViews.cs
269+
Src/ILGPU/Runtime/Cuda/CudaArchitecture.Generated.cs
269270
Src/ILGPU/Runtime/Cuda/CudaAsm.Generated.cs
271+
Src/ILGPU/Runtime/Cuda/CudaDriverVersion.Generated.cs
272+
Src/ILGPU/Runtime/Cuda/CudaInstructionSet.Generated.cs
270273
Src/ILGPU/Runtime/Cuda/LibDevice.cs
271274
Src/ILGPU/Runtime/KernelLoaders.cs
272275
Src/ILGPU/Runtime/MemoryBuffers.cs

Src/ILGPU/ILGPU.csproj

+42
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,26 @@
9797
<AutoGen>True</AutoGen>
9898
<DependentUpon>IntrinsicMatchers.tt</DependentUpon>
9999
</None>
100+
<None Include="Runtime\Cuda\CudaArchitecture.Generated.cs">
101+
<DesignTime>True</DesignTime>
102+
<AutoGen>True</AutoGen>
103+
<DependentUpon>CudaArchitecture.Generated.tt</DependentUpon>
104+
</None>
100105
<None Include="Runtime\Cuda\CudaAsm.Generated.cs">
101106
<DesignTime>True</DesignTime>
102107
<AutoGen>True</AutoGen>
103108
<DependentUpon>CudaAsm.Generated.tt</DependentUpon>
104109
</None>
110+
<None Include="Runtime\Cuda\CudaDriverVersion.Generated.cs">
111+
<DesignTime>True</DesignTime>
112+
<AutoGen>True</AutoGen>
113+
<DependentUpon>CudaDriverVersion.Generated.tt</DependentUpon>
114+
</None>
115+
<None Include="Runtime\Cuda\CudaInstructionSet.Generated.cs">
116+
<DesignTime>True</DesignTime>
117+
<AutoGen>True</AutoGen>
118+
<DependentUpon>CudaInstructionSet.Generated.tt</DependentUpon>
119+
</None>
105120
<None Include="Runtime\PageLockedArrays.Generated.cs">
106121
<DesignTime>True</DesignTime>
107122
<AutoGen>True</AutoGen>
@@ -157,6 +172,18 @@
157172
<AutoGen>True</AutoGen>
158173
<DependentUpon>PrimitiveDataBlocks.tt</DependentUpon>
159174
</None>
175+
<None Update="Runtime\Cuda\CudaArchitecture.Generated.tt">
176+
<Generator>TextTemplatingFileGenerator</Generator>
177+
<LastGenOutput>CudaArchitecture.Generated.cs</LastGenOutput>
178+
</None>
179+
<None Update="Runtime\Cuda\CudaDriverVersion.Generated.tt">
180+
<Generator>TextTemplatingFileGenerator</Generator>
181+
<LastGenOutput>CudaDriverVersion.Generated.cs</LastGenOutput>
182+
</None>
183+
<None Update="Runtime\Cuda\CudaInstructionSet.Generated.tt">
184+
<Generator>TextTemplatingFileGenerator</Generator>
185+
<LastGenOutput>CudaInstructionSet.Generated.cs</LastGenOutput>
186+
</None>
160187
</ItemGroup>
161188

162189
<ItemGroup>
@@ -230,11 +257,26 @@
230257
<AutoGen>True</AutoGen>
231258
<DependentUpon>ValueTuples.tt</DependentUpon>
232259
</Compile>
260+
<Compile Update="Runtime\Cuda\CudaArchitecture.Generated.cs">
261+
<DesignTime>True</DesignTime>
262+
<AutoGen>True</AutoGen>
263+
<DependentUpon>CudaArchitecture.Generated.tt</DependentUpon>
264+
</Compile>
233265
<Compile Update="Runtime\Cuda\CudaAsm.Generated.cs">
234266
<DesignTime>True</DesignTime>
235267
<AutoGen>True</AutoGen>
236268
<DependentUpon>CudaAsm.Generated.tt</DependentUpon>
237269
</Compile>
270+
<Compile Update="Runtime\Cuda\CudaDriverVersion.Generated.cs">
271+
<DesignTime>True</DesignTime>
272+
<AutoGen>True</AutoGen>
273+
<DependentUpon>CudaDriverVersion.Generated.tt</DependentUpon>
274+
</Compile>
275+
<Compile Update="Runtime\Cuda\CudaInstructionSet.Generated.cs">
276+
<DesignTime>True</DesignTime>
277+
<AutoGen>True</AutoGen>
278+
<DependentUpon>CudaInstructionSet.Generated.tt</DependentUpon>
279+
</Compile>
238280
<Compile Update="Runtime\Cuda\LibDevice.cs">
239281
<DesignTime>True</DesignTime>
240282
<AutoGen>True</AutoGen>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// ---------------------------------------------------------------------------------------
2+
// ILGPU
3+
// Copyright (c) 2023 ILGPU Project
4+
// www.ilgpu.net
5+
//
6+
// File: CudaArchitecture.Generated.tt/CudaArchitecture.Generated.cs
7+
//
8+
// This file is part of ILGPU and is distributed under the University of Illinois Open
9+
// Source License. See LICENSE.txt for details.
10+
// ---------------------------------------------------------------------------------------
11+
12+
<#@ template debug="false" hostspecific="true" language="C#" #>
13+
<#@ include file="../../Static/TypeInformation.ttinclude" #>
14+
<#@ include file="../../Static/CudaVersions.ttinclude" #>
15+
<#@ assembly name="System.Core" #>
16+
<#@ import namespace="System.Linq" #>
17+
<#@ import namespace="System.Text" #>
18+
<#@ import namespace="System.Collections.Generic" #>
19+
<#@ output extension=".cs" #>
20+
<#
21+
string rootPath = Host.ResolvePath("../../Static");
22+
var versions = CudaVersions.Load(rootPath, "CudaVersions.xml");
23+
24+
var architectures =
25+
versions
26+
.Select(x => x.ArchitectureVersion)
27+
.Distinct()
28+
.OrderBy(x => x)
29+
.ToArray();
30+
#>
31+
32+
namespace ILGPU.Runtime.Cuda
33+
{
34+
partial struct CudaArchitecture
35+
{
36+
#region Constants
37+
38+
<# foreach (var arch in architectures) { #>
39+
/// <summary>
40+
/// The <#= arch.Major #>.<#= arch.Minor #> architecture.
41+
/// </summary>
42+
public static readonly CudaArchitecture SM_<#= arch.Major #><#= arch.Minor #> =
43+
new CudaArchitecture(<#= arch.Major #>, <#= arch.Minor #>);
44+
45+
<# } #>
46+
#endregion
47+
}
48+
}

Src/ILGPU/Runtime/Cuda/CudaArchitecture.cs

+2-96
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// ---------------------------------------------------------------------------------------
22
// ILGPU
3-
// Copyright (c) 2021-2022 ILGPU Project
3+
// Copyright (c) 2021-2023 ILGPU Project
44
// www.ilgpu.net
55
//
66
// File: CudaArchitecture.cs
@@ -17,104 +17,10 @@ namespace ILGPU.Runtime.Cuda
1717
/// <summary>
1818
/// Represents a Cuda architecture.
1919
/// </summary>
20-
public readonly struct CudaArchitecture :
20+
public readonly partial struct CudaArchitecture :
2121
IEquatable<CudaArchitecture>,
2222
IComparable<CudaArchitecture>
2323
{
24-
#region Constants
25-
26-
/// <summary>
27-
/// The 3.0 architecture.
28-
/// </summary>
29-
public static readonly CudaArchitecture SM_30 = new CudaArchitecture(3, 0);
30-
31-
/// <summary>
32-
/// The 3.2 architecture.
33-
/// </summary>
34-
public static readonly CudaArchitecture SM_32 = new CudaArchitecture(3, 2);
35-
36-
/// <summary>
37-
/// The 3.5 architecture.
38-
/// </summary>
39-
public static readonly CudaArchitecture SM_35 = new CudaArchitecture(3, 5);
40-
41-
/// <summary>
42-
/// The 3.7 architecture.
43-
/// </summary>
44-
public static readonly CudaArchitecture SM_37 = new CudaArchitecture(3, 7);
45-
46-
/// <summary>
47-
/// The 5.0 architecture.
48-
/// </summary>
49-
public static readonly CudaArchitecture SM_50 = new CudaArchitecture(5, 0);
50-
51-
/// <summary>
52-
/// The 5.2 architecture.
53-
/// </summary>
54-
public static readonly CudaArchitecture SM_52 = new CudaArchitecture(5, 2);
55-
56-
/// <summary>
57-
/// The 5.3 architecture.
58-
/// </summary>
59-
public static readonly CudaArchitecture SM_53 = new CudaArchitecture(5, 3);
60-
61-
/// <summary>
62-
/// The 6.0 architecture.
63-
/// </summary>
64-
public static readonly CudaArchitecture SM_60 = new CudaArchitecture(6, 0);
65-
66-
/// <summary>
67-
/// The 6.1 architecture.
68-
/// </summary>
69-
public static readonly CudaArchitecture SM_61 = new CudaArchitecture(6, 1);
70-
71-
/// <summary>
72-
/// The 6.2 architecture.
73-
/// </summary>
74-
public static readonly CudaArchitecture SM_62 = new CudaArchitecture(6, 2);
75-
76-
/// <summary>
77-
/// The 7.0 architecture.
78-
/// </summary>
79-
public static readonly CudaArchitecture SM_70 = new CudaArchitecture(7, 0);
80-
81-
/// <summary>
82-
/// The 7.2 architecture.
83-
/// </summary>
84-
public static readonly CudaArchitecture SM_72 = new CudaArchitecture(7, 2);
85-
86-
/// <summary>
87-
/// The 7.5 architecture.
88-
/// </summary>
89-
public static readonly CudaArchitecture SM_75 = new CudaArchitecture(7, 5);
90-
91-
/// <summary>
92-
/// The 8.0 architecture.
93-
/// </summary>
94-
public static readonly CudaArchitecture SM_80 = new CudaArchitecture(8, 0);
95-
96-
/// <summary>
97-
/// The 8.6 architecture.
98-
/// </summary>
99-
public static readonly CudaArchitecture SM_86 = new CudaArchitecture(8, 6);
100-
101-
/// <summary>
102-
/// The 8.7 architecture.
103-
/// </summary>
104-
public static readonly CudaArchitecture SM_87 = new CudaArchitecture(8, 7);
105-
106-
/// <summary>
107-
/// The 8.9 architecture.
108-
/// </summary>
109-
public static readonly CudaArchitecture SM_89 = new CudaArchitecture(8, 9);
110-
111-
/// <summary>
112-
/// The 9.0 architecture.
113-
/// </summary>
114-
public static readonly CudaArchitecture SM_90 = new CudaArchitecture(9, 0);
115-
116-
#endregion
117-
11824
#region Instance
11925

12026
/// <summary>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
// ---------------------------------------------------------------------------------------
2+
// ILGPU
3+
// Copyright (c) 2023 ILGPU Project
4+
// www.ilgpu.net
5+
//
6+
// File: CudaDriverVersion.Generated.tt/CudaDriverVersion.Generated.cs
7+
//
8+
// This file is part of ILGPU and is distributed under the University of Illinois Open
9+
// Source License. See LICENSE.txt for details.
10+
// ---------------------------------------------------------------------------------------
11+
12+
<#@ template debug="false" hostspecific="true" language="C#" #>
13+
<#@ include file="../../Static/TypeInformation.ttinclude" #>
14+
<#@ include file="../../Static/CudaVersions.ttinclude" #>
15+
<#@ assembly name="System.Core" #>
16+
<#@ import namespace="System.Linq" #>
17+
<#@ import namespace="System.Text" #>
18+
<#@ import namespace="System.Collections.Generic" #>
19+
<#@ output extension=".cs" #>
20+
<#
21+
string rootPath = Host.ResolvePath("../../Static");
22+
var versions = CudaVersions.Load(rootPath, "CudaVersions.xml");
23+
24+
var architectures =
25+
versions
26+
.GroupBy(x => x.ArchitectureVersion)
27+
.OrderBy(x => x.Key)
28+
.Select(g => (g.Key, g.Min(x => x.DriverVersion)))
29+
.ToArray();
30+
31+
var instructionSets =
32+
versions
33+
.GroupBy(x => x.InstructionSetVersion)
34+
.OrderBy(x => x.Key)
35+
.Select(g => (g.Key, g.Min(x => x.DriverVersion)))
36+
.ToArray();
37+
#>
38+
39+
using System.Collections.Generic;
40+
41+
namespace ILGPU.Runtime.Cuda
42+
{
43+
partial class CudaDriverVersionUtils
44+
{
45+
#region Static
46+
47+
/// <summary>
48+
/// Maps PTX architecture to their corresponding minimum CUDA driver version.
49+
/// </summary>
50+
private static readonly Dictionary<
51+
CudaArchitecture,
52+
CudaDriverVersion> ArchitectureLookup =
53+
new Dictionary<CudaArchitecture, CudaDriverVersion>
54+
{
55+
<# foreach (var architecture in architectures) { #>
56+
<# var arch = architecture.Item1; #>
57+
<# var drv = architecture.Item2; #>
58+
{
59+
CudaArchitecture.SM_<#= arch.Major #><#= arch.Minor #>,
60+
CudaDriverVersion.FromMajorMinor(<#= drv.Major #>, <#= drv.Minor #>)
61+
},
62+
<# } #>
63+
};
64+
65+
/// <summary>
66+
/// Maps PTX ISA to their corresponding minimum CUDA driver version.
67+
/// </summary>
68+
internal static readonly Dictionary<
69+
CudaInstructionSet,
70+
CudaDriverVersion> InstructionSetLookup =
71+
new Dictionary<CudaInstructionSet, CudaDriverVersion>
72+
{
73+
<# foreach (var instructionSet in instructionSets) { #>
74+
<# var isa = instructionSet.Item1; #>
75+
<# var drv = instructionSet.Item2; #>
76+
{
77+
CudaInstructionSet.ISA_<#= isa.Major #><#= isa.Minor #>,
78+
CudaDriverVersion.FromMajorMinor(<#= drv.Major #>, <#= drv.Minor #>)
79+
},
80+
<# } #>
81+
};
82+
83+
84+
#endregion
85+
}
86+
}

0 commit comments

Comments
 (0)