From a7ac313a13f8f82b4b3ca9730bd746392f6600d9 Mon Sep 17 00:00:00 2001 From: Kevin Petit Date: Mon, 8 Jan 2024 15:27:25 +0000 Subject: Move operator pseudocode to separate files This makes it easier to process the pseudocode automatically. Change-Id: I84394192598e589de07d43a7af60b96788e14f86 Signed-off-by: Kevin Petit --- chapters/scatter_gather.adoc | 32 +++----------------------------- 1 file changed, 3 insertions(+), 29 deletions(-) (limited to 'chapters/scatter_gather.adoc') diff --git a/chapters/scatter_gather.adoc b/chapters/scatter_gather.adoc index d694d39..4632e3a 100644 --- a/chapters/scatter_gather.adoc +++ b/chapters/scatter_gather.adoc @@ -1,7 +1,7 @@ // // This confidential and proprietary software may be used only as // authorised by a licensing agreement from ARM Limited -// (C) COPYRIGHT 2020-2021 ARM Limited +// (C) COPYRIGHT 2020-2024 ARM Limited // ALL RIGHTS RESERVED // The entire notice above must be reproduced on all authorised // copies and copies may only be made to the extent permitted @@ -18,12 +18,7 @@ include::{generated}/operators/GATHER.adoc[] [source,c++] ---- -for_each(0 <= n < N, 0 <= w < W, 0 <= c < C) { - index_t k = tensor_read(indices, [N,W], [n,w]); - REQUIRE(0 <= k && k < K); - in_out_t value = tensor_read(values, [N,K,C], [n,k,c]); - tensor_write(output, [N,W,C], [n,w,c], value); -} +include::{pseudocode}/operators/GATHER.tosac[lines=10..-1] ---- ==== SCATTER @@ -38,26 +33,5 @@ include::{generated}/operators/SCATTER.adoc[] [source,c++] ---- - -// The following array is used to check compliance that an output position -// is modified at most once. -bool_t output_modified[N,K,C]; - -// Copy the values_in tensor to the values_out tensor. -// Values not written by the scatter operation are unchanged in the output. -for_each(0 <= n < N, 0 <= k < K, 0 <= c < C) { - in_out_t value = tensor_read(values_in, [N,K,C], [n,k,c]); - tensor_write(values_out, [N,K,C], [n, k, c], value); - output_modified[n,k,c]=false; -} - -// Now perform the SCATTER operation, modifying the positions from the indices tensor -for_each(0 <= n < N, 0 <= w < W, 0 <= c < C) { - index_t k = tensor_read(indices, [N,W], [n,w]); - REQUIRE(0 <= k && k < K); - REQUIRE(output_modified[n,k,c] == false); - in_out_t value = tensor_read(input, [N,W,C], [n,w,c]); - tensor_write(values_out, [N,K,C], [n, k, c], value); - output_modified[n,k,c] = true; -} +include::{pseudocode}/operators/SCATTER.tosac[lines=10..-1] ---- -- cgit v1.2.1