#pragma once #include #include namespace at { namespace native { struct TupleInfoCPU { template using tuple = thrust::tuple; template static constexpr auto tie(Types&... args) noexcept { return thrust::tie(args...); } }; template using CompositeRandomAccessorCPU = CompositeRandomAccessor; template void swap( references_holder rh1, references_holder rh2 ) { return thrust::swap(rh1.data(), rh2.data()); } template auto get(references_holder rh) -> decltype(thrust::get(rh.data())) { return thrust::get(rh.data()); } }} // namespace at::native