Files
pytorch/c10/core/SymIntArrayRef.cpp
Nikolay Korovaiko 032facd6e6 Enabling SymInt in autograd; take 3 (#81145)
Fixes #ISSUE_NUMBER

Pull Request resolved: https://github.com/pytorch/pytorch/pull/81145
Approved by: https://github.com/ezyang
2022-07-22 00:14:50 +00:00

35 lines
815 B
C++

#include <c10/core/SymIntArrayRef.h>
#include <c10/util/Optional.h>
#include <iostream>
namespace c10 {
at::IntArrayRef asIntArrayRefSlow(c10::SymIntArrayRef ar) {
auto r = asIntArrayRefSlowOpt(ar);
TORCH_CHECK(
r.has_value(),
"SymIntArrayRef expected to contain only concrete integers");
return *r;
}
c10::optional<at::IntArrayRef> asIntArrayRefSlowOpt(c10::SymIntArrayRef ar) {
for (c10::SymInt sci : ar) {
if (sci.is_symbolic()) {
return c10::nullopt;
}
}
return {asIntArrayRefUnchecked(ar)};
}
at::IntArrayRef asIntArrayRefUnchecked(c10::SymIntArrayRef ar) {
return IntArrayRef(reinterpret_cast<const int64_t*>(ar.data()), ar.size());
}
std::ostream& operator<<(std::ostream& os, SymInt s) {
os << "SymInt(" << s.data() << ")";
return os;
}
} // namespace c10