Note that there are some explanatory texts on larger screens.

plurals
  1. POAutoconf: default out-of-the-box optimizations vs. cross-compilation
    primarykey
    data
    text
    <p>I am the lead developer of a software package for which performance is of utmost importance. The performance of said software can drastically improve when certain facilities are available, such as:</p> <ul> <li>software libraries (e.g. BLAS, LAPACK, ...)</li> <li>support for SSE, MMX, ...</li> </ul> <p>I am in a situation where I find it difficult to decide on the most sensible approach. The way I see things, these are my options:</p> <ol> <li>Ensuring portability and correct cross-compilation: by making use of available facilities optional and force users to explicitly enable them using -enable-X flags etc. This is necessary for portability because facilities available on the build platform may not be present on the target platform. PRO: portability and cross-compilation working properly. CON: novice users will forget optimizations and consequently suffer from performance loss.</li> <li>Make life easy for the novice user: automatically check for availability of libraries and functions like SSE during the configure-phase and subsequently use all available facilities. PRO: user gets an optimized version of the software without fidgeting. CON: portability not guaranteed (ex. cross-compilation is broken when the host has SSE and the target does not. I don't expect my users to cross-compile, but death and taxes are the only certainty in life.).</li> </ol> <p>I am currently leaning towards option 2 since this is what I expect most users to appreciate. Additionally, it may make more sense to cater to the novice in default behaviour.I am aware that this constitutes a cardinal sin in terms of portability. What do you guys think is the most sensible approach? </p> <p>Are there any solutions to my predicament which I am unaware of?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload