Skip to content

Reduce CPU usage on ARM (AArch64 & ARMv7) #680

Description

@rikkus

PR against Core
PR against Plugin

These optimisations provide:

AArch64

>= 2x speedup vs a2_fast

Tested and benchmarked on

  • Apple Silicon M2 (Macbook Air)
  • Cortex-A76 (Raspberry Pi 500)

ARMv7

>= 1.3x speedup vs a2_fast

Tested and benchmarked on

  • ARM Cortex-A17 (RK3288, ASUS Tinker Board, same SoC as HeadRush Core & Prime)

Bit-identical to a2_fast as tested - 64 and 32 frame blocks

A separate repo used for working on these optimisations runs some build & conformance checks.


Tested against Plugin PR #679 (f1a8c79) with Core at 552c5ab (head of sdatkinson/NeuralAmpModelerCore#313), on an Apple M2, macOS 27 beta, Xcode 27 beta. Used a local MacOS 12.0 override to make Xcode build - override not added to any PR.

  • [✅] The standalone plugin builds. (Universal arm64 + x86_64.)
  • [✅] The plugin runs. (Standalone app, and the AU in Logic Pro.)
    • [✅] The plugin makes sound.
    • [✅] You can load a new-style (file) model. (A2 captures, both submodels via the Slim knob.)
    • [✅] You can load an old-style (directory) model. I chose a directory in the app - is that what this means? It wouldn't let me choose a directory in the plugin.
    • [✅] You can load a supported IR.
    • [✅] The EQ section works.
  • [✅] The VST3 plugin builds and can be loaded by the VST3 SDK. N.B. I loaded it in Logic Pro, not with the validator.
    • [✅] The plugin passes all unit tests implemented by the VST3PluginTestHost's unit testing tool. (Ran the same suite with the SDK's command-line validator -e: 537 passed, 0 failed.)
  • [✅] The AU plugin builds. (Also passes auval -v aufx 1YEo SDAa in full, including its render tests.)

Not tested: Windows (no machine available) and iOS (checked at the project-file level only).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions