猿代碼SIMD并行計(jì)算實(shí)戰(zhàn)
2023-08-02 19:38 作者:bili_34604920956 | 我要投稿
SIMD這個(gè)東西我到現(xiàn)在也不是很會(huì)用,包括測(cè)試一些例子可能用了SIMD更慢了,而且我的CPU比較老了,只支持AVX2.0(AVX-512好像現(xiàn)在的i9和i7 9800x都已經(jīng)支持了,不過(guò)我這個(gè)還在用四代i7的也買不起這玩意)。因此對(duì)于雙精度浮點(diǎn)型運(yùn)算,只能一次打包256bit的數(shù)據(jù),即四個(gè)雙精度浮點(diǎn)數(shù)。對(duì)了這里需要注意的一點(diǎn)是,在使用gcc編譯帶有immintrin.h頭文件函數(shù)的代碼時(shí),根據(jù)你使用的函數(shù)類別,需要添加相應(yīng)的編譯選項(xiàng)(老的SSE是默認(rèn)支持的通常不需要額外添加選項(xiàng)),如AVX2.0就需要使用-mavx2、FMA需要使用-mfma等等,否則編譯會(huì)報(bào)錯(cuò)。如果你不知道用了什么指令集,但是你確定你的電腦支持這個(gè)操作,那么直接-march=native就可以了。其實(shí)如果你使用了AVX-512F指令集,那么-mavx512f也可以成功編譯,不過(guò)如果你的CPU不支持AVX-512F那么你運(yùn)行編譯出來(lái)的文件的時(shí)候就會(huì)提示非法指令?
?
標(biāo)簽: