2015-06-22 131 views
1

使用intel編譯器,如果用戶使用#pragma ivdep確認沒有依賴關係,則循環仍然可以被矢量化。GCC向量化Pragma

我發現了一個在GCC #pragma GCC ivdep,卻得到了一個錯誤如下:

warning: ignoring #pragma GCC ivdep [-Wunknown-pragmas] #pragma GCC ivdep

回答

4

「的#pragma ivdep」 完全支持從GCC4.9開始。

您使用哪個GCC版本?至少在2013年之前,#pragma ivdep在海灣合作委員會中尚未得到官方支持。

我不確定2013年到2014年間其他GCC4.x子版本的官方支持情況,儘管我已經看到有一些部分補丁版本4.9之前的ivdep支持。

在ICC(你也在問題標籤中提到過)#pragma ivdep在很久以前(至少最近5年)得到支持。

對於其他編譯器:Microsoft支持從MSVS 2013開始的「#pragma loop ivdep」。從20世紀90年代開始,Cray和其他一些「老派」編譯器可能會支持它,但我不確定。

最後,如果您尋找跨平臺和標準化解決方案,請查看OpenMP4.x #pragma omp simd。雖然它是不同的sematic,也只有GCC4.9 + ICC/IFORT的支持,它可能在未來更有利,因爲(與ivdep相反) - pragma omp simd是真正的標準,所以所有編譯器廠商都會或多或少必須在未來支持它,並且必須支持相同的語法。