Skip to content

Commit 863bd50

Browse files
committed
Adds ThreeOffsets_CombinedIndexer
This enables strided data processing by gemm kernels
1 parent 0a2a711 commit 863bd50

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

dpctl/tensor/libtensor/include/utils/offset_utils.hpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,32 @@ struct ThreeZeroOffsets_Indexer
450450
}
451451
};
452452

453+
template <typename FirstIndexerT,
454+
typename SecondIndexerT,
455+
typename ThirdIndexerT>
456+
struct ThreeOffsets_CombinedIndexer
457+
{
458+
private:
459+
FirstIndexerT first_indexer_;
460+
SecondIndexerT second_indexer_;
461+
ThirdIndexerT third_indexer_;
462+
463+
public:
464+
ThreeOffsets_CombinedIndexer(const FirstIndexerT &first_indexer,
465+
const SecondIndexerT &second_indexer,
466+
const ThirdIndexerT &third_indexer)
467+
: first_indexer_(first_indexer), second_indexer_(second_indexer),
468+
third_indexer_(third_indexer)
469+
{
470+
}
471+
472+
ThreeOffsets<py::ssize_t> operator()(py::ssize_t gid) const
473+
{
474+
return ThreeOffsets<py::ssize_t>(
475+
first_indexer_(gid), second_indexer_(gid), third_indexer_(gid));
476+
}
477+
};
478+
453479
template <typename displacementT> struct FourOffsets
454480
{
455481
FourOffsets()

0 commit comments

Comments
 (0)