Why doesn't more software come with more binary optimized version?

GWestphal

Golden Member
Jul 22, 2009
1,120
0
76
It's relatively easy to optimize for AVX2 vs SSE4 capable processors and some of those instructions can net you significant performance gains. When I download Adobe Photoshop, shouldn't I have the option to have a Haswell compliant binary or a Pentium II compliant binary? Or do they do this transparently?
 

NTMBK

Lifer
Nov 14, 2011
10,525
6,051
136
No, it's not that easy to optimize for AVX2 vs SSE4. You can compile for AVX2 and hope for better compiler optimizations, but it's not the same as hand optimized code.
 

Vesku

Diamond Member
Aug 25, 2005
3,743
28
86
QA costs for each binary, basically. To most companies targeting individual consumers it wouldn't be worth the expense.
 

Rakehellion

Lifer
Jan 15, 2013
12,181
35
91
Having multiple binaries is just messy. That stuff is done by conditionals in software.

In short, if it's optimized for SSE4, you would have no way of knowing, just as it should be.
 

BrightCandle

Diamond Member
Mar 15, 2007
4,762
0
76
Just setting the flag on the compiler is unlikely to net anything useful. Auto vectorisation can work and produce faster code but if it wasn't designed to utilise AVX then the end result is unlikely to be any faster.

In practice what it takes is the developer completely changing the data structure so that its possible to work on vectors of data instead of individual values. This is not a small change, its often dramatic and incredibly time consuming to make such a change. More to the point it often makes the software much harder to read, having functions that work on single pixels rather than vectors of multiple arbitary pixels is significantly simpler to understand. More to the point the algorithms themselves are just easier expressed without each needing to deal with vectors which is likely a cross cutting concern for all the algorithms working on an image.

So in the end the result is that even if a company does spend the time qualifying a build of the software with the flag on it will likely mean twice as much testing to have both out there and offer little to no performance improvement. AVX/SSE and all the new instructions are not as simple as switching a compiler switch on and it goes faster, its much much more complicated than that and often dramatically increases the complexity of the code.
 

Idontcare

Elite Member
Oct 10, 1999
21,110
64
91
It's relatively easy to optimize for AVX2 vs SSE4 capable processors and some of those instructions can net you significant performance gains. When I download Adobe Photoshop, shouldn't I have the option to have a Haswell compliant binary or a Pentium II compliant binary? Or do they do this transparently?

It is a good question, and the fact that such a question exists is proof positive that there is an opportunity on the table here for smaller, nimbler, hungrier companies to step in and take advantage of the opportunity.

Anytime a big company can identify an area of opportunity but elect to not pursue it for the sake of accounting arguments is an opportunity for yet another startup company to rise and eat the lunch of the bigger company.

Every large company that exists today got started by eating the lunch of the, then, industry stalwarts who were too large and lethargic to care to maximize every identified opportunity in the market.

This OP's question, in my mind, represents one such specific opportunity that is being left on the table.

Should you be so lucky as to identify a start-up business that intends to make a name for itself by taking advantage of this opportunity, lob every investment dollar you can muster into becoming an early investor in that start-up because they are going to be the next Microsoft, Google, Adobe, etc. (and please remember to drop me a pm as well so I can partake!)