Initial framework of an ethos-u runtime backend #2 - #595

Closed
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase
Closed

Initial framework of an ethos-u runtime backend #2#595
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase

Conversation

@robell

@robellrobell commented Oct 3, 2023

Copy link
Copy Markdown
Collaborator

Replaces PR #501

(will close 501 shortly once comments are reviewed/addressed)

Added shell of runtime Arm Backend for Ethos-U

./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.

Currently supports .pte files stored in SRAM.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 - Basic runtime targeting Corstone-300 with U55
- cross compile support with a cmake toolchain (Arm baremetal build)
- support for a few models AoT -> TOSA -> Vela -> U55 hardware
- dependencies on the ethos-u core driver and cmsis (submodules)
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@netlify

netlifyBot commented Oct 3, 2023

Copy link
Copy Markdown

Deploy Preview for resplendent-gnome-14e531 canceled.

NameLink
🔨 Latest commit76a393a
🔍 Latest deploy loghttps://app.netlify.com/sites/resplendent-gnome-14e531/deploys/651faf6cda798d0008a44588

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 3, 2023
Comment threadbackends/arm/runtime/ArmBackendEthosU.cpp Outdated
robelland others added 10 commits October 4, 2023 08:35
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Summary: Sometimes, esp when using the Portable library, Release mode is the only viable option to get a resonable binary size and performance, even to debug stuff.
Differential Revision: D49876324
fbshipit-source-id: 501d96304b8e37452a1a58e289d57cfc62ebbcdd
Summary: This will align better with structure proposed in D49714823
Differential Revision: D49899370
fbshipit-source-id: 86d89c8060a6685f84dc186ea38beba4388894db
Summary: This is needed to generate `portable_ops_lib` with select number of ops for quick testing when we can't afford to link all the ops for size reasons. Arm Baremetal builds is one example.
Differential Revision: D49899554
fbshipit-source-id: 9d35e7bfd1c1975da640e62493fc744898ad6714
Summary: This is an interesting usecase to demonstrate on ARM Baremetal setup where they currently can't lower SoftMax. One of the only few from MV2. It is useful as a test as well while debugging this flow.
Differential Revision: D49899589
fbshipit-source-id: c0307c7452a69eb707429328ba6654b2b660ce23
Differential Revision: https://internalfb.com/D49899371
fbshipit-source-id: 42cf5c8ad445b0405f9c23e3654b6a32fbc61522
Summary: An example script to build and run executor_runner baremetal version on ARM M-class CPUs
```
I executorch:runner.cpp:63] Model PTE file loaded. Size: 960 bytes.
I executorch:runner.cpp:69] Model buffer loaded, has 1 methods
I executorch:runner.cpp:77] Running method forward
I executorch:runner.cpp:94] Setting up planned buffer 0, size 32.
I executorch:runner.cpp:109] Method loaded.
I executorch:runner.cpp:111] Preparing inputs...
I executorch:runner.cpp:113] Input prepared.
I executorch:runner.cpp:115] Starting the model execution...
I executorch:runner.cpp:120] Model executed successfully.
I executorch:runner.cpp:124] 1 outputs:
Output[0][0]: 0.500000
Output[0][1]: 0.500000
Output[0][2]: 0.500000
Output[0][3]: 0.500000
```
Differential Revision: D49900956
fbshipit-source-id: e30571f95abd5311f3ab649fcb1d154b4f5c3310
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * There is a toolchain/linking issue mixing hard and soft float ABI
which is causing the test to fail, but the structure is there and the
delegate is registered.
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Comment thread.gitmodules Outdated
[submodule "backends/arm/third-party/ethos-u-core-driver"]
path = backends/arm/third-party/ethos-u-core-driver
url = https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git
[submodule "backends/arm/third-party/cmsis"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this used for?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are essentially the driver headers for ethos-u we need to link against.

I've also added a build of the ethos-u driver in executorch cmake (ethosu_core_driver target) but I moved to link against the demo app library build of it and can remove the target.

We still need this small submodule for the header/interface - it's fortunately small, but unfortunately it pulls in CMSIS for a few platform defines which is huge - this is really the area we discussed a build script pulling these in. Given ./run has a checkout of the core_platform and core_software, I'll look at moving to those and removing these submodules.

@robellrobellOct 5, 2023

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed most of this, we just have the small ethos-u-core-driver for headers now, and don't build it in tree and cmsis is removed. The driver builds in the driver/app repo and that app links the two together.

as it's only 25 files i suggest we keep the driver as a submodule to keep things simple until there's a more general "selective submodule" approach.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@@ -0,0 +1,90 @@
# Copyright 2023 Arm Limited and/or its affiliates.

@digantdesaidigantdesaiOct 4, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this same as - core_platform/cmake/toolchain/arm-none-eabi-gcc.cmake? But will respect cmdline vars?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd anticipate further changes and cleaning but it was derived from there, yes.

It has a similar override but for m55 our only current supported target. The way the toolchain file is constructed, some of the general ./configure like step in cmake was invoking it without an appropriate value so the default prevents the -mfpu flag which was the default set on an m4 target messing things up.

robell added 11 commits October 4, 2023 20:09
 * Override the default CPU in cmake which was causing a mixture of FPU
and ABI flags to be passed to different compilation stages.
* Updated fallback logging implementation in delegate app to fix
sporadic crash
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * uses the simple_add model to run through the AoT flow and the various
debug options for looking at export.
* produces a .pte file for runtime delegation on the ArmBackend for
Ethos-U55 platforms
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * export the list of offset from AoT floq
* appropriately copy inputs and ouputs to/from SRAM
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@robell

Copy link
Copy Markdown
CollaboratorAuthor

#659 replaces this

facebook-github-bot pushed a commit that referenced this pull request Oct 7, 2023
Summary:
Cleaned up ethos-u runtime flow, replaces #595
Added shell of runtime Arm Backend for Ethos-U
./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.
Currently supports .pte files stored in SRAM.
Pull Request resolved: #659
Reviewed By: cccclai
Differential Revision: D50035452
Pulled By: digantdesai
fbshipit-source-id: 7b8a23836c92dfa9235decf4c631654fa8fc396a
@robellrobell closed this Oct 9, 2023
@robellrobell added the partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm label Jul 4, 2024
Gasoonjia pushed a commit that referenced this pull request Jul 30, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.partner: armFor backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@robell@digantdesai@larryliu0820@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Initial framework of an ethos-u runtime backend #2 - #595

Closed
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase
Closed

Initial framework of an ethos-u runtime backend #2#595
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase

Conversation

@robell

@robellrobell commented Oct 3, 2023

Copy link
Copy Markdown
Collaborator

Replaces PR #501

(will close 501 shortly once comments are reviewed/addressed)

Added shell of runtime Arm Backend for Ethos-U

./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.

Currently supports .pte files stored in SRAM.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 - Basic runtime targeting Corstone-300 with U55
- cross compile support with a cmake toolchain (Arm baremetal build)
- support for a few models AoT -> TOSA -> Vela -> U55 hardware
- dependencies on the ethos-u core driver and cmsis (submodules)
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@netlify

netlifyBot commented Oct 3, 2023

Copy link
Copy Markdown

Deploy Preview for resplendent-gnome-14e531 canceled.

NameLink
🔨 Latest commit76a393a
🔍 Latest deploy loghttps://app.netlify.com/sites/resplendent-gnome-14e531/deploys/651faf6cda798d0008a44588

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 3, 2023
Comment threadbackends/arm/runtime/ArmBackendEthosU.cpp Outdated
robelland others added 10 commits October 4, 2023 08:35
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Summary: Sometimes, esp when using the Portable library, Release mode is the only viable option to get a resonable binary size and performance, even to debug stuff.
Differential Revision: D49876324
fbshipit-source-id: 501d96304b8e37452a1a58e289d57cfc62ebbcdd
Summary: This will align better with structure proposed in D49714823
Differential Revision: D49899370
fbshipit-source-id: 86d89c8060a6685f84dc186ea38beba4388894db
Summary: This is needed to generate `portable_ops_lib` with select number of ops for quick testing when we can't afford to link all the ops for size reasons. Arm Baremetal builds is one example.
Differential Revision: D49899554
fbshipit-source-id: 9d35e7bfd1c1975da640e62493fc744898ad6714
Summary: This is an interesting usecase to demonstrate on ARM Baremetal setup where they currently can't lower SoftMax. One of the only few from MV2. It is useful as a test as well while debugging this flow.
Differential Revision: D49899589
fbshipit-source-id: c0307c7452a69eb707429328ba6654b2b660ce23
Differential Revision: https://internalfb.com/D49899371
fbshipit-source-id: 42cf5c8ad445b0405f9c23e3654b6a32fbc61522
Summary: An example script to build and run executor_runner baremetal version on ARM M-class CPUs
```
I executorch:runner.cpp:63] Model PTE file loaded. Size: 960 bytes.
I executorch:runner.cpp:69] Model buffer loaded, has 1 methods
I executorch:runner.cpp:77] Running method forward
I executorch:runner.cpp:94] Setting up planned buffer 0, size 32.
I executorch:runner.cpp:109] Method loaded.
I executorch:runner.cpp:111] Preparing inputs...
I executorch:runner.cpp:113] Input prepared.
I executorch:runner.cpp:115] Starting the model execution...
I executorch:runner.cpp:120] Model executed successfully.
I executorch:runner.cpp:124] 1 outputs:
Output[0][0]: 0.500000
Output[0][1]: 0.500000
Output[0][2]: 0.500000
Output[0][3]: 0.500000
```
Differential Revision: D49900956
fbshipit-source-id: e30571f95abd5311f3ab649fcb1d154b4f5c3310
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * There is a toolchain/linking issue mixing hard and soft float ABI
which is causing the test to fail, but the structure is there and the
delegate is registered.
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Comment thread.gitmodules Outdated
[submodule "backends/arm/third-party/ethos-u-core-driver"]
path = backends/arm/third-party/ethos-u-core-driver
url = https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git
[submodule "backends/arm/third-party/cmsis"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this used for?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are essentially the driver headers for ethos-u we need to link against.

I've also added a build of the ethos-u driver in executorch cmake (ethosu_core_driver target) but I moved to link against the demo app library build of it and can remove the target.

We still need this small submodule for the header/interface - it's fortunately small, but unfortunately it pulls in CMSIS for a few platform defines which is huge - this is really the area we discussed a build script pulling these in. Given ./run has a checkout of the core_platform and core_software, I'll look at moving to those and removing these submodules.

@robellrobellOct 5, 2023

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed most of this, we just have the small ethos-u-core-driver for headers now, and don't build it in tree and cmsis is removed. The driver builds in the driver/app repo and that app links the two together.

as it's only 25 files i suggest we keep the driver as a submodule to keep things simple until there's a more general "selective submodule" approach.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@@ -0,0 +1,90 @@
# Copyright 2023 Arm Limited and/or its affiliates.

@digantdesaidigantdesaiOct 4, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this same as - core_platform/cmake/toolchain/arm-none-eabi-gcc.cmake? But will respect cmdline vars?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd anticipate further changes and cleaning but it was derived from there, yes.

It has a similar override but for m55 our only current supported target. The way the toolchain file is constructed, some of the general ./configure like step in cmake was invoking it without an appropriate value so the default prevents the -mfpu flag which was the default set on an m4 target messing things up.

robell added 11 commits October 4, 2023 20:09
 * Override the default CPU in cmake which was causing a mixture of FPU
and ABI flags to be passed to different compilation stages.
* Updated fallback logging implementation in delegate app to fix
sporadic crash
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * uses the simple_add model to run through the AoT flow and the various
debug options for looking at export.
* produces a .pte file for runtime delegation on the ArmBackend for
Ethos-U55 platforms
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * export the list of offset from AoT floq
* appropriately copy inputs and ouputs to/from SRAM
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@robell

Copy link
Copy Markdown
CollaboratorAuthor

#659 replaces this

facebook-github-bot pushed a commit that referenced this pull request Oct 7, 2023
Summary:
Cleaned up ethos-u runtime flow, replaces #595
Added shell of runtime Arm Backend for Ethos-U
./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.
Currently supports .pte files stored in SRAM.
Pull Request resolved: #659
Reviewed By: cccclai
Differential Revision: D50035452
Pulled By: digantdesai
fbshipit-source-id: 7b8a23836c92dfa9235decf4c631654fa8fc396a
@robellrobell closed this Oct 9, 2023
@robellrobell added the partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm label Jul 4, 2024
Gasoonjia pushed a commit that referenced this pull request Jul 30, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.partner: armFor backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@robell@digantdesai@larryliu0820@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Initial framework of an ethos-u runtime backend #2 - #595

Closed
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase
Closed

Initial framework of an ethos-u runtime backend #2#595
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase

Conversation

@robell

@robellrobell commented Oct 3, 2023

Copy link
Copy Markdown
Collaborator

Replaces PR #501

(will close 501 shortly once comments are reviewed/addressed)

Added shell of runtime Arm Backend for Ethos-U

./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.

Currently supports .pte files stored in SRAM.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 - Basic runtime targeting Corstone-300 with U55
- cross compile support with a cmake toolchain (Arm baremetal build)
- support for a few models AoT -> TOSA -> Vela -> U55 hardware
- dependencies on the ethos-u core driver and cmsis (submodules)
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@netlify

netlifyBot commented Oct 3, 2023

Copy link
Copy Markdown

Deploy Preview for resplendent-gnome-14e531 canceled.

NameLink
🔨 Latest commit76a393a
🔍 Latest deploy loghttps://app.netlify.com/sites/resplendent-gnome-14e531/deploys/651faf6cda798d0008a44588

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 3, 2023
Comment threadbackends/arm/runtime/ArmBackendEthosU.cpp Outdated
robelland others added 10 commits October 4, 2023 08:35
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Summary: Sometimes, esp when using the Portable library, Release mode is the only viable option to get a resonable binary size and performance, even to debug stuff.
Differential Revision: D49876324
fbshipit-source-id: 501d96304b8e37452a1a58e289d57cfc62ebbcdd
Summary: This will align better with structure proposed in D49714823
Differential Revision: D49899370
fbshipit-source-id: 86d89c8060a6685f84dc186ea38beba4388894db
Summary: This is needed to generate `portable_ops_lib` with select number of ops for quick testing when we can't afford to link all the ops for size reasons. Arm Baremetal builds is one example.
Differential Revision: D49899554
fbshipit-source-id: 9d35e7bfd1c1975da640e62493fc744898ad6714
Summary: This is an interesting usecase to demonstrate on ARM Baremetal setup where they currently can't lower SoftMax. One of the only few from MV2. It is useful as a test as well while debugging this flow.
Differential Revision: D49899589
fbshipit-source-id: c0307c7452a69eb707429328ba6654b2b660ce23
Differential Revision: https://internalfb.com/D49899371
fbshipit-source-id: 42cf5c8ad445b0405f9c23e3654b6a32fbc61522
Summary: An example script to build and run executor_runner baremetal version on ARM M-class CPUs
```
I executorch:runner.cpp:63] Model PTE file loaded. Size: 960 bytes.
I executorch:runner.cpp:69] Model buffer loaded, has 1 methods
I executorch:runner.cpp:77] Running method forward
I executorch:runner.cpp:94] Setting up planned buffer 0, size 32.
I executorch:runner.cpp:109] Method loaded.
I executorch:runner.cpp:111] Preparing inputs...
I executorch:runner.cpp:113] Input prepared.
I executorch:runner.cpp:115] Starting the model execution...
I executorch:runner.cpp:120] Model executed successfully.
I executorch:runner.cpp:124] 1 outputs:
Output[0][0]: 0.500000
Output[0][1]: 0.500000
Output[0][2]: 0.500000
Output[0][3]: 0.500000
```
Differential Revision: D49900956
fbshipit-source-id: e30571f95abd5311f3ab649fcb1d154b4f5c3310
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * There is a toolchain/linking issue mixing hard and soft float ABI
which is causing the test to fail, but the structure is there and the
delegate is registered.
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Comment thread.gitmodules Outdated
[submodule "backends/arm/third-party/ethos-u-core-driver"]
path = backends/arm/third-party/ethos-u-core-driver
url = https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git
[submodule "backends/arm/third-party/cmsis"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this used for?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are essentially the driver headers for ethos-u we need to link against.

I've also added a build of the ethos-u driver in executorch cmake (ethosu_core_driver target) but I moved to link against the demo app library build of it and can remove the target.

We still need this small submodule for the header/interface - it's fortunately small, but unfortunately it pulls in CMSIS for a few platform defines which is huge - this is really the area we discussed a build script pulling these in. Given ./run has a checkout of the core_platform and core_software, I'll look at moving to those and removing these submodules.

@robellrobellOct 5, 2023

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed most of this, we just have the small ethos-u-core-driver for headers now, and don't build it in tree and cmsis is removed. The driver builds in the driver/app repo and that app links the two together.

as it's only 25 files i suggest we keep the driver as a submodule to keep things simple until there's a more general "selective submodule" approach.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@@ -0,0 +1,90 @@
# Copyright 2023 Arm Limited and/or its affiliates.

@digantdesaidigantdesaiOct 4, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this same as - core_platform/cmake/toolchain/arm-none-eabi-gcc.cmake? But will respect cmdline vars?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd anticipate further changes and cleaning but it was derived from there, yes.

It has a similar override but for m55 our only current supported target. The way the toolchain file is constructed, some of the general ./configure like step in cmake was invoking it without an appropriate value so the default prevents the -mfpu flag which was the default set on an m4 target messing things up.

robell added 11 commits October 4, 2023 20:09
 * Override the default CPU in cmake which was causing a mixture of FPU
and ABI flags to be passed to different compilation stages.
* Updated fallback logging implementation in delegate app to fix
sporadic crash
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * uses the simple_add model to run through the AoT flow and the various
debug options for looking at export.
* produces a .pte file for runtime delegation on the ArmBackend for
Ethos-U55 platforms
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * export the list of offset from AoT floq
* appropriately copy inputs and ouputs to/from SRAM
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@robell

Copy link
Copy Markdown
CollaboratorAuthor

#659 replaces this

facebook-github-bot pushed a commit that referenced this pull request Oct 7, 2023
Summary:
Cleaned up ethos-u runtime flow, replaces #595
Added shell of runtime Arm Backend for Ethos-U
./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.
Currently supports .pte files stored in SRAM.
Pull Request resolved: #659
Reviewed By: cccclai
Differential Revision: D50035452
Pulled By: digantdesai
fbshipit-source-id: 7b8a23836c92dfa9235decf4c631654fa8fc396a
@robellrobell closed this Oct 9, 2023
@robellrobell added the partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm label Jul 4, 2024
Gasoonjia pushed a commit that referenced this pull request Jul 30, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.partner: armFor backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@robell@digantdesai@larryliu0820@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Initial framework of an ethos-u runtime backend #2 - #595

Closed
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase
Closed

Initial framework of an ethos-u runtime backend #2#595
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase

Conversation

@robell

@robellrobell commented Oct 3, 2023

Copy link
Copy Markdown
Collaborator

Replaces PR #501

(will close 501 shortly once comments are reviewed/addressed)

Added shell of runtime Arm Backend for Ethos-U

./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.

Currently supports .pte files stored in SRAM.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 - Basic runtime targeting Corstone-300 with U55
- cross compile support with a cmake toolchain (Arm baremetal build)
- support for a few models AoT -> TOSA -> Vela -> U55 hardware
- dependencies on the ethos-u core driver and cmsis (submodules)
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@netlify

netlifyBot commented Oct 3, 2023

Copy link
Copy Markdown

Deploy Preview for resplendent-gnome-14e531 canceled.

NameLink
🔨 Latest commit76a393a
🔍 Latest deploy loghttps://app.netlify.com/sites/resplendent-gnome-14e531/deploys/651faf6cda798d0008a44588

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 3, 2023
Comment threadbackends/arm/runtime/ArmBackendEthosU.cpp Outdated
robelland others added 10 commits October 4, 2023 08:35
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Summary: Sometimes, esp when using the Portable library, Release mode is the only viable option to get a resonable binary size and performance, even to debug stuff.
Differential Revision: D49876324
fbshipit-source-id: 501d96304b8e37452a1a58e289d57cfc62ebbcdd
Summary: This will align better with structure proposed in D49714823
Differential Revision: D49899370
fbshipit-source-id: 86d89c8060a6685f84dc186ea38beba4388894db
Summary: This is needed to generate `portable_ops_lib` with select number of ops for quick testing when we can't afford to link all the ops for size reasons. Arm Baremetal builds is one example.
Differential Revision: D49899554
fbshipit-source-id: 9d35e7bfd1c1975da640e62493fc744898ad6714
Summary: This is an interesting usecase to demonstrate on ARM Baremetal setup where they currently can't lower SoftMax. One of the only few from MV2. It is useful as a test as well while debugging this flow.
Differential Revision: D49899589
fbshipit-source-id: c0307c7452a69eb707429328ba6654b2b660ce23
Differential Revision: https://internalfb.com/D49899371
fbshipit-source-id: 42cf5c8ad445b0405f9c23e3654b6a32fbc61522
Summary: An example script to build and run executor_runner baremetal version on ARM M-class CPUs
```
I executorch:runner.cpp:63] Model PTE file loaded. Size: 960 bytes.
I executorch:runner.cpp:69] Model buffer loaded, has 1 methods
I executorch:runner.cpp:77] Running method forward
I executorch:runner.cpp:94] Setting up planned buffer 0, size 32.
I executorch:runner.cpp:109] Method loaded.
I executorch:runner.cpp:111] Preparing inputs...
I executorch:runner.cpp:113] Input prepared.
I executorch:runner.cpp:115] Starting the model execution...
I executorch:runner.cpp:120] Model executed successfully.
I executorch:runner.cpp:124] 1 outputs:
Output[0][0]: 0.500000
Output[0][1]: 0.500000
Output[0][2]: 0.500000
Output[0][3]: 0.500000
```
Differential Revision: D49900956
fbshipit-source-id: e30571f95abd5311f3ab649fcb1d154b4f5c3310
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * There is a toolchain/linking issue mixing hard and soft float ABI
which is causing the test to fail, but the structure is there and the
delegate is registered.
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Comment thread.gitmodules Outdated
[submodule "backends/arm/third-party/ethos-u-core-driver"]
path = backends/arm/third-party/ethos-u-core-driver
url = https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git
[submodule "backends/arm/third-party/cmsis"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this used for?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are essentially the driver headers for ethos-u we need to link against.

I've also added a build of the ethos-u driver in executorch cmake (ethosu_core_driver target) but I moved to link against the demo app library build of it and can remove the target.

We still need this small submodule for the header/interface - it's fortunately small, but unfortunately it pulls in CMSIS for a few platform defines which is huge - this is really the area we discussed a build script pulling these in. Given ./run has a checkout of the core_platform and core_software, I'll look at moving to those and removing these submodules.

@robellrobellOct 5, 2023

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed most of this, we just have the small ethos-u-core-driver for headers now, and don't build it in tree and cmsis is removed. The driver builds in the driver/app repo and that app links the two together.

as it's only 25 files i suggest we keep the driver as a submodule to keep things simple until there's a more general "selective submodule" approach.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@@ -0,0 +1,90 @@
# Copyright 2023 Arm Limited and/or its affiliates.

@digantdesaidigantdesaiOct 4, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this same as - core_platform/cmake/toolchain/arm-none-eabi-gcc.cmake? But will respect cmdline vars?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd anticipate further changes and cleaning but it was derived from there, yes.

It has a similar override but for m55 our only current supported target. The way the toolchain file is constructed, some of the general ./configure like step in cmake was invoking it without an appropriate value so the default prevents the -mfpu flag which was the default set on an m4 target messing things up.

robell added 11 commits October 4, 2023 20:09
 * Override the default CPU in cmake which was causing a mixture of FPU
and ABI flags to be passed to different compilation stages.
* Updated fallback logging implementation in delegate app to fix
sporadic crash
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * uses the simple_add model to run through the AoT flow and the various
debug options for looking at export.
* produces a .pte file for runtime delegation on the ArmBackend for
Ethos-U55 platforms
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * export the list of offset from AoT floq
* appropriately copy inputs and ouputs to/from SRAM
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@robell

Copy link
Copy Markdown
CollaboratorAuthor

#659 replaces this

facebook-github-bot pushed a commit that referenced this pull request Oct 7, 2023
Summary:
Cleaned up ethos-u runtime flow, replaces #595
Added shell of runtime Arm Backend for Ethos-U
./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.
Currently supports .pte files stored in SRAM.
Pull Request resolved: #659
Reviewed By: cccclai
Differential Revision: D50035452
Pulled By: digantdesai
fbshipit-source-id: 7b8a23836c92dfa9235decf4c631654fa8fc396a
@robellrobell closed this Oct 9, 2023
@robellrobell added the partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm label Jul 4, 2024
Gasoonjia pushed a commit that referenced this pull request Jul 30, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.partner: armFor backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@robell@digantdesai@larryliu0820@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Initial framework of an ethos-u runtime backend #2 - #595

Closed
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase
Closed

Initial framework of an ethos-u runtime backend #2#595
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase

Conversation

@robell

@robellrobell commented Oct 3, 2023

Copy link
Copy Markdown
Collaborator

Replaces PR #501

(will close 501 shortly once comments are reviewed/addressed)

Added shell of runtime Arm Backend for Ethos-U

./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.

Currently supports .pte files stored in SRAM.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 - Basic runtime targeting Corstone-300 with U55
- cross compile support with a cmake toolchain (Arm baremetal build)
- support for a few models AoT -> TOSA -> Vela -> U55 hardware
- dependencies on the ethos-u core driver and cmsis (submodules)
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@netlify

netlifyBot commented Oct 3, 2023

Copy link
Copy Markdown

Deploy Preview for resplendent-gnome-14e531 canceled.

NameLink
🔨 Latest commit76a393a
🔍 Latest deploy loghttps://app.netlify.com/sites/resplendent-gnome-14e531/deploys/651faf6cda798d0008a44588

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 3, 2023
Comment threadbackends/arm/runtime/ArmBackendEthosU.cpp Outdated
robelland others added 10 commits October 4, 2023 08:35
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Summary: Sometimes, esp when using the Portable library, Release mode is the only viable option to get a resonable binary size and performance, even to debug stuff.
Differential Revision: D49876324
fbshipit-source-id: 501d96304b8e37452a1a58e289d57cfc62ebbcdd
Summary: This will align better with structure proposed in D49714823
Differential Revision: D49899370
fbshipit-source-id: 86d89c8060a6685f84dc186ea38beba4388894db
Summary: This is needed to generate `portable_ops_lib` with select number of ops for quick testing when we can't afford to link all the ops for size reasons. Arm Baremetal builds is one example.
Differential Revision: D49899554
fbshipit-source-id: 9d35e7bfd1c1975da640e62493fc744898ad6714
Summary: This is an interesting usecase to demonstrate on ARM Baremetal setup where they currently can't lower SoftMax. One of the only few from MV2. It is useful as a test as well while debugging this flow.
Differential Revision: D49899589
fbshipit-source-id: c0307c7452a69eb707429328ba6654b2b660ce23
Differential Revision: https://internalfb.com/D49899371
fbshipit-source-id: 42cf5c8ad445b0405f9c23e3654b6a32fbc61522
Summary: An example script to build and run executor_runner baremetal version on ARM M-class CPUs
```
I executorch:runner.cpp:63] Model PTE file loaded. Size: 960 bytes.
I executorch:runner.cpp:69] Model buffer loaded, has 1 methods
I executorch:runner.cpp:77] Running method forward
I executorch:runner.cpp:94] Setting up planned buffer 0, size 32.
I executorch:runner.cpp:109] Method loaded.
I executorch:runner.cpp:111] Preparing inputs...
I executorch:runner.cpp:113] Input prepared.
I executorch:runner.cpp:115] Starting the model execution...
I executorch:runner.cpp:120] Model executed successfully.
I executorch:runner.cpp:124] 1 outputs:
Output[0][0]: 0.500000
Output[0][1]: 0.500000
Output[0][2]: 0.500000
Output[0][3]: 0.500000
```
Differential Revision: D49900956
fbshipit-source-id: e30571f95abd5311f3ab649fcb1d154b4f5c3310
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * There is a toolchain/linking issue mixing hard and soft float ABI
which is causing the test to fail, but the structure is there and the
delegate is registered.
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Comment thread.gitmodules Outdated
[submodule "backends/arm/third-party/ethos-u-core-driver"]
path = backends/arm/third-party/ethos-u-core-driver
url = https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git
[submodule "backends/arm/third-party/cmsis"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this used for?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are essentially the driver headers for ethos-u we need to link against.

I've also added a build of the ethos-u driver in executorch cmake (ethosu_core_driver target) but I moved to link against the demo app library build of it and can remove the target.

We still need this small submodule for the header/interface - it's fortunately small, but unfortunately it pulls in CMSIS for a few platform defines which is huge - this is really the area we discussed a build script pulling these in. Given ./run has a checkout of the core_platform and core_software, I'll look at moving to those and removing these submodules.

@robellrobellOct 5, 2023

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed most of this, we just have the small ethos-u-core-driver for headers now, and don't build it in tree and cmsis is removed. The driver builds in the driver/app repo and that app links the two together.

as it's only 25 files i suggest we keep the driver as a submodule to keep things simple until there's a more general "selective submodule" approach.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@@ -0,0 +1,90 @@
# Copyright 2023 Arm Limited and/or its affiliates.

@digantdesaidigantdesaiOct 4, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this same as - core_platform/cmake/toolchain/arm-none-eabi-gcc.cmake? But will respect cmdline vars?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd anticipate further changes and cleaning but it was derived from there, yes.

It has a similar override but for m55 our only current supported target. The way the toolchain file is constructed, some of the general ./configure like step in cmake was invoking it without an appropriate value so the default prevents the -mfpu flag which was the default set on an m4 target messing things up.

robell added 11 commits October 4, 2023 20:09
 * Override the default CPU in cmake which was causing a mixture of FPU
and ABI flags to be passed to different compilation stages.
* Updated fallback logging implementation in delegate app to fix
sporadic crash
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * uses the simple_add model to run through the AoT flow and the various
debug options for looking at export.
* produces a .pte file for runtime delegation on the ArmBackend for
Ethos-U55 platforms
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * export the list of offset from AoT floq
* appropriately copy inputs and ouputs to/from SRAM
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@robell

Copy link
Copy Markdown
CollaboratorAuthor

#659 replaces this

facebook-github-bot pushed a commit that referenced this pull request Oct 7, 2023
Summary:
Cleaned up ethos-u runtime flow, replaces #595
Added shell of runtime Arm Backend for Ethos-U
./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.
Currently supports .pte files stored in SRAM.
Pull Request resolved: #659
Reviewed By: cccclai
Differential Revision: D50035452
Pulled By: digantdesai
fbshipit-source-id: 7b8a23836c92dfa9235decf4c631654fa8fc396a
@robellrobell closed this Oct 9, 2023
@robellrobell added the partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm label Jul 4, 2024
Gasoonjia pushed a commit that referenced this pull request Jul 30, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.partner: armFor backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@robell@digantdesai@larryliu0820@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Initial framework of an ethos-u runtime backend #2 - #595

Closed
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase
Closed

Initial framework of an ethos-u runtime backend #2#595
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase

Conversation

@robell

@robellrobell commented Oct 3, 2023

Copy link
Copy Markdown
Collaborator

Replaces PR #501

(will close 501 shortly once comments are reviewed/addressed)

Added shell of runtime Arm Backend for Ethos-U

./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.

Currently supports .pte files stored in SRAM.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 - Basic runtime targeting Corstone-300 with U55
- cross compile support with a cmake toolchain (Arm baremetal build)
- support for a few models AoT -> TOSA -> Vela -> U55 hardware
- dependencies on the ethos-u core driver and cmsis (submodules)
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@netlify

netlifyBot commented Oct 3, 2023

Copy link
Copy Markdown

Deploy Preview for resplendent-gnome-14e531 canceled.

NameLink
🔨 Latest commit76a393a
🔍 Latest deploy loghttps://app.netlify.com/sites/resplendent-gnome-14e531/deploys/651faf6cda798d0008a44588

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 3, 2023
Comment threadbackends/arm/runtime/ArmBackendEthosU.cpp Outdated
robelland others added 10 commits October 4, 2023 08:35
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Summary: Sometimes, esp when using the Portable library, Release mode is the only viable option to get a resonable binary size and performance, even to debug stuff.
Differential Revision: D49876324
fbshipit-source-id: 501d96304b8e37452a1a58e289d57cfc62ebbcdd
Summary: This will align better with structure proposed in D49714823
Differential Revision: D49899370
fbshipit-source-id: 86d89c8060a6685f84dc186ea38beba4388894db
Summary: This is needed to generate `portable_ops_lib` with select number of ops for quick testing when we can't afford to link all the ops for size reasons. Arm Baremetal builds is one example.
Differential Revision: D49899554
fbshipit-source-id: 9d35e7bfd1c1975da640e62493fc744898ad6714
Summary: This is an interesting usecase to demonstrate on ARM Baremetal setup where they currently can't lower SoftMax. One of the only few from MV2. It is useful as a test as well while debugging this flow.
Differential Revision: D49899589
fbshipit-source-id: c0307c7452a69eb707429328ba6654b2b660ce23
Differential Revision: https://internalfb.com/D49899371
fbshipit-source-id: 42cf5c8ad445b0405f9c23e3654b6a32fbc61522
Summary: An example script to build and run executor_runner baremetal version on ARM M-class CPUs
```
I executorch:runner.cpp:63] Model PTE file loaded. Size: 960 bytes.
I executorch:runner.cpp:69] Model buffer loaded, has 1 methods
I executorch:runner.cpp:77] Running method forward
I executorch:runner.cpp:94] Setting up planned buffer 0, size 32.
I executorch:runner.cpp:109] Method loaded.
I executorch:runner.cpp:111] Preparing inputs...
I executorch:runner.cpp:113] Input prepared.
I executorch:runner.cpp:115] Starting the model execution...
I executorch:runner.cpp:120] Model executed successfully.
I executorch:runner.cpp:124] 1 outputs:
Output[0][0]: 0.500000
Output[0][1]: 0.500000
Output[0][2]: 0.500000
Output[0][3]: 0.500000
```
Differential Revision: D49900956
fbshipit-source-id: e30571f95abd5311f3ab649fcb1d154b4f5c3310
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * There is a toolchain/linking issue mixing hard and soft float ABI
which is causing the test to fail, but the structure is there and the
delegate is registered.
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Comment thread.gitmodules Outdated
[submodule "backends/arm/third-party/ethos-u-core-driver"]
path = backends/arm/third-party/ethos-u-core-driver
url = https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git
[submodule "backends/arm/third-party/cmsis"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this used for?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are essentially the driver headers for ethos-u we need to link against.

I've also added a build of the ethos-u driver in executorch cmake (ethosu_core_driver target) but I moved to link against the demo app library build of it and can remove the target.

We still need this small submodule for the header/interface - it's fortunately small, but unfortunately it pulls in CMSIS for a few platform defines which is huge - this is really the area we discussed a build script pulling these in. Given ./run has a checkout of the core_platform and core_software, I'll look at moving to those and removing these submodules.

@robellrobellOct 5, 2023

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed most of this, we just have the small ethos-u-core-driver for headers now, and don't build it in tree and cmsis is removed. The driver builds in the driver/app repo and that app links the two together.

as it's only 25 files i suggest we keep the driver as a submodule to keep things simple until there's a more general "selective submodule" approach.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@@ -0,0 +1,90 @@
# Copyright 2023 Arm Limited and/or its affiliates.

@digantdesaidigantdesaiOct 4, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this same as - core_platform/cmake/toolchain/arm-none-eabi-gcc.cmake? But will respect cmdline vars?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd anticipate further changes and cleaning but it was derived from there, yes.

It has a similar override but for m55 our only current supported target. The way the toolchain file is constructed, some of the general ./configure like step in cmake was invoking it without an appropriate value so the default prevents the -mfpu flag which was the default set on an m4 target messing things up.

robell added 11 commits October 4, 2023 20:09
 * Override the default CPU in cmake which was causing a mixture of FPU
and ABI flags to be passed to different compilation stages.
* Updated fallback logging implementation in delegate app to fix
sporadic crash
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * uses the simple_add model to run through the AoT flow and the various
debug options for looking at export.
* produces a .pte file for runtime delegation on the ArmBackend for
Ethos-U55 platforms
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * export the list of offset from AoT floq
* appropriately copy inputs and ouputs to/from SRAM
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@robell

Copy link
Copy Markdown
CollaboratorAuthor

#659 replaces this

facebook-github-bot pushed a commit that referenced this pull request Oct 7, 2023
Summary:
Cleaned up ethos-u runtime flow, replaces #595
Added shell of runtime Arm Backend for Ethos-U
./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.
Currently supports .pte files stored in SRAM.
Pull Request resolved: #659
Reviewed By: cccclai
Differential Revision: D50035452
Pulled By: digantdesai
fbshipit-source-id: 7b8a23836c92dfa9235decf4c631654fa8fc396a
@robellrobell closed this Oct 9, 2023
@robellrobell added the partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm label Jul 4, 2024
Gasoonjia pushed a commit that referenced this pull request Jul 30, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.partner: armFor backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@robell@digantdesai@larryliu0820@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Initial framework of an ethos-u runtime backend #2 - #595

Closed
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase
Closed

Initial framework of an ethos-u runtime backend #2#595
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase

Conversation

@robell

@robellrobell commented Oct 3, 2023

Copy link
Copy Markdown
Collaborator

Replaces PR #501

(will close 501 shortly once comments are reviewed/addressed)

Added shell of runtime Arm Backend for Ethos-U

./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.

Currently supports .pte files stored in SRAM.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 - Basic runtime targeting Corstone-300 with U55
- cross compile support with a cmake toolchain (Arm baremetal build)
- support for a few models AoT -> TOSA -> Vela -> U55 hardware
- dependencies on the ethos-u core driver and cmsis (submodules)
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@netlify

netlifyBot commented Oct 3, 2023

Copy link
Copy Markdown

Deploy Preview for resplendent-gnome-14e531 canceled.

NameLink
🔨 Latest commit76a393a
🔍 Latest deploy loghttps://app.netlify.com/sites/resplendent-gnome-14e531/deploys/651faf6cda798d0008a44588

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 3, 2023
Comment threadbackends/arm/runtime/ArmBackendEthosU.cpp Outdated
robelland others added 10 commits October 4, 2023 08:35
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Summary: Sometimes, esp when using the Portable library, Release mode is the only viable option to get a resonable binary size and performance, even to debug stuff.
Differential Revision: D49876324
fbshipit-source-id: 501d96304b8e37452a1a58e289d57cfc62ebbcdd
Summary: This will align better with structure proposed in D49714823
Differential Revision: D49899370
fbshipit-source-id: 86d89c8060a6685f84dc186ea38beba4388894db
Summary: This is needed to generate `portable_ops_lib` with select number of ops for quick testing when we can't afford to link all the ops for size reasons. Arm Baremetal builds is one example.
Differential Revision: D49899554
fbshipit-source-id: 9d35e7bfd1c1975da640e62493fc744898ad6714
Summary: This is an interesting usecase to demonstrate on ARM Baremetal setup where they currently can't lower SoftMax. One of the only few from MV2. It is useful as a test as well while debugging this flow.
Differential Revision: D49899589
fbshipit-source-id: c0307c7452a69eb707429328ba6654b2b660ce23
Differential Revision: https://internalfb.com/D49899371
fbshipit-source-id: 42cf5c8ad445b0405f9c23e3654b6a32fbc61522
Summary: An example script to build and run executor_runner baremetal version on ARM M-class CPUs
```
I executorch:runner.cpp:63] Model PTE file loaded. Size: 960 bytes.
I executorch:runner.cpp:69] Model buffer loaded, has 1 methods
I executorch:runner.cpp:77] Running method forward
I executorch:runner.cpp:94] Setting up planned buffer 0, size 32.
I executorch:runner.cpp:109] Method loaded.
I executorch:runner.cpp:111] Preparing inputs...
I executorch:runner.cpp:113] Input prepared.
I executorch:runner.cpp:115] Starting the model execution...
I executorch:runner.cpp:120] Model executed successfully.
I executorch:runner.cpp:124] 1 outputs:
Output[0][0]: 0.500000
Output[0][1]: 0.500000
Output[0][2]: 0.500000
Output[0][3]: 0.500000
```
Differential Revision: D49900956
fbshipit-source-id: e30571f95abd5311f3ab649fcb1d154b4f5c3310
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * There is a toolchain/linking issue mixing hard and soft float ABI
which is causing the test to fail, but the structure is there and the
delegate is registered.
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Comment thread.gitmodules Outdated
[submodule "backends/arm/third-party/ethos-u-core-driver"]
path = backends/arm/third-party/ethos-u-core-driver
url = https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git
[submodule "backends/arm/third-party/cmsis"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this used for?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are essentially the driver headers for ethos-u we need to link against.

I've also added a build of the ethos-u driver in executorch cmake (ethosu_core_driver target) but I moved to link against the demo app library build of it and can remove the target.

We still need this small submodule for the header/interface - it's fortunately small, but unfortunately it pulls in CMSIS for a few platform defines which is huge - this is really the area we discussed a build script pulling these in. Given ./run has a checkout of the core_platform and core_software, I'll look at moving to those and removing these submodules.

@robellrobellOct 5, 2023

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed most of this, we just have the small ethos-u-core-driver for headers now, and don't build it in tree and cmsis is removed. The driver builds in the driver/app repo and that app links the two together.

as it's only 25 files i suggest we keep the driver as a submodule to keep things simple until there's a more general "selective submodule" approach.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@@ -0,0 +1,90 @@
# Copyright 2023 Arm Limited and/or its affiliates.

@digantdesaidigantdesaiOct 4, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this same as - core_platform/cmake/toolchain/arm-none-eabi-gcc.cmake? But will respect cmdline vars?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd anticipate further changes and cleaning but it was derived from there, yes.

It has a similar override but for m55 our only current supported target. The way the toolchain file is constructed, some of the general ./configure like step in cmake was invoking it without an appropriate value so the default prevents the -mfpu flag which was the default set on an m4 target messing things up.

robell added 11 commits October 4, 2023 20:09
 * Override the default CPU in cmake which was causing a mixture of FPU
and ABI flags to be passed to different compilation stages.
* Updated fallback logging implementation in delegate app to fix
sporadic crash
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * uses the simple_add model to run through the AoT flow and the various
debug options for looking at export.
* produces a .pte file for runtime delegation on the ArmBackend for
Ethos-U55 platforms
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * export the list of offset from AoT floq
* appropriately copy inputs and ouputs to/from SRAM
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@robell

Copy link
Copy Markdown
CollaboratorAuthor

#659 replaces this

facebook-github-bot pushed a commit that referenced this pull request Oct 7, 2023
Summary:
Cleaned up ethos-u runtime flow, replaces #595
Added shell of runtime Arm Backend for Ethos-U
./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.
Currently supports .pte files stored in SRAM.
Pull Request resolved: #659
Reviewed By: cccclai
Differential Revision: D50035452
Pulled By: digantdesai
fbshipit-source-id: 7b8a23836c92dfa9235decf4c631654fa8fc396a
@robellrobell closed this Oct 9, 2023
@robellrobell added the partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm label Jul 4, 2024
Gasoonjia pushed a commit that referenced this pull request Jul 30, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.partner: armFor backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@robell@digantdesai@larryliu0820@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Initial framework of an ethos-u runtime backend #2 - #595

Closed
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase
Closed

Initial framework of an ethos-u runtime backend #2#595
robell wants to merge 25 commits into
pytorch:mainfrom
robell:fresh_rebase

Conversation

@robell

@robellrobell commented Oct 3, 2023

Copy link
Copy Markdown
Collaborator

Replaces PR #501

(will close 501 shortly once comments are reviewed/addressed)

Added shell of runtime Arm Backend for Ethos-U

./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.

Currently supports .pte files stored in SRAM.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 - Basic runtime targeting Corstone-300 with U55
- cross compile support with a cmake toolchain (Arm baremetal build)
- support for a few models AoT -> TOSA -> Vela -> U55 hardware
- dependencies on the ethos-u core driver and cmsis (submodules)
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@netlify

netlifyBot commented Oct 3, 2023

Copy link
Copy Markdown

Deploy Preview for resplendent-gnome-14e531 canceled.

NameLink
🔨 Latest commit76a393a
🔍 Latest deploy loghttps://app.netlify.com/sites/resplendent-gnome-14e531/deploys/651faf6cda798d0008a44588

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 3, 2023
Comment threadbackends/arm/runtime/ArmBackendEthosU.cpp Outdated
robelland others added 10 commits October 4, 2023 08:35
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Summary: Sometimes, esp when using the Portable library, Release mode is the only viable option to get a resonable binary size and performance, even to debug stuff.
Differential Revision: D49876324
fbshipit-source-id: 501d96304b8e37452a1a58e289d57cfc62ebbcdd
Summary: This will align better with structure proposed in D49714823
Differential Revision: D49899370
fbshipit-source-id: 86d89c8060a6685f84dc186ea38beba4388894db
Summary: This is needed to generate `portable_ops_lib` with select number of ops for quick testing when we can't afford to link all the ops for size reasons. Arm Baremetal builds is one example.
Differential Revision: D49899554
fbshipit-source-id: 9d35e7bfd1c1975da640e62493fc744898ad6714
Summary: This is an interesting usecase to demonstrate on ARM Baremetal setup where they currently can't lower SoftMax. One of the only few from MV2. It is useful as a test as well while debugging this flow.
Differential Revision: D49899589
fbshipit-source-id: c0307c7452a69eb707429328ba6654b2b660ce23
Differential Revision: https://internalfb.com/D49899371
fbshipit-source-id: 42cf5c8ad445b0405f9c23e3654b6a32fbc61522
Summary: An example script to build and run executor_runner baremetal version on ARM M-class CPUs
```
I executorch:runner.cpp:63] Model PTE file loaded. Size: 960 bytes.
I executorch:runner.cpp:69] Model buffer loaded, has 1 methods
I executorch:runner.cpp:77] Running method forward
I executorch:runner.cpp:94] Setting up planned buffer 0, size 32.
I executorch:runner.cpp:109] Method loaded.
I executorch:runner.cpp:111] Preparing inputs...
I executorch:runner.cpp:113] Input prepared.
I executorch:runner.cpp:115] Starting the model execution...
I executorch:runner.cpp:120] Model executed successfully.
I executorch:runner.cpp:124] 1 outputs:
Output[0][0]: 0.500000
Output[0][1]: 0.500000
Output[0][2]: 0.500000
Output[0][3]: 0.500000
```
Differential Revision: D49900956
fbshipit-source-id: e30571f95abd5311f3ab649fcb1d154b4f5c3310
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * There is a toolchain/linking issue mixing hard and soft float ABI
which is causing the test to fail, but the structure is there and the
delegate is registered.
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Comment thread.gitmodules Outdated
[submodule "backends/arm/third-party/ethos-u-core-driver"]
path = backends/arm/third-party/ethos-u-core-driver
url = https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git
[submodule "backends/arm/third-party/cmsis"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this used for?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are essentially the driver headers for ethos-u we need to link against.

I've also added a build of the ethos-u driver in executorch cmake (ethosu_core_driver target) but I moved to link against the demo app library build of it and can remove the target.

We still need this small submodule for the header/interface - it's fortunately small, but unfortunately it pulls in CMSIS for a few platform defines which is huge - this is really the area we discussed a build script pulling these in. Given ./run has a checkout of the core_platform and core_software, I'll look at moving to those and removing these submodules.

@robellrobellOct 5, 2023

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed most of this, we just have the small ethos-u-core-driver for headers now, and don't build it in tree and cmsis is removed. The driver builds in the driver/app repo and that app links the two together.

as it's only 25 files i suggest we keep the driver as a submodule to keep things simple until there's a more general "selective submodule" approach.

Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@@ -0,0 +1,90 @@
# Copyright 2023 Arm Limited and/or its affiliates.

@digantdesaidigantdesaiOct 4, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this same as - core_platform/cmake/toolchain/arm-none-eabi-gcc.cmake? But will respect cmdline vars?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd anticipate further changes and cleaning but it was derived from there, yes.

It has a similar override but for m55 our only current supported target. The way the toolchain file is constructed, some of the general ./configure like step in cmake was invoking it without an appropriate value so the default prevents the -mfpu flag which was the default set on an m4 target messing things up.

robell added 11 commits October 4, 2023 20:09
 * Override the default CPU in cmake which was causing a mixture of FPU
and ABI flags to be passed to different compilation stages.
* Updated fallback logging implementation in delegate app to fix
sporadic crash
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * uses the simple_add model to run through the AoT flow and the various
debug options for looking at export.
* produces a .pte file for runtime delegation on the ArmBackend for
Ethos-U55 platforms
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
 * export the list of offset from AoT floq
* appropriately copy inputs and ouputs to/from SRAM
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
Signed-off-by: Rob Elliott <robert.elliott@arm.com>
@robell

Copy link
Copy Markdown
CollaboratorAuthor

#659 replaces this

facebook-github-bot pushed a commit that referenced this pull request Oct 7, 2023
Summary:
Cleaned up ethos-u runtime flow, replaces #595
Added shell of runtime Arm Backend for Ethos-U
./backends/arm/cmake/build.sh will pull the appropriate compiler and build the ethos-u driver and delegate and produce the libraries needed to link an application in, which can run a delegated .pte with the revised vela_bin_stream form contained in these patches.
Currently supports .pte files stored in SRAM.
Pull Request resolved: #659
Reviewed By: cccclai
Differential Revision: D50035452
Pulled By: digantdesai
fbshipit-source-id: 7b8a23836c92dfa9235decf4c631654fa8fc396a
@robellrobell closed this Oct 9, 2023
@robellrobell added the partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm label Jul 4, 2024
Gasoonjia pushed a commit that referenced this pull request Jul 30, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.partner: armFor backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@robell@digantdesai@larryliu0820@facebook-github-bot