diff --git a/src/common/device_helpers.hip.h b/src/common/device_helpers.hip.h index a27b92425..7bc7d2e8f 100644 --- a/src/common/device_helpers.hip.h +++ b/src/common/device_helpers.hip.h @@ -995,16 +995,17 @@ auto Reduce(Policy policy, InputIt first, InputIt second, Init init, Func reduce std::cerr << "Processing batch: offset=" << offset << ", batch_size=" << batch_size << std::endl; - try { - // Instead of trying to get raw pointers, let's print the iterator types + try { + // Print the iterator types std::cerr << "Iterator types - begin: " << typeid(begin_it).name() << ", end: " << typeid(end_it).name() << std::endl; // If we need to check pointer validity, we can do it like this: if (batch_size > 0) { - auto& first_element = *begin_it; + // Use thrust::raw_pointer_cast to get the underlying device pointer + auto raw_ptr = thrust::raw_pointer_cast(&(*begin_it)); hipPointerAttribute_t attrs; - hipError_t ptr_err = hipPointerGetAttributes(&attrs, &first_element); + hipError_t ptr_err = hipPointerGetAttributes(&attrs, raw_ptr); if (ptr_err != hipSuccess) { std::cerr << "Invalid pointer for first element: " << hipGetErrorString(ptr_err) << std::endl; } else {