diff --git a/aidge_core/export_utils/templates/c_data.jinja b/aidge_core/export_utils/templates/c_data.jinja new file mode 100644 index 0000000000000000000000000000000000000000..3709379e5c5417233341837d853cc6f68872a194 --- /dev/null +++ b/aidge_core/export_utils/templates/c_data.jinja @@ -0,0 +1,6 @@ +{#- For libraries #} +#include <stdint.h> + {# Design header of the array -#} +static const {{ data_t }} {{ name }}[{{ dims |join("*") }}] __attribute__((section("nn_data"))) = { +{{ values |join(", ") }} +}; diff --git a/aidge_core/export_utils/tensor_export.py b/aidge_core/export_utils/tensor_export.py new file mode 100644 index 0000000000000000000000000000000000000000..43f013dd02e730ae72c89a5bbe329c4fbb8a0324 --- /dev/null +++ b/aidge_core/export_utils/tensor_export.py @@ -0,0 +1,40 @@ +import os + +from aidge_core.export_utils.code_generation import generate_file +from aidge_core.export_utils.data_conversion import aidge2c +from aidge_core import Tensor +from pathlib import Path + +def tensor_to_c(tensor:Tensor)->str: + """Given a :py:class:``aigd_core.Tensor``, return a C description of the tensor. + For example: + { + {1, 2}, + {3, 4} + } + + :param tensor: Tensor to transform to a string + :type tensor: Tensor + :return: String representation of a C array + :rtype: str + """ + return str(tensor) + +def generate_input_file(export_folder:str, + array_name:str, + tensor:Tensor): + + # If directory doesn't exist, create it + if not os.path.exists(export_folder): + os.makedirs(export_folder) + print(f"gen : {export_folder}/{array_name}.h") + ROOT = Path(__file__).resolve().parents[0] + generate_file( + file_path=f"{export_folder}/{array_name}.h", + template_path=str(ROOT / "templates" / "c_data.jinja"), + dims = tensor.dims(), + data_t = aidge2c(tensor.dtype()), + name = array_name, + values = list(tensor) + ) +