I maintain an open source program that uses Eigen.  The vast majority of my
users do not compile the program, instead downloading a pre-compiled binary
from our website.  About 80% are on Windows, 10% on Mac and 10% on Linux.
I only provide X86 builds, 32 and 64-bit on Windows, 64-bit only on Mac and
Linux.  We may eliminate the 32-bit Windows build soon.

Historically, I have compiled with no special flags enabling vectorization
options for the CPU.  I would like to pursue this as I expect it will
unlock some nice performance gains.  However, I'd like to keep things
simple and compatible for users.

What happens when someone runs a program compiled with vectorization when
their CPU does not support it?  If it fails, how graceful is the failure?

Is there a standard approach to identify the capabilities of a given
machine?  I could add that to my program and survey users before making a
change...  Would such code still run on a machine that was in the process
of failing due to not having support for the built in vectorization?  I.e.
if it is crashing, can we send a message as to why we're going down?

Is there a graceful way to support multiple options?

Any tips from other broad use applications is greatly appreciated.

Rob

Reply via email to