-
Notifications
You must be signed in to change notification settings - Fork 80
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
ECC-1602: CCSDS performance optimisation #121
Conversation
Private downstream CI failed. |
Private downstream CI succeeded. |
// ECC-1602: Performance improvement | ||
ccsds_flags &= ~AEC_DATA_MSB; // enable little-endian | ||
ccsds_flags &= ~AEC_DATA_3BYTE; // disable support for 3-bytes per value | ||
unsigned short is_little_endian = 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The include file /usr/local/apps/aec/1.0.6/include/libaec.h has this comment associated with AEC_DATA_MSB:
Samples are stored with their most significant bit first. This has nothing to do with the endianness of the host. Default is LSB.
So why do we check for endianness?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know why the flag is called like that, but the libaec documentation says the following: "AEC_DATA_MSB: input data is stored most significant byte first i.e. big endian. Default is little endian on all architectures."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I forgot to mention that the default value for AEC_DATA_MSB=true is stored in the definition files. Since we load this flag from a definition file, we must reset it to 0 to use libaec on a little-endian machine like ATOS HPC efficiently. In my opinion, storing machine-dependent flags like AEC_DATA_MSB and AEC_DATA_3BYTE in the definition files is unnecessary.
Private downstream CI succeeded. |
Private downstream CI succeeded. |
I think we are ready to pass this branch to the IFS team for further testing |
Private downstream CI failed. |
Private downstream CI failed. |
Private downstream CI failed. |
Private downstream CI failed. |
Private downstream CI failed. |
Private downstream CI failed. |
Eugen Betke seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
Private downstream CI failed. |
I have merged this branch to develop |
With this optimisation, a significant increase in performance can be achieved, particularly for 24-bit data.