diff --git a/src/data/array_interface.cu b/src/data/array_interface.cu index 24a897972..8d477b1bb 100644 --- a/src/data/array_interface.cu +++ b/src/data/array_interface.cu @@ -62,43 +62,49 @@ void ArrayInterfaceHandler::SyncCudaStream(std::int64_t stream) { } bool ArrayInterfaceHandler::IsCudaPtr(void const* ptr) { + LOG(INFO) << "Entering IsCudaPtr with ptr: " << ptr; if (!ptr) { + LOG(INFO) << "Pointer is null, returning false"; return false; } + // Check if the pointer is within the process's address space + uintptr_t ptr_value = reinterpret_cast(ptr); + uintptr_t process_max_addr = (uintptr_t)-1; + LOG(INFO) << "Pointer value: " << ptr_value << ", Max address: " << process_max_addr; #if defined(XGBOOST_USE_HIP) hipPointerAttribute_t attr; - std::cerr << "Calling hipPointerGetAttributes" << std::endl; + LOG(INFO) << "Calling hipPointerGetAttributes"; auto err = hipPointerGetAttributes(&attr, ptr); - std::cerr << "hipPointerGetAttributes returned: " << hipGetErrorString(err) << std::endl; + LOG(INFO) << "hipPointerGetAttributes returned: " << hipGetErrorString(err); if (err == hipErrorInvalidValue) { - std::cerr << "Invalid pointer, returning false" << std::endl; + LOG(INFO) << "Invalid pointer (hipErrorInvalidValue), returning false"; return false; } else if (err == hipSuccess) { - std::cerr << "Pointer attributes obtained successfully" << std::endl; - std::cerr << "Memory type: " << attr.type << std::endl; + LOG(INFO) << "Pointer attributes obtained successfully"; + LOG(INFO) << "Memory type: " << attr.type; switch (attr.type) { case hipMemoryTypeUnregistered: - std::cerr << "Memory type is Unregistered, returning false" << std::endl; + LOG(INFO) << "Memory type is Unregistered, returning false"; return false; case hipMemoryTypeHost: - std::cerr << "Memory type is Host, returning false" << std::endl; + LOG(INFO) << "Memory type is Host, returning false"; return false; case hipMemoryTypeDevice: - std::cerr << "Memory type is Device, returning true" << std::endl; + LOG(INFO) << "Memory type is Device, returning true"; return true; case hipMemoryTypeManaged: - std::cerr << "Memory type is Managed, returning true" << std::endl; + LOG(INFO) << "Memory type is Managed, returning true"; return true; default: - std::cerr << "Unknown memory type: " << attr.type << std::endl; + LOG(WARNING) << "Unknown memory type: " << attr.type; return false; } } else { - std::cerr << "hipPointerGetAttributes failed with error: " - << hipGetErrorString(err) << std::endl; + LOG(WARNING) << "hipPointerGetAttributes failed with error: " + << hipGetErrorString(err); return false; } #elif defined(XGBOOST_USE_CUDA)