#pragma once #include <ATen/cuda/Exceptions.h> #include <cuda.h> #include <cuda_runtime.h> namespace at::cuda { inline Device getDeviceFromPtr(void* ptr) { cudaPointerAttributes attr{}; AT_CUDA_CHECK(cudaPointerGetAttributes(&attr, ptr)); #if !defined(USE_ROCM) TORCH_CHECK(attr.type != cudaMemoryTypeUnregistered, "The specified pointer resides on host memory and is not registered with any CUDA device."); #endif return {c10::DeviceType::CUDA, static_cast<DeviceIndex>(attr.device)}; } } // namespace at::cuda
Memory