2
在這裏,我很簡單的問題。對於ICC,我知道可以使用#pragma SIMD強制編譯器選擇不進行矢量化的循環向量化。海灣合作委員會有類似的情況嗎?或者,是否有計劃在未來的版本中添加此功能?強制使用GCC自動矢量化
相關,石墨強制矢量化?
感謝您考慮我的請求 法比奧
在這裏,我很簡單的問題。對於ICC,我知道可以使用#pragma SIMD強制編譯器選擇不進行矢量化的循環向量化。海灣合作委員會有類似的情況嗎?或者,是否有計劃在未來的版本中添加此功能?強制使用GCC自動矢量化
相關,石墨強制矢量化?
感謝您考慮我的請求 法比奧
只要GCC被允許使用SSE/SSE2 /等指令,編譯器將在一般農產品的向量指令,當它意識到它是「值得的」。像編譯器中的大多數事情一樣,這需要程序員的一些運氣/計劃/關注,以避免編譯器認爲「這可能不安全」或「這太複雜了,我無法弄清楚發生了什麼」。但通常情況下,如果你使用合理的現代版本的gcc(4.x版本都應該這樣做),它是成功的。
您可以通過將-msse
或-msse2
(等等用於以後的SSE擴展)使編譯器使用SSE或SSE2指令。 -msse2
在x86-64中是默認的。
但是,我不知道你可以強制這種方式。編譯器會這樣做,因爲它很高興它是一個很好的解決方案,或者它不會。
對不起,無法回答關於Graphite。
是的,我知道你的意思。我只是想強制一些循環進行矢量化,因爲如果我用ICC做到這一點,我會獲得一些性能提升。所以,我很好奇看到GCC的反應。但我需要發現它是否可行,以及如何強制實施矢量化。不管怎麼說,還是要謝謝你。 – user2047635
@ user2047635如果您認爲自己可以比編譯器做得更好,那麼您可以使用intrinsics自己手動對其進行矢量化。 – Mysticial
或者更好,但是,一路寫入彙編程序 - 這樣,您可以100%控制哪些指令以何種順序進入,哪些寄存器用於何處等等。 –