From e73291d97d6e2c47e3590e733068424947089bce Mon Sep 17 00:00:00 2001
From: thibault allenet <thibault.allenet@cea.fr>
Date: Fri, 13 Dec 2024 15:27:40 +0000
Subject: [PATCH] Add jinja templates

---
 .../templates/configuration/conv_config.jinja |  3 +-
 .../templates/configuration/fc_config.jinja   |  3 +-
 .../templates/configuration/pool_config.jinja |  2 +-
 .../forward_call/custom_conv_kernel.jinja     | 17 ++++++++
 .../forward_call/custom_fc_kernel.jinja       | 12 ++++++
 .../forward_call/custom_pool_kernel.jinja     | 18 ++++++++
 .../templates/forward_call/forward.jinja      | 43 +++++++++++++++++++
 7 files changed, 93 insertions(+), 5 deletions(-)
 create mode 100644 aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_conv_kernel.jinja
 create mode 100644 aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_fc_kernel.jinja
 create mode 100644 aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_pool_kernel.jinja
 create mode 100644 aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/forward.jinja

diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/conv_config.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/conv_config.jinja
index 6a48f2b..cea1af7 100644
--- a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/conv_config.jinja
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/conv_config.jinja
@@ -2,8 +2,7 @@
 #ifndef {{ name|upper }}_LAYER_H
 #define {{ name|upper }}_LAYER_H
 
-#include "typedefs.h"
-#include "nn_scaling_functions.hpp"
+#include "kernels/nn_scaling_functions.hpp"
 
 {% include "./_def_io.jinja" %}
 {% include "./_meminfo.jinja" %}
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/fc_config.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/fc_config.jinja
index ab33588..ba84b82 100644
--- a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/fc_config.jinja
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/fc_config.jinja
@@ -2,8 +2,7 @@
 #ifndef {{ name|upper }}_LAYER_H
 #define {{ name|upper }}_LAYER_H
 
