2#include <muda/tools/string_pointer.h>
3#include <muda/view/view_base.h>
4#include <muda/ext/field/field_entry_layout.h>
5#include <muda/ext/field/field_entry_base_data.h>
6#include <muda/ext/field/matrix_map_info.h>
7#include <muda/ext/field/field_entry_core.h>
9#include <muda/ext/field/field_entry_viewer.h>
10#include <muda/tools/host_device_config.h>
14template <
bool IsConst,
typename T, FieldEntryLayout Layout,
int M,
int N>
23 using auto_const_t =
typename Base::template auto_const_t<U>;
27 using ThisViewer = std::conditional_t<IsConst, ConstViewer, NonConstViewer>;
29 using MatStride =
typename ViewerCore::MatStride;
30 using ConstMatMap =
typename ViewerCore::ConstMatMap;
31 using NonConstMatMap =
typename ViewerCore::NonConstMatMap;
32 using ThisMatMap =
typename ViewerCore::ThisMatMap;
41 MUDA_GENERIC T* data(
int i)
const
43 return m_core->template data<T, Layout>(m_offset + i);
46 MUDA_GENERIC T* data(
int i,
int j)
const
49 return m_core->template data<T, Layout>(m_offset + i, j);
52 MUDA_GENERIC T* data(
int i,
int row_index,
int col_index)
const
54 return m_core->template data<T, Layout>(m_offset + i, row_index, col_index);
67 m_stride = details::field::make_stride<T, Layout, M, N>(*m_core);
75 MUDA_KERNEL_ASSERT(offset >= 0 && size >= 0 && offset + size <= core->count(),
76 "(offset,size) is out of range, offset=%d, size=%d, count=%d",
82 MUDA_GENERIC
auto layout_info()
const {
return m_core->layout_info(); }
83 MUDA_GENERIC
auto layout()
const {
return layout_info().layout(); }
84 MUDA_GENERIC
auto offset()
const {
return m_offset; }
85 MUDA_GENERIC
auto size()
const {
return m_size; }
86 MUDA_GENERIC
auto total_count()
const {
return m_core->count(); }
87 MUDA_GENERIC
auto elem_byte_size()
const
89 return m_core->elem_byte_size();
91 MUDA_GENERIC
auto shape()
const {
return m_core->shape(); }
92 MUDA_GENERIC
auto struct_stride()
const {
return m_core->struct_stride(); }
94 MUDA_GENERIC
auto name()
const {
return m_core->name(); }
95 MUDA_GENERIC
auto viewer() {
return ThisViewer{m_core, offset(), size()}; }
96 MUDA_GENERIC
auto cviewer()
const
98 return ConstViewer{m_core, offset(), size()};
106template <
bool IsConst,
typename T, FieldEntryLayout Layout,
int M,
int N>
107class FieldEntryViewBase;
108template <
typename T, FieldEntryLayout Layout,
int M,
int N>
110template <
typename T, FieldEntryLayout Layout,
int M,
int N>
111class CFieldEntryView;
115#include "details/entry_view/field_entry_view_matrix.inl"
116#include "details/entry_view/field_entry_view_vector.inl"
117#include "details/entry_view/field_entry_view_scalar.inl"
121template <
typename T, FieldEntryLayout Layout,
int M,
int N>
127template <
typename T, FieldEntryLayout Layout,
int M,
int N>
A view interface for any array-like liner memory, which can be constructed from DeviceBuffer/DeviceVe...
Definition field_entry_view_matrix.inl:110
Definition field_entry_viewer_matrix.inl:52
Definition field_entry_launch.h:9
Definition field_entry_view.h:16
Definition field_entry_view_matrix.inl:154
Definition field_entry_viewer.h:42
Definition field_entry_viewer_matrix.inl:77
Definition host_device_config.h:12
Definition field_entry_view.h:59
Definition type_modifier.h:22
Definition type_modifier.h:28