aboutsummaryrefslogtreecommitdiff
path: root/src/dynamic_fusion/sketch/gpu/ckw_driver/components/utils/WriterHelper.h
diff options
context:
space:
mode:
authorAdnan AlSinan <adnan.alsinan@arm.com>2023-07-10 15:20:44 +0100
committerAdnan AlSinan <adnan.alsinan@arm.com>2023-07-14 12:55:26 +0000
commit4184e86508c3b1a744e9687d1112ba5f65f55eeb (patch)
tree582520ac5cdf54800a36e8162c1f9b6f0f6f29d8 /src/dynamic_fusion/sketch/gpu/ckw_driver/components/utils/WriterHelper.h
parenta5577dbe4735656e488aa7a47261b993e49b6562 (diff)
downloadComputeLibrary-4184e86508c3b1a744e9687d1112ba5f65f55eeb.tar.gz
Port ClTemplateActivation into Ckw
Resolves COMPMID-6256 Signed-off-by: Adnan AlSinan <adnan.alsinan@arm.com> Change-Id: I48f6a9dfadefced20802bec1ab4ab843a9deba6e Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9912 Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: SiCong Li <sicong.li@arm.com> Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/dynamic_fusion/sketch/gpu/ckw_driver/components/utils/WriterHelper.h')
-rw-r--r--src/dynamic_fusion/sketch/gpu/ckw_driver/components/utils/WriterHelper.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/dynamic_fusion/sketch/gpu/ckw_driver/components/utils/WriterHelper.h b/src/dynamic_fusion/sketch/gpu/ckw_driver/components/utils/WriterHelper.h
index ca13329335..46c0f4ed8c 100644
--- a/src/dynamic_fusion/sketch/gpu/ckw_driver/components/utils/WriterHelper.h
+++ b/src/dynamic_fusion/sketch/gpu/ckw_driver/components/utils/WriterHelper.h
@@ -62,6 +62,32 @@ inline void load_lhs_rhs_tiles_and_prepare_sampler(GpuCkwScopedKernelWriter &wri
}
}
+/** Load src and dst tiles of dimension [m0, n0] only when not loaded and prepare the sampler
+ */
+inline void load_src_dst_tiles_and_prepare_sampler(GpuCkwScopedKernelWriter &writer, GpuCkwComponentArgument *src, GpuCkwComponentArgument *dst, int32_t m0, int32_t n0, SamplerCreator create_sampler)
+{
+ if(!src->has_tile())
+ {
+ const auto sampler = create_sampler(writer, m0, n0);
+ writer->op_load_once(src, sampler);
+ }
+ else
+ {
+ const auto &sampler = src->tile_sampler();
+ writer->op_load_once(src, sampler);
+ }
+
+ auto &src_tile = src->tile();
+ const auto &sampler = src->tile_sampler();
+
+ // Prepare the output tile.
+ if(!dst->has_tile())
+ {
+ auto &tile = writer->declare_tile("dst_tile", src_tile.tile_info());
+ dst->init_virtual_tensor(tile, sampler);
+ }
+}
+
} // namespace dynamic_fusion
} // namespace experimental
} // namespace arm_compute