Skip to content

Commit db5be61

Browse files
committed
fix(cust): add cuMemLocation_anon_id cfg guard for CUDA 13.0 compat
Made-with: Cursor
1 parent cb2f579 commit db5be61

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

crates/cust/build.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,12 @@ fn main() {
4040
println!("cargo::rustc-cfg=cuGraphGetEdges_v2");
4141
println!("cargo::rustc-cfg=cuCtxCreate_v4");
4242
}
43+
44+
// In CUDA 13.2 the `id` field in `CUmemLocation_st` was placed inside an anonymous union.
45+
// Bindgen renders this as `__bindgen_anon_1: CUmemLocation_st__bindgen_ty_1` instead of a
46+
// direct `id` field. This cfg gates the struct initialization syntax accordingly.
47+
println!("cargo::rustc-check-cfg=cfg(cuMemLocation_anon_id)");
48+
if driver_version >= 13020 {
49+
println!("cargo::rustc-cfg=cuMemLocation_anon_id");
50+
}
4351
}

crates/cust/src/memory/unified.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,10 @@ pub trait MemoryAdvise<T: DeviceCopy>: private::Sealed {
647647
#[cfg(cuMemPrefetchAsync_v2)]
648648
driver_sys::CUmemLocation {
649649
type_: driver_sys::CUmemLocationType::CU_MEM_LOCATION_TYPE_DEVICE,
650+
#[cfg(cuMemLocation_anon_id)]
650651
__bindgen_anon_1: driver_sys::CUmemLocation_st__bindgen_ty_1 { id },
652+
#[cfg(not(cuMemLocation_anon_id))]
653+
id,
651654
},
652655
#[cfg(not(cuMemPrefetchAsync_v2))]
653656
id,
@@ -693,7 +696,10 @@ pub trait MemoryAdvise<T: DeviceCopy>: private::Sealed {
693696
#[cfg(cuMemPrefetchAsync_v2)]
694697
driver_sys::CUmemLocation {
695698
type_: driver_sys::CUmemLocationType::CU_MEM_LOCATION_TYPE_DEVICE,
699+
#[cfg(cuMemLocation_anon_id)]
696700
__bindgen_anon_1: driver_sys::CUmemLocation_st__bindgen_ty_1 { id },
701+
#[cfg(not(cuMemLocation_anon_id))]
702+
id,
697703
},
698704
#[cfg(not(cuMemPrefetchAsync_v2))]
699705
id,
@@ -735,7 +741,10 @@ pub trait MemoryAdvise<T: DeviceCopy>: private::Sealed {
735741
#[cfg(cuMemAdvise_v2)]
736742
driver_sys::CUmemLocation {
737743
type_: driver_sys::CUmemLocationType::CU_MEM_LOCATION_TYPE_DEVICE,
744+
#[cfg(cuMemLocation_anon_id)]
738745
__bindgen_anon_1: driver_sys::CUmemLocation_st__bindgen_ty_1 { id },
746+
#[cfg(not(cuMemLocation_anon_id))]
747+
id,
739748
},
740749
#[cfg(not(cuMemAdvise_v2))]
741750
id,
@@ -777,7 +786,10 @@ pub trait MemoryAdvise<T: DeviceCopy>: private::Sealed {
777786
#[cfg(cuMemAdvise_v2)]
778787
driver_sys::CUmemLocation {
779788
type_: driver_sys::CUmemLocationType::CU_MEM_LOCATION_TYPE_DEVICE,
789+
#[cfg(cuMemLocation_anon_id)]
780790
__bindgen_anon_1: driver_sys::CUmemLocation_st__bindgen_ty_1 { id },
791+
#[cfg(not(cuMemLocation_anon_id))]
792+
id,
781793
},
782794
#[cfg(not(cuMemAdvise_v2))]
783795
id,
@@ -801,7 +813,10 @@ pub trait MemoryAdvise<T: DeviceCopy>: private::Sealed {
801813
#[cfg(cuMemAdvise_v2)]
802814
driver_sys::CUmemLocation {
803815
type_: driver_sys::CUmemLocationType::CU_MEM_LOCATION_TYPE_DEVICE,
816+
#[cfg(cuMemLocation_anon_id)]
804817
__bindgen_anon_1: driver_sys::CUmemLocation_st__bindgen_ty_1 { id },
818+
#[cfg(not(cuMemLocation_anon_id))]
819+
id,
805820
},
806821
#[cfg(not(cuMemAdvise_v2))]
807822
id,

0 commit comments

Comments
 (0)