View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0000217||Cinelerra-GG||[All Projects] Feature||public||2019-05-14 08:38||2019-05-14 12:01|
|Priority||normal||Severity||minor||Reproducibility||have not tried|
|Target Version||Fixed in Version|
|Summary||0000217: Support for autovectorization where it counts.|
|Description||I incorrectly reported autovectorization worked, but those were just effects from -march=native GCC switch.|
Experimenting in this area requires quite deep understanding how Cinelerra's plugins work, how modern CPU works, and how GCC can be guided into auto-vectorization mode (without hurting normal builds).
|Steps To Reproduce||Use ""-O3 -ffast-math -ftree-vectorizer-verbose=6 -mavx -msahf -mfma -fopt-info-vec-missed=missed_vec.log -march=native -mtune=native -fPIC" for x86-64 bit CPU with avx. Analyze logs, try to make it works .... :(|
For me result was
color3way.C:264:27: note: not vectorized: multiple nested loops.
color3way.C:264:27: note: bad loop form.
color3way.C:269:5: note: not vectorized: control flow in loop.
color3way.C:269:5: note: bad loop form.
color3way.C:272:5: note: not vectorized: control flow in loop.
color3way.C:272:5: note: bad loop form.
color3way.C:275:5: note: not vectorized: control flow in loop.
color3way.C:275:5: note: bad loop form.
color3way.C:278:5: note: not vectorized: control flow in loop.
color3way.C:278:5: note: bad loop form.
color3way.C:281:5: note: not vectorized: control flow in loop.
color3way.C:281:5: note: bad loop form.
color3way.C:284:5: note: not vectorized: control flow in loop.
color3way.C:284:5: note: bad loop form.
Reported and discussed in russian at https://www.linux.org.ru/forum/development/14799788?lastmod=1550306032144#comment-14811800
|Additional Information||I saw response and worry from GG about autovectorization making code vendor-locked (Intel vs AMD vs non-x86)|
Still, may be someone will want to experiment....
|Tags||No tags attached.|