Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve performance with ARM SIMD on Cortex-M4 and more powerfull cores #82

Open
qywx opened this issue Apr 18, 2017 · 4 comments
Open

Comments

@qywx
Copy link

qywx commented Apr 18, 2017

Let's discuss how can we improve the performance of this library. I expect to use arm_math.h rather than ASM.

@gbmhunter
Copy link
Owner

Hi @SledgeH . Thanks for raising an issue! Can you please elaborate more on what you are after?

I had a look into what arm_math.h is, at it seems it is a bunch of signal processing functions for ARM Cortex M* devices?

https://github.com/ARM-software/CMSIS/blob/master/CMSIS/Include/arm_math.h

@qywx
Copy link
Author

qywx commented Apr 19, 2017

Yes it is. The aim (one of main) of arm_math.h is to wrap SIMD ability. Here is CMSIS documentation of the CMSIS library.
arm_add_q31.c shows ARM SIMD implementation. This is a simple function, but there are others more complicated.
As far as I understood ARM Cortex M core has 4 SIMD conveyors. So we will achieve ~4x acceleration on array processing.

This is actual for ARM cores with SIMD ability CM3 and CM4 and may be CM7.

@gbmhunter
Copy link
Owner

@SledgeH , o.k., so it allows you to do parallel processing, as long as the instruction is the same.

How do you see this as being a benefit to this library? What is a real-world example of what you want to call in code, and what to expect in return?

@qywx
Copy link
Author

qywx commented May 4, 2017

Now I think it is enough to add C++ bindings for arm_math and pass Q classes to the math functions, which will convert ninja Q to arm Q.
I will create pull request ones it'll be done. Or create another one header lib on top of yours and ARM's.
Thank you for dialog.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants