Skip to content

Commit 48b992e

Browse files
committed
Make Default trait derive module specific
1 parent fe342da commit 48b992e

11 files changed

Lines changed: 2896 additions & 107 deletions

File tree

bindings_generator/src/main.rs

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ fn create_modules() -> Vec<ModuleConfig> {
3535
libs: vec!["cudart"],
3636
clang_args: vec![],
3737
raw_lines: vec![],
38+
derive_default: true,
3839
},
3940
ModuleConfig {
4041
cudarc_name: "driver",
@@ -55,15 +56,13 @@ fn create_modules() -> Vec<ModuleConfig> {
5556
blocklist: Filters {
5657
// NOTE: See https://github.com/coreylowman/cudarc/issues/385
5758
types: vec!["^cuCheckpoint.*"],
58-
functions: vec![
59-
"^cuCheckpoint.*",
60-
"cuDeviceGetNvSciSyncAttributes",
61-
],
59+
functions: vec!["^cuCheckpoint.*", "cuDeviceGetNvSciSyncAttributes"],
6260
vars: vec![],
6361
},
6462
libs: vec!["cuda", "nvcuda"],
6563
clang_args: vec![],
6664
raw_lines: vec![],
65+
derive_default: true,
6766
},
6867
ModuleConfig {
6968
cudarc_name: "cublas",
@@ -78,6 +77,7 @@ fn create_modules() -> Vec<ModuleConfig> {
7877
libs: vec!["cublas"],
7978
clang_args: vec![],
8079
raw_lines: vec![],
80+
derive_default: true,
8181
},
8282
ModuleConfig {
8383
cudarc_name: "cublaslt",
@@ -96,6 +96,7 @@ fn create_modules() -> Vec<ModuleConfig> {
9696
libs: vec!["cublasLt"],
9797
clang_args: vec![],
9898
raw_lines: vec![],
99+
derive_default: true,
99100
},
100101
ModuleConfig {
101102
cudarc_name: "curand",
@@ -108,15 +109,13 @@ fn create_modules() -> Vec<ModuleConfig> {
108109
allowlist_recursively: true,
109110
blocklist: Filters {
110111
types: vec![],
111-
functions: vec![
112-
"curandGenerateBinomial",
113-
"curandGenerateBinomialMethod",
114-
],
112+
functions: vec!["curandGenerateBinomial", "curandGenerateBinomialMethod"],
115113
vars: vec![],
116114
},
117115
libs: vec!["curand"],
118116
clang_args: vec![],
119117
raw_lines: vec![],
118+
derive_default: true,
120119
},
121120
ModuleConfig {
122121
cudarc_name: "nvrtc",
@@ -142,6 +141,7 @@ fn create_modules() -> Vec<ModuleConfig> {
142141
libs: vec!["nvrtc"],
143142
clang_args: vec![],
144143
raw_lines: vec![],
144+
derive_default: true,
145145
},
146146
ModuleConfig {
147147
cudarc_name: "cudnn",
@@ -156,6 +156,7 @@ fn create_modules() -> Vec<ModuleConfig> {
156156
libs: vec!["cudnn"],
157157
clang_args: vec![],
158158
raw_lines: vec![],
159+
derive_default: true,
159160
},
160161
ModuleConfig {
161162
cudarc_name: "nccl",
@@ -170,6 +171,7 @@ fn create_modules() -> Vec<ModuleConfig> {
170171
libs: vec!["nccl"],
171172
clang_args: vec![],
172173
raw_lines: vec![],
174+
derive_default: true,
173175
},
174176
ModuleConfig {
175177
cudarc_name: "cusparse",
@@ -226,6 +228,7 @@ fn create_modules() -> Vec<ModuleConfig> {
226228
libs: vec!["cusparse"],
227229
clang_args: vec![],
228230
raw_lines: vec![],
231+
derive_default: true,
229232
},
230233
ModuleConfig {
231234
cudarc_name: "cusolver",
@@ -238,15 +241,13 @@ fn create_modules() -> Vec<ModuleConfig> {
238241
allowlist_recursively: true,
239242
blocklist: Filters {
240243
types: vec!["^cusolverMg.*"],
241-
functions: vec![
242-
"^cusolverMg.*",
243-
"^cusolverDnLogger.*",
244-
],
244+
functions: vec!["^cusolverMg.*", "^cusolverDnLogger.*"],
245245
vars: vec!["^cusolverMg.*"],
246246
},
247247
libs: vec!["cusolver"],
248248
clang_args: vec![],
249249
raw_lines: vec![],
250+
derive_default: true,
250251
},
251252
ModuleConfig {
252253
cudarc_name: "cusolvermg",
@@ -261,6 +262,7 @@ fn create_modules() -> Vec<ModuleConfig> {
261262
libs: vec!["cusolverMg"],
262263
clang_args: vec![],
263264
raw_lines: vec![],
265+
derive_default: true,
264266
},
265267
ModuleConfig {
266268
cudarc_name: "cufile",
@@ -275,6 +277,7 @@ fn create_modules() -> Vec<ModuleConfig> {
275277
libs: vec!["cufile"],
276278
clang_args: vec![],
277279
raw_lines: vec![],
280+
derive_default: true,
278281
},
279282
ModuleConfig {
280283
cudarc_name: "nvtx",
@@ -285,14 +288,15 @@ fn create_modules() -> Vec<ModuleConfig> {
285288
vars: vec!["^nvtx.*"],
286289
},
287290
allowlist_recursively: true,
288-
blocklist: Filters {
291+
blocklist: Filters {
289292
types: vec![],
290293
functions: vec!["nvtxInitialize"],
291294
vars: vec![],
292295
},
293296
libs: vec!["nvToolsExt"],
294297
clang_args: vec!["-DNVTX_NO_IMPL=0", "-DNVTX_DECLSPEC="],
295298
raw_lines: vec![],
299+
derive_default: true,
296300
},
297301
ModuleConfig {
298302
cudarc_name: "cupti",
@@ -341,10 +345,8 @@ fn create_modules() -> Vec<ModuleConfig> {
341345
},
342346
libs: vec!["cupti"],
343347
clang_args: vec![],
344-
raw_lines: vec![
345-
"use crate::driver::sys::*;",
346-
"use crate::runtime::sys::*;",
347-
],
348+
raw_lines: vec!["use crate::driver::sys::*;", "use crate::runtime::sys::*;"],
349+
derive_default: false,
348350
},
349351
]
350352
}
@@ -370,6 +372,8 @@ struct ModuleConfig {
370372
allowlist_recursively: bool,
371373
/// Lines of code to add at the beginning of the generated bindings.
372374
raw_lines: Vec<&'static str>,
375+
/// Whether to derive Default implementations for types.
376+
derive_default: bool,
373377
}
374378

375379
impl ModuleConfig {
@@ -399,7 +403,7 @@ impl ModuleConfig {
399403
.default_enum_style(bindgen::EnumVariation::Rust {
400404
non_exhaustive: false,
401405
})
402-
.derive_default(false)
406+
.derive_default(self.derive_default)
403407
.derive_eq(true)
404408
.derive_hash(true)
405409
.derive_ord(true)
@@ -530,7 +534,7 @@ fn create_bindings(modules: &[ModuleConfig], cuda_versions: &[&str]) -> Result<(
530534
} else {
531535
vec!["cuda_nvcc"]
532536
};
533-
537+
534538
let archive_pb = multi_progress.add(ProgressBar::new(names.len() as u64));
535539
archive_pb.set_style(
536540
ProgressStyle::default_bar().template("{msg} {wide_bar} {pos}/{len} ({eta})")?,

src/cublas/sys/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -459,14 +459,14 @@ pub struct cublasContext {
459459
}
460460
#[repr(C)]
461461
#[repr(align(16))]
462-
#[derive(Debug, Copy, Clone, PartialOrd, PartialEq)]
462+
#[derive(Debug, Default, Copy, Clone, PartialOrd, PartialEq)]
463463
pub struct double2 {
464464
pub x: f64,
465465
pub y: f64,
466466
}
467467
#[repr(C)]
468468
#[repr(align(8))]
469-
#[derive(Debug, Copy, Clone, PartialOrd, PartialEq)]
469+
#[derive(Debug, Default, Copy, Clone, PartialOrd, PartialEq)]
470470
pub struct float2 {
471471
pub x: f32,
472472
pub y: f32,

src/cublaslt/sys/mod.rs

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2695,30 +2695,30 @@ pub struct cublasLtContext {
26952695
}
26962696
#[cfg(any(feature = "cuda-13000"))]
26972697
#[repr(C)]
2698-
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
2698+
#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
26992699
pub struct cublasLtEmulationDescOpaque_t {
27002700
pub data: [u64; 8usize],
27012701
}
27022702
#[repr(C)]
2703-
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
2703+
#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
27042704
pub struct cublasLtMatmulAlgo_t {
27052705
pub data: [u64; 8usize],
27062706
}
27072707
#[cfg(any(feature = "cuda-11040"))]
27082708
#[repr(C)]
2709-
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
2709+
#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
27102710
pub struct cublasLtMatmulDescOpaque_t {
27112711
pub data: [u64; 11usize],
27122712
}
27132713
#[cfg(any(feature = "cuda-11050", feature = "cuda-11060", feature = "cuda-11070"))]
27142714
#[repr(C)]
2715-
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
2715+
#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
27162716
pub struct cublasLtMatmulDescOpaque_t {
27172717
pub data: [u64; 12usize],
27182718
}
27192719
#[cfg(any(feature = "cuda-11080", feature = "cuda-12000", feature = "cuda-12010"))]
27202720
#[repr(C)]
2721-
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
2721+
#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
27222722
pub struct cublasLtMatmulDescOpaque_t {
27232723
pub data: [u64; 23usize],
27242724
}
@@ -2733,7 +2733,7 @@ pub struct cublasLtMatmulDescOpaque_t {
27332733
feature = "cuda-13000"
27342734
))]
27352735
#[repr(C)]
2736-
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
2736+
#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
27372737
pub struct cublasLtMatmulDescOpaque_t {
27382738
pub data: [u64; 32usize],
27392739
}
@@ -2754,7 +2754,7 @@ pub struct cublasLtMatmulHeuristicResult_t {
27542754
feature = "cuda-11080"
27552755
))]
27562756
#[repr(C)]
2757-
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
2757+
#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
27582758
pub struct cublasLtMatmulPreferenceOpaque_t {
27592759
pub data: [u64; 10usize],
27602760
}
@@ -2771,24 +2771,42 @@ pub struct cublasLtMatmulPreferenceOpaque_t {
27712771
feature = "cuda-13000"
27722772
))]
27732773
#[repr(C)]
2774-
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
2774+
#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
27752775
pub struct cublasLtMatmulPreferenceOpaque_t {
27762776
pub data: [u64; 8usize],
27772777
}
27782778
#[repr(C)]
2779-
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
2779+
#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
27802780
pub struct cublasLtMatrixLayoutOpaque_t {
27812781
pub data: [u64; 8usize],
27822782
}
27832783
#[repr(C)]
2784-
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
2784+
#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
27852785
pub struct cublasLtMatrixTransformDescOpaque_t {
27862786
pub data: [u64; 8usize],
27872787
}
27882788
#[cfg(any(feature = "cuda-12080", feature = "cuda-12090", feature = "cuda-13000"))]
27892789
impl cudaDataType_t {
27902790
pub const CUDA_R_8F_UE4M3: cudaDataType_t = cudaDataType_t::CUDA_R_8F_E4M3;
27912791
}
2792+
impl Default for _IO_FILE {
2793+
fn default() -> Self {
2794+
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
2795+
unsafe {
2796+
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2797+
s.assume_init()
2798+
}
2799+
}
2800+
}
2801+
impl Default for cublasLtMatmulHeuristicResult_t {
2802+
fn default() -> Self {
2803+
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
2804+
unsafe {
2805+
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2806+
s.assume_init()
2807+
}
2808+
}
2809+
}
27922810
#[cfg(not(feature = "dynamic-loading"))]
27932811
extern "C" {
27942812
pub fn cublasLtCreate(lightHandle: *mut cublasLtHandle_t) -> cublasStatus_t;

src/cudnn/sys/mod.rs

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1490,7 +1490,7 @@ pub struct cudnnFilterStruct {
14901490
_unused: [u8; 0],
14911491
}
14921492
#[repr(C)]
1493-
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
1493+
#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
14941494
pub struct cudnnFractionStruct {
14951495
pub numerator: i64,
14961496
pub denominator: i64,
@@ -1589,6 +1589,42 @@ impl cudnnStatus_t {
15891589
pub const CUDNN_STATUS_VERSION_MISMATCH: cudnnStatus_t =
15901590
cudnnStatus_t::CUDNN_STATUS_SUBLIBRARY_VERSION_MISMATCH;
15911591
}
1592+
impl Default for cudnnConvolutionBwdDataAlgoPerfStruct {
1593+
fn default() -> Self {
1594+
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
1595+
unsafe {
1596+
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1597+
s.assume_init()
1598+
}
1599+
}
1600+
}
1601+
impl Default for cudnnConvolutionBwdFilterAlgoPerfStruct {
1602+
fn default() -> Self {
1603+
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
1604+
unsafe {
1605+
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1606+
s.assume_init()
1607+
}
1608+
}
1609+
}
1610+
impl Default for cudnnConvolutionFwdAlgoPerfStruct {
1611+
fn default() -> Self {
1612+
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
1613+
unsafe {
1614+
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1615+
s.assume_init()
1616+
}
1617+
}
1618+
}
1619+
impl Default for cudnnDebugStruct {
1620+
fn default() -> Self {
1621+
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
1622+
unsafe {
1623+
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1624+
s.assume_init()
1625+
}
1626+
}
1627+
}
15921628
#[cfg(not(feature = "dynamic-loading"))]
15931629
extern "C" {
15941630
pub fn cudnnActivationBackward(

0 commit comments

Comments
 (0)