[英]Getting auto-vectorization with gcc?
在評估負對數可能性的上下文中,我必須執行一系列可以從向量化中受益的操作
0)for(i = 1 ... n){a [i] = 0; } //但我想
std :: fill(a.begin(),a.end(),0)已經是最優的
1)for(i = 1 ... n){a [i] + = b * c [i]; }
2)sum = 0; for(i = 1 .. n){sum + = a [i] * log(b [i] / c); }
你知道是否有希望讓gcc 434進行自動矢量化,我應該如何編寫循環來幫助他(例如使用索引與使用迭代器,我應該在更簡單的循環中分解(2),...)到目前為止我正在使用雙打,必須檢查我是否可以至少移動到浮點數(1)。
對於浮動點減少的自動向量化,例如2)你需要啟用-funsafe-math-optimizations
在類似i386的目標上你還需要添加-mfpmath = sse
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.