diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Add/aidge_add_float32.h b/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Add/aidge_add_float32.h index c9cfc152851099e4f307ee95450ce28baf76114e..ad11e15f0fb41e8487e037314de10bb360cd033e 100644 --- a/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Add/aidge_add_float32.h +++ b/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Add/aidge_add_float32.h @@ -1,17 +1,17 @@ -void aidge_add_float32(float* input_a, - float* input_b, - float* output, - int dim_a[], - int dim_b[], - int output_Dim[], +void aidge_add_float32(const float* input_a, + const float* input_b, + float* output, + const int dim_a[], + const int dim_b[], + const int output_Dim[], int size_dima, int size_dimb, int size_outputDim, int output_size) { - // Broadcast dims - int ndim_a[size_outputDim]; - int ndim_b[size_outputDim]; + // Broadcast dims + int ndim_a[size_outputDim]; + int ndim_b[size_outputDim]; for (int i= 0; i<size_outputDim; i++){ int idx = size_outputDim-size_dima; @@ -96,4 +96,4 @@ void aidge_add_float32(float* input_a, } } -} \ No newline at end of file +} diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Mul/aidge_mul_float32.h b/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Mul/aidge_mul_float32.h index dbbf908cee8699bd09b6bc83b8abeeb481c26c05..8045717cbee6ebeee82e7f379726d530166288b7 100644 --- a/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Mul/aidge_mul_float32.h +++ b/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Mul/aidge_mul_float32.h @@ -1,17 +1,17 @@ -void aidge_mul_float32(float* input_a, - float* input_b, - float* output, - int dim_a[], - int dim_b[], - int output_Dim[], +void aidge_mul_float32(const float* input_a, + const float* input_b, + float* output, + const int dim_a[], + const int dim_b[], + const int output_Dim[], int size_dima, int size_dimb, int size_outputDim, int output_size) { - // Broadcast dims - int ndim_a[size_outputDim]; - int ndim_b[size_outputDim]; + // Broadcast dims + int ndim_a[size_outputDim]; + int ndim_b[size_outputDim]; for (int i= 0; i<size_outputDim; i++){ int idx = size_outputDim-size_dima; @@ -96,4 +96,4 @@ void aidge_mul_float32(float* input_a, } } -} \ No newline at end of file +} diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Sub/aidge_sub_float32.h b/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Sub/aidge_sub_float32.h index 1f4f7d798eedcb9d4504087ba02179203ee46772..99bd9a0e54857004d0944e7f854db28732abe580 100644 --- a/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Sub/aidge_sub_float32.h +++ b/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Sub/aidge_sub_float32.h @@ -1,11 +1,11 @@ -void aidge_sub_float32(float* input_a, - float* input_b, - float* output, +void aidge_sub_float32(const float* input_a, + const float* input_b, + float* output, unsigned int size) { for (unsigned int i = 0; i < size; ++i) { output[i] = input_a[i] - input_b[i]; } -} \ No newline at end of file +} diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/add.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/add.jinja new file mode 100644 index 0000000000000000000000000000000000000000..67b1c33e026f3a682d389adc1b67e901ebe9c0e5 --- /dev/null +++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/add.jinja @@ -0,0 +1,21 @@ +{#- For name header -#} +#ifndef {{ name|upper }}_LAYER_H +#define {{ name|upper }}_LAYER_H + +/* ElemWise - add layer */ +{% include "./_def_io.jinja" %} +{% include "./_meminfo.jinja" %} + + +{# For layer configuration -#} +#define {{ name|upper }}_OUTPUTS_SIZE {{ out_size[0] }} + +#define {{name|upper}}_IN_0_NB_DIMS {{ in_dims[0]|length}} +#define {{name|upper}}_IN_1_NB_DIMS {{ in_dims[1]|length}} +#define {{name|upper}}_OUT_0_NB_DIMS {{ out_dims[0]|length}} + +static const int {{name|upper}}_IN_0_DIMS[] = { {{ in_dims[0]|join(", ") }} }; +static const int {{name|upper}}_IN_1_DIMS[] = { {{ in_dims[1]|join(", ") }} }; +static const int {{name|upper}}_OUT_0_DIMS[] = { {{ out_dims[0]|join(", ") }} }; + +#endif /* {{ name|upper }}_LAYER_H */ diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/mul.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/mul.jinja new file mode 100644 index 0000000000000000000000000000000000000000..e7c303e001983288c1286f5c5b006e9fdd2c61cd --- /dev/null +++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/mul.jinja @@ -0,0 +1,20 @@ +{#- For name header -#} +#ifndef {{ name|upper }}_LAYER_H +#define {{ name|upper }}_LAYER_H + +/* ElemWise - mul layer */ +{% include "./_def_io.jinja" %} +{% include "./_meminfo.jinja" %} + +{# For layer configuration -#} +#define {{ name|upper }}_OUTPUTS_SIZE {{ out_size[0] }} + +#define {{name|upper}}_IN_0_NB_DIMS {{ in_dims[0]|length}} +#define {{name|upper}}_IN_1_NB_DIMS {{ in_dims[1]|length}} +#define {{name|upper}}_OUT_0_NB_DIMS {{ out_dims[0]|length}} + +static const int {{name|upper}}_IN_0_DIMS[] = { {{ in_dims[0]|join(", ") }} }; +static const int {{name|upper}}_IN_1_DIMS[] = { {{ in_dims[1]|join(", ") }} }; +static const int {{name|upper}}_OUT_0_DIMS[] = { {{ out_dims[0]|join(", ") }} }; + +#endif /* {{ name|upper }}_LAYER_H */ diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/sub.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/sub.jinja new file mode 100644 index 0000000000000000000000000000000000000000..9ed0a8f718bb9f66b3541755a86b24d4de82390f --- /dev/null +++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/sub.jinja @@ -0,0 +1,22 @@ +{#- For name header -#} +#ifndef {{ name|upper }}_LAYER_H +#define {{ name|upper }}_LAYER_H + +/* ElemWise - sub layer */ +{% include "./_def_io.jinja" %} +{% include "./_meminfo.jinja" %} + +{# For layer configuration -#} +#define {{ name|upper }}_INPUTS_SIZE {{ in_size[0] }} +#define {{ name|upper }}_OUTPUTS_SIZE {{ out_size[0] }} + + +#define {{in_name[0]|upper}}_NB_DIM {{ in_dims[0]|length}} +#define {{in_name[1]|upper}}_NB_DIM {{ in_dims[1]|length}} +#define {{out_name[0]|upper}}_NB_DIM {{ out_dims[0]|length}} + +static const int {{ in_name[0]|upper }}_DIMS[] = { {{ in_dims[0]|join(", ") }} }; +static const int {{ in_name[1]|upper }}_DIMS[] = { {{ in_dims[1]|join(", ") }} }; +static const int {{ out_name[0]|upper }}_DIMS[] = { {{ out_dims[0]|join(", ") }} }; + +#endif /* {{ name|upper }}_LAYER_H */ diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/add.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/add.jinja new file mode 100644 index 0000000000000000000000000000000000000000..8f0d486457f07102695f38433243784f756feb6c --- /dev/null +++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/add.jinja @@ -0,0 +1,14 @@ +{% if not is_output %} +{{out_cdtype[0]}}* {{out_name[0]}} = ({{out_cdtype[0]}}*) mem + {{out_name[0]|upper}}_OFFSET; +{% endif %} +aidge_add_float32( + {{in_name[0]}}, + {{in_name[1]}}, + {{out_name[0]}}, + {{name|upper}}_IN_0_DIMS, + {{name|upper}}_IN_1_DIMS, + {{name|upper}}_OUT_0_DIMS, + {{name|upper}}_IN_0_NB_DIMS, + {{name|upper}}_IN_1_NB_DIMS, + {{name|upper}}_OUT_0_NB_DIMS, + {{name|upper}}_OUTPUTS_SIZE); diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/elemwise.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/elemwise.jinja deleted file mode 100644 index 98d6cc95682c27cc1b7468e6972653ecf0189ca9..0000000000000000000000000000000000000000 --- a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/elemwise.jinja +++ /dev/null @@ -1 +0,0 @@ -aidge_{{elemwise_op|lower}}_{{out_dtype[0]}} ({{in_name[0]}}, {{in_name[1]}}, {{out_name[0]}}, {{in_name[0]}}_DIMS, {{in_name[1]}}_DIMS, {{out_name[0]}}_DIMS,{{in_name[0]|upper}}_NB_DIM,{{in_name[1]|upper}}_NB_DIM,{{out_name[0]|upper}}_NB_DIM, {{name|upper}}_OUTPUTS_SIZE); diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/mul.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/mul.jinja new file mode 100644 index 0000000000000000000000000000000000000000..056746e13f1b33bebfd4d626ccc346aedd20b3f8 --- /dev/null +++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/mul.jinja @@ -0,0 +1,14 @@ +{% if not is_output %} +{{out_cdtype[0]}}* {{out_name[0]}} = ({{out_cdtype[0]}}*) mem + {{out_name[0]|upper}}_OFFSET; +{% endif %} +aidge_mul_float32( + {{in_name[0]}}, + {{in_name[1]}}, + {{out_name[0]}}, + {{name|upper}}_IN_0_DIMS, + {{name|upper}}_IN_1_DIMS, + {{name|upper}}_OUT_0_DIMS, + {{name|upper}}_IN_0_NB_DIMS, + {{name|upper}}_IN_1_NB_DIMS, + {{name|upper}}_OUT_0_NB_DIMS, + {{name|upper}}_OUTPUTS_SIZE); diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/sub.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/sub.jinja new file mode 100644 index 0000000000000000000000000000000000000000..1bf7fc6347666bef42f3504b4c34ca0f7f19229e --- /dev/null +++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/sub.jinja @@ -0,0 +1,5 @@ +{% if not is_output %} +{{out_cdtype[0]}}* {{out_name[0]}} = ({{out_cdtype[0]}}*) mem + {{out_name[0]|upper}}_OFFSET; +{% endif %} + +aidge_sub_float32({{in_name[0]}}, {{in_name[1]}}, {{out_name[0]}}, {{name|upper}}_OUTPUTS_SIZE); diff --git a/aidge_export_arm_cortexm/operators.py b/aidge_export_arm_cortexm/operators.py index c41304169e8a47af38d26a50e642d45c900ab2d4..9270ee93723ca6f16275865dbfd33725e94b4bda 100644 --- a/aidge_export_arm_cortexm/operators.py +++ b/aidge_export_arm_cortexm/operators.py @@ -322,10 +322,9 @@ class FC_ARMCortexM(ExportNodeCpp): class Add_ARMCortexM(ExportNodeCpp): def __init__(self, node, mem_info, is_input, is_output): super().__init__(node, mem_info, is_input, is_output) - self.attributes["elemwise_op"] = "\"ADD\"" - self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "elemwise.jinja") - self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "elemwise.jinja") + self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "add.jinja") + self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "add.jinja") self.include_list = [] self.kernels_to_copy = [ str(ROOT / "_Aidge_Arm" / "kernels" / "Add" / "aidge_add_float32.h"), @@ -333,13 +332,12 @@ class Add_ARMCortexM(ExportNodeCpp): ] @ExportLibAidgeARM.register("Sub", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32))) -class Add_ARMCortexM(ExportNodeCpp): +class Sub_ARMCortexM(ExportNodeCpp): def __init__(self, node, mem_info, is_input, is_output): super().__init__(node, mem_info, is_input, is_output) - self.attributes["elemwise_op"] = "\"SUB\"" - self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "elemwise.jinja") - self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "elemwise.jinja") + self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "sub.jinja") + self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "sub.jinja") self.include_list = [] self.kernels_to_copy = [ str(ROOT / "_Aidge_Arm" / "kernels" / "Sub" / "aidge_sub_float32.h"), @@ -350,10 +348,9 @@ class Add_ARMCortexM(ExportNodeCpp): class Mul_ARMCortexM(ExportNodeCpp): def __init__(self, node, mem_info, is_input, is_output): super().__init__(node, mem_info, is_input, is_output) - self.attributes["elemwise_op"] = "\"MUL\"" - self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "elemwise.jinja") - self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "elemwise.jinja") + self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "mul.jinja") + self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "mul.jinja") self.include_list = [] self.kernels_to_copy = [ str(ROOT / "_Aidge_Arm" / "kernels" / "Mul" / "aidge_mul_float32.h"),