11/* *
2- * Copyright 2024, XGBoost Contributors
2+ * Copyright 2024-2025 , XGBoost Contributors
33 */
44#include " device_helpers.cuh" // for CurrentDevice
55#include " resource.cuh"
@@ -18,14 +18,26 @@ CudaMmapResource::CudaMmapResource(StringView path, std::size_t offset, std::siz
1818 }},
1919 n_{length} {
2020 auto device = dh::CurrentDevice ();
21+ #if (CUDA_VERSION / 1000) >= 13
22+ cudaMemLocation loc;
23+ loc.type = cudaMemLocationTypeDevice;
24+ loc.id = device;
25+ #else
26+ auto loc = device;
27+ #endif // (CUDA_VERSION / 1000) >= 13
2128 dh::safe_cuda (
22- cudaMemAdvise (handle_->base_ptr , handle_->base_size , cudaMemAdviseSetReadMostly, device));
23- dh::safe_cuda (cudaMemAdvise (handle_->base_ptr , handle_->base_size ,
24- cudaMemAdviseSetPreferredLocation, device));
29+ cudaMemAdvise (handle_->base_ptr , handle_->base_size , cudaMemAdviseSetReadMostly, loc));
2530 dh::safe_cuda (
26- cudaMemAdvise (handle_->base_ptr , handle_->base_size , cudaMemAdviseSetAccessedBy, device));
31+ cudaMemAdvise (handle_->base_ptr , handle_->base_size , cudaMemAdviseSetPreferredLocation, loc));
32+ dh::safe_cuda (
33+ cudaMemAdvise (handle_->base_ptr , handle_->base_size , cudaMemAdviseSetAccessedBy, loc));
34+ #if (CUDA_VERSION / 1000) >= 13
35+ dh::safe_cuda (
36+ cudaMemPrefetchAsync (handle_->base_ptr , handle_->base_size , loc, 0 , dh::DefaultStream ()));
37+ #else
2738 dh::safe_cuda (
2839 cudaMemPrefetchAsync (handle_->base_ptr , handle_->base_size , device, dh::DefaultStream ()));
40+ #endif // (CUDA_VERSION / 1000) >= 13
2941}
3042
3143[[nodiscard]] void * CudaMmapResource::Data () {
0 commit comments