我有一個float8向量類型,我使用矢量分量尋址乘以矢量分量,如下所示(注意下面的變量v實際上不是一個常量);有效乘以OpenCL矢量組件?
float8 v = (float8) (1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f);
float result = v.s0 * v.s1 * v.s2 * v.s3 * v.s4 * v.s5 * v.s6 * v.s7;
但是,這可以防止我的內核在使用英特爾代碼構建器編譯時被矢量化。
Device build started
Device build done
Kernel <test> was not vectorized
要通過這個來,我開始創建載體的拷貝,掩蔽所需要的組件,並將它們都試圖調用點功能,然而,這一切似乎都相當低效和曲折前乘在一起。
因此,我的問題是,我怎樣才能將我的矢量的組件在一個高效的矢量化莊園中相乘?
如果你只做一個8比1的產品,那麼很難矢量化。然而,如果你想要128比1或更大,那麼將矢量劃分爲16個矢量-8和16矢量-8產品是有意義的,然後將8輸入爲1. – user3528438
對不起,我不確定你的意思是8如果這就是你的意思,我想乘以float8矢量的每個組件來獲得一個浮點數。 – Vivilar