簡體   English   中英

使用gcc進行自動矢量化?

[英]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)。

http://gcc.gnu.org/projects/tree-ssa/vectorization.html

使用所需選項-O3 -msse2

有關更多選項,請閱讀上面的文檔。

對於浮動點減少的自動向量化,例如2)你需要啟用-funsafe-math-optimizations

在類似i386的目標上你還需要添加-mfpmath = sse

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM