Skip to content
This repository was archived by the owner on Mar 29, 2025. It is now read-only.

Commit 5fe9afb

Browse files
committed
Add Cargo features for selecting installed CUDA version.
Use the features to gate on the API version and a (currently empty) binding to the FP16 API. Fix for stable rustc. Update CI to set the version features.
1 parent 127043c commit 5fe9afb

File tree

4 files changed

+77
-1
lines changed

4 files changed

+77
-1
lines changed

.circleci/config.yml

+47-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version: 2
44
name: Cargo build
55
command: |
66
export PATH=/root/.cargo/bin:$PATH
7-
cargo build -vv
7+
cargo build -vv $CRATE_CARGO_FEATURES
88
99
.job_apt_template: &job_apt
1010
steps:
@@ -35,94 +35,140 @@ jobs:
3535
docker:
3636
- image: nvidia/cuda:latest
3737
9.2-devel-ubuntu18.04:
38+
environment:
39+
CRATE_CARGO_FEATURES: --features cuda_9_2
3840
<<: *job_apt
3941
docker:
4042
- image: nvidia/cuda:9.2-devel-ubuntu18.04
4143
10.0-devel-ubuntu16.04:
44+
environment:
45+
CRATE_CARGO_FEATURES: --features cuda_10_0
4246
<<: *job_apt
4347
docker:
4448
- image: nvidia/cuda:10.0-devel-ubuntu16.04
4549
9.2-devel-ubuntu16.04:
50+
environment:
51+
CRATE_CARGO_FEATURES: --features cuda_9_2
4652
<<: *job_apt
4753
docker:
4854
- image: nvidia/cuda:9.2-devel-ubuntu16.04
4955
9.1-devel-ubuntu16.04:
56+
environment:
57+
CRATE_CARGO_FEATURES: --features cuda_9_1
5058
<<: *job_apt
5159
docker:
5260
- image: nvidia/cuda:9.1-devel-ubuntu16.04
5361
9.0-devel-ubuntu16.04:
62+
environment:
63+
CRATE_CARGO_FEATURES: --features cuda_9_0
5464
<<: *job_apt
5565
docker:
5666
- image: nvidia/cuda:9.0-devel-ubuntu16.04
5767
8.0-devel-ubuntu16.04:
68+
environment:
69+
CRATE_CARGO_FEATURES: --features cuda_8_0
5870
<<: *job_apt
5971
docker:
6072
- image: nvidia/cuda:8.0-devel-ubuntu16.04
6173
8.0-devel-ubuntu14.04:
74+
environment:
75+
CRATE_CARGO_FEATURES: --features cuda_8_0
6276
<<: *job_apt
6377
docker:
6478
- image: nvidia/cuda:8.0-devel-ubuntu14.04
6579
7.5-devel-ubuntu14.04:
80+
environment:
81+
CRATE_CARGO_FEATURES: --features cuda_7_5
6682
<<: *job_apt
6783
docker:
6884
- image: nvidia/cuda:7.5-devel-ubuntu14.04
6985
7.0-devel-ubuntu14.04:
86+
environment:
87+
CRATE_CARGO_FEATURES: --features cuda_7_0
7088
<<: *job_apt
7189
docker:
7290
- image: nvidia/cuda:7.0-devel-ubuntu14.04
7391
6.5-devel-ubuntu14.04:
92+
environment:
93+
CRATE_CARGO_FEATURES: --features cuda_6_5
7494
<<: *job_apt
7595
docker:
7696
- image: nvidia/cuda:6.5-devel-ubuntu14.04
7797
10.0-devel-centos7:
98+
environment:
99+
CRATE_CARGO_FEATURES: --features cuda_10_0
78100
<<: *job_yum
79101
docker:
80102
- image: nvidia/cuda:10.0-devel-centos7
81103
9.2-devel-centos7:
104+
environment:
105+
CRATE_CARGO_FEATURES: --features cuda_9_2
82106
<<: *job_yum
83107
docker:
84108
- image: nvidia/cuda:9.2-devel-centos7
85109
9.1-devel-centos7:
110+
environment:
111+
CRATE_CARGO_FEATURES: --features cuda_9_1
86112
<<: *job_yum
87113
docker:
88114
- image: nvidia/cuda:9.1-devel-centos7
89115
9.0-devel-centos7:
116+
environment:
117+
CRATE_CARGO_FEATURES: --features cuda_9_0
90118
<<: *job_yum
91119
docker:
92120
- image: nvidia/cuda:9.0-devel-centos7
93121
8.0-devel-centos7:
122+
environment:
123+
CRATE_CARGO_FEATURES: --features cuda_8_0
94124
<<: *job_yum
95125
docker:
96126
- image: nvidia/cuda:8.0-devel-centos7
97127
7.5-devel-centos7:
128+
environment:
129+
CRATE_CARGO_FEATURES: --features cuda_7_5
98130
<<: *job_yum
99131
docker:
100132
- image: nvidia/cuda:7.5-devel-centos7
101133
7.0-devel-centos7:
134+
environment:
135+
CRATE_CARGO_FEATURES: --features cuda_7_0
102136
<<: *job_yum
103137
docker:
104138
- image: nvidia/cuda:7.0-devel-centos7
105139
10.0-devel-centos6:
140+
environment:
141+
CRATE_CARGO_FEATURES: --features cuda_10_0
106142
<<: *job_yum
107143
docker:
108144
- image: nvidia/cuda:10.0-devel-centos6
109145
9.2-devel-centos6:
146+
environment:
147+
CRATE_CARGO_FEATURES: --features cuda_9_2
110148
<<: *job_yum
111149
docker:
112150
- image: nvidia/cuda:9.2-devel-centos6
113151
9.1-devel-centos6:
152+
environment:
153+
CRATE_CARGO_FEATURES: --features cuda_9_1
114154
<<: *job_yum
115155
docker:
116156
- image: nvidia/cuda:9.1-devel-centos6
117157
9.0-devel-centos6:
158+
environment:
159+
CRATE_CARGO_FEATURES: --features cuda_9_0
118160
<<: *job_yum
119161
docker:
120162
- image: nvidia/cuda:9.0-devel-centos6
121163
8.0-devel-centos6:
164+
environment:
165+
CRATE_CARGO_FEATURES: --features cuda_8_0
122166
<<: *job_yum
123167
docker:
124168
- image: nvidia/cuda:8.0-devel-centos6
125169
7.5-devel-centos6:
170+
environment:
171+
CRATE_CARGO_FEATURES: --features cuda_7_5
126172
<<: *job_yum
127173
docker:
128174
- image: nvidia/cuda:7.5-devel-centos6

Cargo.toml

+21
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,24 @@ keywords = ["GPGPU", "CUDA", "ffi"]
1313
license = "MIT"
1414
readme = "README.md"
1515
categories = []
16+
17+
[features]
18+
default = ["cuda_8_0"]
19+
cuda_6_5 = []
20+
cuda_7_0 = ["gte_cuda_7_0"]
21+
cuda_7_5 = ["gte_cuda_7_0", "gte_cuda_7_5"]
22+
cuda_8_0 = ["gte_cuda_7_0", "gte_cuda_7_5", "gte_cuda_8_0"]
23+
cuda_9_0 = ["gte_cuda_7_0", "gte_cuda_7_5", "gte_cuda_8_0", "gte_cuda_9_0"]
24+
cuda_9_1 = ["gte_cuda_7_0", "gte_cuda_7_5", "gte_cuda_8_0", "gte_cuda_9_0", "gte_cuda_9_1"]
25+
cuda_9_2 = ["gte_cuda_7_0", "gte_cuda_7_5", "gte_cuda_8_0", "gte_cuda_9_0", "gte_cuda_9_1", "gte_cuda_9_2"]
26+
cuda_10_0 = ["gte_cuda_7_0", "gte_cuda_7_5", "gte_cuda_8_0", "gte_cuda_9_0", "gte_cuda_9_1", "gte_cuda_9_2", "gte_cuda_10_0"]
27+
gte_cuda_7_0 = []
28+
gte_cuda_7_5 = []
29+
gte_cuda_8_0 = []
30+
gte_cuda_9_0 = []
31+
gte_cuda_9_1 = []
32+
gte_cuda_9_2 = []
33+
gte_cuda_10_0 = []
34+
35+
[dependencies]
36+
static_assertions = "0.3.1"

src/cuda_fp16.rs

Whitespace-only changes.

src/lib.rs

+9
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
1+
#[macro_use] extern crate static_assertions;
2+
13
pub mod cublas;
24
pub mod cuda;
35
pub mod cudart;
6+
#[cfg(feature = "gte_cuda_8_0")]
7+
pub mod cuda_fp16;
48
pub mod vector_types;
59

10+
#[cfg(feature = "cuda_8_0")]
11+
const_assert_eq!(cuda_8_0_api_version; cuda::__CUDA_API_VERSION, 8000);
12+
#[cfg(feature = "cuda_8_0")]
13+
const_assert_eq!(cuda_8_0_version; cuda::CUDA_VERSION, 8000);
14+
615
#[test]
716
fn cuda_version() {
817
let mut d_ver = 0;

0 commit comments

Comments
 (0)