MCPcopy Create free account
hub / github.com/AnswerDotAI/gpu.cpp / Bindings

Class Bindings

gpu.hpp:130–170  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

128 * code.
129 */
130template <std::size_t N> struct Bindings {
131 std::array<Tensor, N> data;
132 std::array<size_t, N> viewOffsets;
133 std::array<size_t, N> viewSpans;
134 Bindings(const std::initializer_list<Tensor> &init) {
135 std::copy(begin(init), end(init), begin(data));
136 std::fill(begin(viewOffsets), end(viewOffsets), 0);
137 for (size_t i = 0; i < N; ++i) {
138 viewSpans[i] = data[i].data.size;
139 }
140 }
141
142 Bindings(const std::array<Tensor, N> &init) {
143 std::copy(begin(init), end(init), begin(data));
144 std::fill(begin(viewOffsets), end(viewOffsets), 0);
145 for (size_t i = 0; i < N; ++i) {
146 viewSpans[i] = data[i].data.size;
147 }
148 }
149
150 Bindings(const std::initializer_list<TensorView> &init) {
151 size_t i = 0;
152 for (const auto &tv : init) {
153 data[i] = tv.data;
154 viewOffsets[i] = tv.offset;
155 viewSpans[i] = tv.span;
156 ++i;
157 }
158 }
159
160 Bindings(const std::initializer_list<Array> &init) {
161 std::copy(begin(init), end(init), begin(data));
162 std::fill(begin(viewOffsets), end(viewOffsets), 0);
163 for (size_t i = 0; i < N; ++i) {
164 viewSpans[i] = data[i].size;
165 }
166 }
167
168 Tensor &operator[](std::size_t index) { return data[index]; }
169 const Tensor &operator[](std::size_t index) const { return data[index]; }
170};
171
172/**
173 * @brief Deduction guide for Bindings

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected