| #pragma once |
|
|
| |
| |
|
|
| #include <c10/macros/Macros.h> |
| #include <c10/util/irange.h> |
|
|
| namespace at { namespace detail { |
|
|
| template <typename T, int size_> |
| struct Array { |
| T data[size_]; |
|
|
| C10_HOST_DEVICE T operator[](int i) const { |
| return data[i]; |
| } |
| C10_HOST_DEVICE T& operator[](int i) { |
| return data[i]; |
| } |
| #if defined(USE_ROCM) |
| C10_HOST_DEVICE Array() = default; |
| C10_HOST_DEVICE Array(const Array&) = default; |
| C10_HOST_DEVICE Array& operator=(const Array&) = default; |
| #else |
| Array() = default; |
| Array(const Array&) = default; |
| Array& operator=(const Array&) = default; |
| #endif |
| static constexpr int size(){return size_;} |
| |
| C10_HOST_DEVICE Array(T x) { |
| for (int i = 0; i < size_; i++) { |
| data[i] = x; |
| } |
| } |
| }; |
|
|
| }} |
|
|