0
我目前使用icc(版本13.1.0.146)來編譯在英特爾至強融核協處理器上以純模式運行的C程序。如何使英特爾C編譯器(icc)矢量化基本塊?
考慮以下兩個代碼片段:
// fragment 1
array[pos] += 1;
array[pos + 1] += 1;
array[pos + 2] += 1;
array[pos + 3] += 1;
// fragment 2
for (int i = 0; i < 4; ++i)
array[i] += 1;
不幸的是,只在循環自動量化。但是,如果我爲x86平臺編譯,icc也會將「展開」版本向量化。
當編譯Xeon Phi時,是否有辦法告訴icc向量化基本塊?
任何幫助表示讚賞。提前致謝!
我完全理解,如果編譯器通常決定不將矢量化上面描述的代碼由於工作量低。但是,我不明白爲什麼循環(與「展開」版本完全相同!)是矢量化的,而展開版本不是。但是,沒關係,該項目現在已經完成;) – pkreutzer