_unique_dim_cpu_impl Class — pytorch Architecture
Architecture documentation for the _unique_dim_cpu_impl class in Unique.cpp from the pytorch codebase.
Entity Profile
Source Code
aten/src/ATen/native/Unique.cpp lines 324–354
template<class ForwardIt>
ForwardIt _unique_dim_cpu_impl(ForwardIt first, ForwardIt last,
std::vector<int64_t>& indices, Tensor inverse_indices_vec, Tensor counts) {
if (first == last) {
return last;
}
TORCH_INTERNAL_ASSERT(inverse_indices_vec.is_contiguous(),
"_unique_dim_cpu_impl only support contiguous inverse_indices_vec");
TORCH_INTERNAL_ASSERT(counts.is_contiguous(),
"_unique_dim_cpu_impl only support contiguous counts");
int64_t *indices_data = indices.data();
int64_t *inverse_data = inverse_indices_vec.data_ptr<int64_t>();
int64_t *counts_data = counts.data_ptr<int64_t>();
ForwardIt result = first;
ForwardIt previous = first;
int64_t *current_counts = counts_data;
inverse_data[*(indices_data++)] = 0;
for (ForwardIt current = std::next(first); current != last; current++) {
if (!at::equal(*current, *result)) {
*(++result) = std::move(*current);
*(current_counts++) = std::distance(previous, current);
previous = current;
}
inverse_data[*(indices_data++)] = std::distance(first, result);
}
*current_counts = std::distance(previous, last);
return ++result;
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free