Skip to content
Snippets Groups Projects

Export refactor

Merged Cyril Moineau requested to merge allowNoInputProducer into dev

Context

&12

Changes

  • Mutualize meminfo between exports
    • Make work Aidge memory manager (currently a simple version is used ...)
    • Add meminfo in export_node
  • Create ExportScheduler to mutualize function between exports
    • Better handle input/ouput of graph by avoiding double memory allocation
    • Regisration done with backends
    • Generate mem manager and scheduling
  • Mutualize Meminfo in aidge_core
  • Mutualize functions to generate files in export
  • Refactor Export node
    • Add a dictionnary attributes to stack all the attributes desirable for the export
    • Get recursively attributes for MetaOperator (tracked by #180 (closed))
    • Add function to be agnostic from data form (get_input_channel etc ...)
    • Mutualize export and configuration function, with this change, dev of export only need to inform parameters when creating export_node and no longer to worry about copying kernels etc ...
    • Add function to automatically retrieve Chan, H or W regardless of the dataformat, remove logic from template and adding it in NodeExport instead
  • Change key for selecting an ExportNode (backend + dataformat ...)
  • Update Registration system to use backend and SpecImpl
  • Make SpecImpl Hashable (tracked by: #179 (closed))
  • remove producer set to constant trick to distinguish input producer from other producers in the graph
  • Change structure of export to: &12

Other changes:

  • Change type for templated operators (example: Conv -> Conv{NbDims}D) (fix: #168 (closed))
  • Change constructor binding name for these operators (ConvOp{NbDims}D-> Conv{NbDims}DOp)
  • Fix aidge#180 (closed)

Issue to solve

  • When registering a MetaOperator every member should have an implementation Can be bypass by setting dummy implmentations:
@ExportLibAidgeARM.register("Pad2D", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.any)))
class Pad_ARMCortexM(ExportNodeCpp):
    def __init__(self, node, mem_info, is_input, is_output):
        raise NotImplementedError("Pad2D nodes is not implemented")

Tracked by: #177 (closed)

  • When creating a new backend, we need to add a "fake" tensor backend:
aidge_core.register_Tensor(["aidge_arm", aidge_core.dtype.float32],
                           aidge_core.get_key_value_Tensor(["cpu", aidge_core.dtype.float32]))

Tracked by: #178 (closed)

Edited by Cyril Moineau

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Cyril Moineau added 1 commit

    added 1 commit

    • bd723d05 - Add NodeExportCpp to specify NodeExport and how to generate forward and node definition.

    Compare with previous version

  • Cyril Moineau added 1 commit

    added 1 commit

    • 9885ceaf - Add back data format when chosing how to retrieve nb chan ...

    Compare with previous version

  • Cyril Moineau added 3 commits

    added 3 commits

    • 92b34948 - Add basic export registry system.
    • 54121fb7 - Fix circular import issues.
    • 80ca13c8 - Add exportable function to check if a node is exportable instead of having...

    Compare with previous version

  • Cyril Moineau changed the description

    changed the description

  • Cyril Moineau marked the checklist item Add function to be agnostic from data form (get_input_channel etc ...) as completed

    marked the checklist item Add function to be agnostic from data form (get_input_channel etc ...) as completed

  • Cyril Moineau marked the checklist item Add a dictionnary attributes to stack all the attributes desirable for the export as completed

    marked the checklist item Add a dictionnary attributes to stack all the attributes desirable for the export as completed

  • Cyril Moineau marked the checklist item Refactor Export node as completed

    marked the checklist item Refactor Export node as completed

  • Cyril Moineau resolved all threads

    resolved all threads

  • Cyril Moineau added 1 commit

    added 1 commit

    Compare with previous version

  • Cyril Moineau marked this merge request as draft

    marked this merge request as draft

  • Cyril Moineau added 1 commit

    added 1 commit

    • cbf9c772 - Add In/Out Format in NodeExport.

    Compare with previous version

  • Cyril Moineau added 4 commits

    added 4 commits

    • 987cbfc8 - Introduce Scheduler export + move generic C++ file generation to core.
    • a5e8976d - Fix multiple typo due to old naming.
    • eff7dc2f - Raise error if no input set instead of just a warning.
    • 91458013 - Main.cpp now include header with input name.

    Compare with previous version

  • Cyril Moineau marked the checklist item Add meminfo in export_node ? as completed

    marked the checklist item Add meminfo in export_node ? as completed

  • Cyril Moineau marked the checklist item Add is_output and is_input attribute in ExportNode as completed

    marked the checklist item Add is_output and is_input attribute in ExportNode as completed

  • Cyril Moineau marked the checklist item Generate mem manager and scheduling as completed

    marked the checklist item Generate mem manager and scheduling as completed

  • Cyril Moineau marked the checklist item Better handle input/ouput as completed

    marked the checklist item Better handle input/ouput as completed

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading