我想手動管理我的代碼是對MIC的SIMD操作,並寫出下面的內在函數通過內部函數或指令
_k_mask = _mm512_int2mask(0x7ff); // 0000 0111 1111 1111
_tempux2_512 = _mm512_mask_loadunpacklo_ps(_tempux2_512,_k_mask, &u_x[POSITION_INDEX_X(k,j,i-5)]);
_tempux2_512 = _mm512_mask_loadunpackhi_ps(_tempux2_512,_k_mask, &u_x[POSITION_INDEX_X(k,j,i-5)]+16);
,編譯器ICPC給出了這些錯誤消息,手動控制英特爾MIC SIMD操作。
test.cpp:574: undefined reference to `_mm512_mask_extloadunpacklo_ps'
test.cpp:575: undefined reference to `_mm512_mask_extloadunpackhi_ps'
一切都會好的編譯如果我使用_mm512_mask_load_ps,但我的內存不能爲64字節對齊,以便使用_mm512_mask_load_ps將導致運行錯誤。
然後我試着寫了內聯彙編塊手動像這樣
MOV rax,0x7ff
KMOV k1,rax
VMOVAPS zmm1 {k1}, [data_512_1]
VMOVAPS zmm2 {k1}, [data_512_2]
VMULPS zmm3 {k1}, zmm2 zmm1
VMOVAPS [data_512_3] {k1}, zmm3
,編譯器ICPC顯示錯誤再次
test_simd.cpp(30): (col. 10) error: Unknown opcode KMOV in asm instruction .
test_simd.cpp(33): (col. 10) error: Syntax error ZMM1 in asm instruction vmulps.
我是彙編語言的初學者,這將是非常感謝如果有人能告訴我爲什麼icpc沒有找到參考和如何解決它,或者可以向我推薦一些材料。 (我已閱讀英特爾®至強融核™協處理器指令集體系結構參考手冊,但仍不知如何編寫。)
非常感謝。
請確保您使用'-mmic'選項編譯 –