Maneage - Tasks: task #16035, Optional activation of...
You are not allowed to post comments on this tracker with your current authentication level.
task #16035: Optional activation of CPU-specific optimizations
Submitter: | Mohammad Akhlaghi <makhlaghi> | ||
Submitted: | Mon 23 Aug 2021 08:13:21 PM UTC | ||
Should Start On: | Sun 22 Aug 2021 11:00:00 PM UTC | Should be Finished on: | Sun 22 Aug 2021 11:00:00 PM UTC |
Category: | Software | Priority: | 5 - Normal |
Status: | Postponed | Privacy: | Public |
Percent Complete: | 0% | Assigned to: | None |
Open/Closed: | Open | Effort: | 0.00 |
No files currently attached
Depends on the following items: None found
Items that depend on this one: None found
Carbon-Copy List
There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.
No changes have been made to this item
Some programs have CPU-specific optimizations. Like '--enable-sse2' in CFITSIO that only works on Intel's x86-64 CPU architectures (see bug #61072).
Such optimizations may affect exact reproducibility of the final result (the simplest would be within the range of floating point errors, and it can get much more serious).
To avoid this, one solution is to add an option to './project' (maybe called '--cpu-optimizations') to let the user optionally activate CPU-architecture specific optimizations. When the user gives this option, a check can be added in 'configure.sh' for detecting the running CPU architecture, and writing the result in a fixed variable (this variable would be empty if that option to ./project wasn't given).
Afterwards, any software with a known CPU-architecture-specific configure option should only activate those options when the user wants, and for the certain CPU architectures that the program has optimizations before.
Of course, we should also print a BIG warning at the start when the user gives this option, to warn them that your result may not be reproducible/portable on other CPU architectures. But it won't be active by default, so for a user who doesn't know about it, it won't cause reproducibility problems.
This also has the good side effect that with a simple search for that variable in the software building Makefiles, we can find all software that have CPU-specific optimizations.