-#include "typedefs.h"
-#include "nn_scaling_functions.hpp"
+#include "kernels/nn_scaling_functions.hpp"
 
 {# For layer configuration -#}
 {% include "./_def_io.jinja" %}
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/pool_config.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/pool_config.jinja
index 02586f2..363e6f9 100644
--- a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/pool_config.jinja
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/pool_config.jinja
@@ -2,7 +2,7 @@
 #ifndef {{ name|upper }}_LAYER_H
 #define {{ name|upper }}_LAYER_H
 
-#include "typedefs.h"
+{# #include "typedefs.h" #}
 
 {# For layer configuration -#}
 {% include "./_def_io.jinja" %}
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_conv_kernel.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_conv_kernel.jinja
new file mode 100644
index 0000000..b7dc7bd
--- /dev/null
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_conv_kernel.jinja
@@ -0,0 +1,17 @@
+{% filter indent(width=4, first=False) %}
+{% include "./_mem_offset.jinja" %}
+N2D2_Export::customconvcellPropagate<{{ in_name[0]|upper }}_NB_CHANNELS,
+                               {{ in_name[0]|upper }}_IN_HEIGHT,
+                               {{ in_name[0]|upper }}_IN_WIDTH,
+                               {{ out_name[0]|upper }}_NB_OUTPUTS,
+                               {{ out_name[0]|upper }}_OUT_HEIGHT,
+                               {{ out_name[0]|upper }}_OUT_WIDTH,
+                               {{ name|upper }}_PADDING_Y,
+                               {{ name|upper }}_PADDING_X,
+                               {{ name|upper }}_STRIDE_Y,
+                               {{ name|upper }}_STRIDE_X,
+                               {{ name|upper }}_KERNEL_HEIGHT,
+                               {{ name|upper }}_KERNEL_WIDTH,
+                               {{ name|upper }}_ACTIVATION, data<32>>
+                               ({{in_name[0]}}, {{out_name[0]}}, {{in_name[2]}}, {{in_name[1]}}, {{ name|upper }}_SCALING);
+{% endfilter %}
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_fc_kernel.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_fc_kernel.jinja
new file mode 100644
index 0000000..7de2649
--- /dev/null
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_fc_kernel.jinja
@@ -0,0 +1,12 @@
+{% filter indent(width=4, first=False) %}
+{% include "./_mem_offset.jinja" %}
+N2D2_Export::fccellPropagate<{{ in_name[0] | upper }}_NB_CHANNELS,
+                             {{ in_name[0] | upper }}_IN_HEIGHT,
+                             {{ in_name[0] | upper }}_IN_WIDTH,
+                             {{ out_name[0] | upper }}_NB_OUTPUTS,
+                             {{ out_name[0] | upper }}_OUT_HEIGHT,
+                             {{ out_name[0] | upper }}_OUT_WIDTH,
+                             {{name|upper}}_ACTIVATION,
+                             data<32>>
+                             ({{ in_name[0] }}, {{ out_name[0] }}, {{ in_name[2] }}, {{ in_name[1] }}, {{ name | upper }}_SCALING);
+{% endfilter %}
\ No newline at end of file
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_pool_kernel.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_pool_kernel.jinja
new file mode 100644
index 0000000..5fe2d35
--- /dev/null
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_pool_kernel.jinja
@@ -0,0 +1,18 @@
+{% filter indent(width=4, first=False) %}
+{% include "./_mem_offset.jinja" %}
+N2D2_Export::custompoolcellPropagate<{{ in_name[0]|upper }}_NB_CHANNELS,
+                               {{ in_name[0]|upper }}_IN_HEIGHT,
+                               {{ in_name[0]|upper }}_IN_WIDTH,
+                               {{ out_name[0]|upper }}_NB_OUTPUTS,
+                               {{ out_name[0]|upper }}_OUT_HEIGHT,
+                               {{ out_name[0]|upper }}_OUT_WIDTH,
+                               {{ name|upper }}_PADDING_Y,
+                               {{ name|upper }}_PADDING_X,
+                               {{ name|upper }}_STRIDE_Y,
+                               {{ name|upper }}_STRIDE_X,
+                               {{ name|upper }}_KERNEL_HEIGHT,
+                               {{ name|upper }}_KERNEL_WIDTH,
+                               {{ name|upper }}_POOLING_TYPE,
+                               {{ name|upper }}_ACTIVATION>
+                               ({{in_name[0]}}, {{out_name[0]}});
+{% endfilter %}
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/forward.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/forward.jinja
new file mode 100644
index 0000000..fa87a65
--- /dev/null
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/forward.jinja
@@ -0,0 +1,43 @@
+
+#include <stdint.h>
+
+#ifdef SAVE_OUTPUTS
+#include <sys/types.h>
+#include <sys/stat.h>
+#endif
+
+#include "include/forward.hpp"
+
+// Layer & memory configurations
+{%- for header in headers %}
+#include "{{ header }}"
+{%- endfor %}
+
+// blabla
+
+// Memory block
+{%- if mem_section == None %}
+static {{mem_ctype}} mem[{{peak_mem}}];
+{%- else %}
+static {{mem_ctype}} mem[{{peak_mem}}] __attribute__((section("{{ mem_section }}")));
+{%- endif %}
+
+{# Forward function #}
+{#- Support multiple inputs with different datatypes and multiple outputs with different datatypes -#}
+void {{ func_name }} (
+    {%- for i in range(inputs_name | length) -%}
+    const {{ inputs_dtype[i] }}* {{ inputs_name[i] }},
+    {%- endfor -%}
+    {%- for o in range(outputs_name | length) -%}
+    {{ outputs_dtype[o] }}** {{ outputs_name[o] }}_ptr{% if not loop.last %}, {% endif %}
+    {%- endfor -%})
+{
+
+    {%- for action in actions %}
+    {{ action }}
+    {%- endfor %}
+
+    {%- for output_name in outputs_name %}
+    *{{ output_name }}_ptr = {{ output_name }};
+    {%- endfor %}
+}
-- 
GitLab