aboutsummaryrefslogtreecommitdiff
path: root/chapters/variable.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'chapters/variable.adoc')
-rw-r--r--chapters/variable.adoc67
1 files changed, 4 insertions, 63 deletions
diff --git a/chapters/variable.adoc b/chapters/variable.adoc
index 1f7da51..8522f5e 100644
--- a/chapters/variable.adoc
+++ b/chapters/variable.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 2023 ARM Limited
+// (C) COPYRIGHT 2023-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
@@ -21,31 +21,7 @@ include::{generated}/operators/VARIABLE.adoc[]
[source,c++]
----
-
-tensor_t var_tensor = variable_tensor_lookup(uid);
-
-// Invocation for the first time
-if (var_tensor == NULL) {
- // Allocate the persistent mutable memory for the variable tensor
- tensor_t var_tensor = variable_tensor_allocate<var_t>(var_shape, uid);
-
- if (initial_value != NULL) {
- REQUIRE(var_t == in_t);
- REQUIRE(var_shape == shape);
- for_each (index in shape) {
- // Copy data from initial_value to var_tensor
- in_t value = tensor_read<in_t>(initial_value, shape, index);
- tensor_write<in_t>(var_tensor.data, var_shape, index, value);
- }
- var_tensor.is_written = true;
- }
-} else { // Variable tensor has already been declared
- // It's invalid to declare the second variable with the same uid in a single graph execution,
- REQUIRE(!var_tensor.seen);
-}
-
-var_tensor.seen = true;
-
+include::{pseudocode}/operators/VARIABLE.tosac[lines=10..-1]
----
==== VARIABLE_WRITE
@@ -56,26 +32,7 @@ include::{generated}/operators/VARIABLE_WRITE.adoc[]
[source,c++]
----
-
-tensor_t. variable_tensor = variable_tensor_lookup(uid);
-// Check this variable tensor has been declared
-REQUIRE(variable_tensor);
-// The tensor has to be seen before to be written to
-// The seen variable is cleared before each graph execution and set in declaration
-REQUIRE(variable_tensor.seen);
-// Input tensor's shape and variable_tensor's shape have to match
-REQUIRE(variable_tensor.shape == shape);
-// Input tensor's shape and variable_tensor's type have to match
-REQUIRE(variable_tensor.type == in_t);
-
-for_each (index in shape) {
- // Write data from the input to the pseudo-buffer resource
- in_t value = tensor_read<in_t>(input1, shape, index);
- tensor_write<tensor_t>(variable_tensor.data, variable_tensor.shape, index, value);
-}
-
-variable_tensor.is_written = true;
-
+include::{pseudocode}/operators/VARIABLE_WRITE.tosac[lines=10..-1]
----
==== VARIABLE_READ
@@ -86,21 +43,5 @@ include::{generated}/operators/VARIABLE_READ.adoc[]
[source,c++]
----
-
-tensor_t variable_tensor = variable_tensor_lookup(uid);
-// Check this variable tensor has been decalred
-REQUIRE(variable_tensor != NULL);
-// Check this variable tensor has been written
-REQUIRE(variable_tensor.is_written);
-// Output tensor's shape and variable_tensor's shape have to match
-REQUIRE(variable_tensor.shape == shape);
-// Output tensor's shape and variable_tensor's type have to match
-REQUIRE(variable_tensor.type == out_t);
-
-for_each (index in shape) {
- // Read data from pseudo-buffer resource to the output
- out_t value = tensor_read<tensor_t>(variable_tensor.data, variable_tensor.shape, index);
- tensor_write<out_t>(input1, shape, index, value);
-}
-
+include::{pseudocode}/operators/VARIABLE_READ.tosac[lines=10..-1]
----